Многие знают, что DLE это отросток от CuteNews, имеющий бесплатную лицензию GPL, которая запрещает продажу. Получается, что DLE тоже с лицензией GPL, а какого хрена они продают, да ещё и цены ломят, только они знают.

Так давайте сделаем бесплатную DLE сами.

- Качаем движок, можно даже демку, с официального сайта
- Открываем файл init.php (../engine/inc/include/init.php) — файл закодирован ByteRun Protector for PHP
- Теперь его нужно раскодировать. Для этого можно воспользоваться сайтом UnPHP - The Online PHP Decoder
- Раскодированный код вставляем в init.php и сохраняем.

Теперь будем удалять всякие ограничения и подобную хрень:
1. Находим и удаляем версию инициализации DLE

Код:
define('DINITVERSION', "1130");
define('VERSIONID', "10.3");

2. Удаляем функцию отправки активации (send_activation)

Код:
function send_activation($query) {
    $data = http_get_contents("http://dle-news.ru/extras/activate2009.php?" . $query);
    if ($data !== false) {
        if (stristr($data, "antw:activated")) return "1";
        if (stristr($data, "antw:denied")) return "0";
    }
    return "-1";
}

3. Удаляем функцию получения хеша ключа для нашего домена (get_domen_hash)

Код:
function get_domen_hash() {
    $domen_md5 = explode('.', $_SERVER['HTTP_HOST']);
    $count_key = count($domen_md5) - 1;
    unset($domen_md5[$count_key]);
    if (end($domen_md5) == "com" or end($domen_md5) == "net") $count_key--;
    $domen_md5 = $domen_md5[$count_key - 1];
    $domen_md5 = md5(md5($domen_md5 . "780918"));
    return $domen_md5;
}

4. Удаляем функцию активации DLE (dle_activation)

Код:
function dle_activation($key, $domen_md5, $config, $offline = false) {

include (ROOT_DIR . '/language/' . $config['langs'] . '/adminpanel.lng');
$config['charset'] = ($lang['charset'] != '') ? $lang['charset'] : $config['charset'];

$domain = urlencode( strip_tags( $_SERVER['HTTP_HOST'] ) );
$key = trim( strip_tags( $key ) );
@header( "Content-type: text/html; charset=" . $config['charset'] );

if ( $offline ) {

  if( $key == md5( $domen_md5 . DINITVERSION ) ) {
   
   $buffer = "1";
  
  } else {
   
   $buffer = "-2";
  
  }

} else {

  if( strlen( $key ) == 32 ) {

   $buffer = "-3";

  } else {

   $buffer = send_activation( "domain={$domain}&key={$key}&site_key={$domen_md5}&c_id=" . VERSIONID );

  }
}

switch ($buffer) {

  case "-3" :
   $buffer = $lang['trial_act6']." ".$lang['key_format']."<b>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</b>";
   break;
  
  case "-2" :
   $buffer = $lang['trial_act5'];
   break;
  
  case "-1" :
   $buffer = $lang['trial_act1'] . $lang['get_offline_key'] . " <a href="http://dle-news.ru/index.php?do=offlinekey&domain={$domain}&key={$key}&site_key={$domen_md5}&c_id=" . VERSIONID . "" target="_blank">" . $lang['get_key'] . "</a> " . $lang['key_activation'];
   $buffer .= "<br /><br /><b>$lang[site_code]</b><span style="padding-left:7px;"><input class="edit" type="text" size="45" name="sitecode" id="sitecode"> <input class="edit" type="button" onclick="dle_activation( 'code' ); return false;" value="$lang[trial_act]"></span><div id="result_info" style="color:red;"></div>";
   break;
  
  case "0" :
   $buffer = $lang['trial_act2'];
   break;
  
  case "1" :
   $config['key'] = md5( $domen_md5 . DINITVERSION );
   
   $handler = fopen( ENGINE_DIR . '/data/config.php', "w" );
   fwrite( $handler, "<?PHP nn//System Configurationsnn$config = array (nn" );
   foreach ( $config as $name => $value ) {
    fwrite( $handler, "'{$name}' => "{$value}",nn" );
   }
   fwrite( $handler, ");nn?>" );
   fclose( $handler );
   
   $buffer = $lang['trial_act3'];
   break;
  
  default :
   $buffer = $lang['trial_act4'] . $lang['get_offline_key'] . " <a href="http://dle-news.ru/index.php?do=offlinekey&domain={$domain}&key={$key}&site_key={$domen_md5}&c_id=" . VERSIONID . "" >" . $lang['get_key'] . "</a> " . $lang['key_activation'];
}

echo $buffer;
die();
}

5. Удаляем переменные проверки ключа для лицензии и домена

Код:
$lic_tr = true;
$auto_detect_config = false;
$domen_md5 = md5(get_domen_hash() . DINITVERSION);
if ($domen_md5 == $config['key']) $lic_tr = false;

6. Удаляем еще одну проверку активации

Код:
if ($_REQUEST['activation'] == "yes" AND $lic_tr) {
    if ($member_id['user_group'] != 1) die();
    if ($_REQUEST['dle_key']) dle_activation($_REQUEST['dle_key'], get_domen_hash(), $config);
    else dle_activation($_REQUEST['site_code'], get_domen_hash(), $config, true);
    exit();
}

7. Удаляем ограничение в 100 новостей и 200 комментариев

Код:
if (($mod != "editnews" AND $mod != "main" AND $mod != "") AND $lic_tr) {
    $row = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_post");
    $stats_news = $row['count'];
    $row = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_comments");
    $count_comments = $row['count'];
    if ($stats_news > 100) msg("info", "error", $lang['trial_limit'] . '<br /><br />' . $activation_field);
    if ($count_comments > 200) msg("info", "error", $lang['trial_limit'] . '<br /><br />' . $activation_field);
}

Теперь у нас нормальный файл init.php.

Ещё можно отключить проверку обновлений. Удаляем всё с файла updates.php.

Или можно вставить что-то типо:

Код:
<?php
echo <<<HTML
<div class="ui-state-error ui-corner-all" style="padding:10px;"><b>Внимание!</b>
<br />Проверка обновлений отключена.
</div>
HTML;
?>

Вот и всё. Теперь у нас бесплатный движок DLE :yep: Конечно, улучшатели бесплатного движка CuteNews, могут писать письма с угрозами, но если у Вас абузоустойчивый хостинг, то насрать. :tomato: Хотя, для серьезных сайтов, советую другие движки.