• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела wpt лично.

Продления демо режима

liberali3

Постоялец
Регистрация
26 Апр 2015
Сообщения
71
Реакции
18
Здравствуйте. Подскажите, пожалуйста если сейчас рабочий способ, чтобы продлить демо режим модуля?
 
Надо ставить сразу продленный модуль. Либо удалять текущий, нулить, и ставить заново. У некоторых разработчиков могут потеряться все настройки модуля
 
сохраняем код под хайдом в файл prodmod.php в корне сайта, дату можно изменить в $d ='23062035', выполняем, модули триальные продлены до 2035г.


Можно поискать всякие вставочки проверок через SSH:
Код:
grep -rPl --include="*.php" '\/\*(?!patch)[A-Za-z0-9+\/=]{1,64}\*\/\$GLOBALS' /home/bitrix/www/bitrix/

У меня находит:

1) Файл /home/bitrix/www/bitrix/modules/main/classes/general/main.php ищем строку =*/$GLOBALS тут три вхождения, первое проврка неадминский сессий у которых нет даты входа и разлогин их - нам не мешает, а вот в последующих двух закодирована проверка на максимальное кол-во пользователей, можно удалять строки полностью.


2) Файл /home/bitrix/www/bitrix/modules/main/lib/engine/response/redirect.php ищем строку =*/$GLOBALS тут закодирована проверка н максимальное кол-во пользователей, можно удалить строку полностью, если что код расшифровал он такой:
Код:
use \Bitrix\Main\License;

if (mt_rand(1, 20) == 7) {
    if (isset($GLOBALS['USER']) && is_object($GLOBALS['USER']) && call_user_func(array($GLOBALS['USER'], 'IsAuthorized')) && !call_user_func(array($GLOBALS['USER'], 'IsAdmin'))) {
        $maxUsers = 15;
        $option = \COption::GetOptionString('main', '~PARAM_MAX_USERS');

        if (!empty($option) && strpos($option, '.') !== false) {
            list($a, $b) = explode('.', $option);
            $c = pack('H*', $a);
            $d = 'bitrix' . md5(constant('LICENSE_KEY'));
            $e = hash_hmac('sha256', $b, $d, true);

            if (strcmp($e, $c) === 0) {
                $maxUsers = $b;
            }
        }

        if ($maxUsers != 0) {
            if (method_exists(\Bitrix\Main\License::class, 'getActiveUsersCount')) {
                $activeUsersCount = (new \Bitrix\Main\License())->getActiveUsersCount();
            } else {
                $activeUsersCount = 0;
                $dbResult = $GLOBALS['DB']->Query(
                    "SELECT COUNT(U.ID) as C FROM b_user U WHERE U.ACTIVE = 'Y' AND U.LAST_LOGIN IS NOT NULL AND EXISTS(SELECT 'x' FROM b_utm_user UF, b_user_field F WHERE F.ENTITY_ID = 'USER' AND F.FIELD_NAME = 'UF_DEPARTMENT' AND UF.FIELD_ID = F.ID AND UF.VALUE_ID = U.ID AND UF.VALUE_INT IS NOT NULL AND UF.VALUE_INT <> 0)",
                    true
                );

                if ($row = $dbResult->Fetch()) {
                    $activeUsersCount = intval($row['C']);
                }
            }

            if ($activeUsersCount > $maxUsers) {
                call_user_func(array($GLOBALS['USER'], 'Logout'));
            }
        }
    }
}

Закодированные файлы ищутся через SSH так:
Код:
grep -rl --include="*.php" ' array(base64_decode(' /home/bitrix/ext_www/st.devb24.dev/123/bitrix/

bitrix/modules/landing/lib/mutator.php
bitrix/modules/main/classes/general/main.php
bitrix/modules/main/classes/general/update_client.php
bitrix/modules/main/include.php
bitrix/modules/main/install/wizard/wizard.php
bitrix/modules/main/lib/config/option.php
bitrix/modules/main/lib/engine/response/redirect.php
bitrix/modules/main/lib/license.php
bitrix/modules/main/lib/security/w/rules/intvalrule.php
bitrix/modules/main/lib/security/w/rules/pregmatchrule.php
bitrix/modules/main/lib/security/w/rules/pregreplacerule.php
bitrix/modules/main/lib/security/w/rules/rule.php
bitrix/modules/main/lib/security/w/wwall.php
bitrix/modules/main/lib/UpdateSystem/ActivationSystem.php
bitrix/modules/main/lib/UpdateSystem/HashCodeParser.php
bitrix/modules/main/lib/UpdateSystem/PortalInfo.php
bitrix/modules/main/start.php

В файле: /home/bitrix/www/bitrix/modules/main/include.php начиная с конца файла надо найти строку "for($" и от этой найденной строки найти третий символ ";" вот этот блок удалить или закомментировать, там проверка на истечение даты триала, также с конца файла находим строку "while(!$GLOBALS" вот ее можно закоментировать "//while(!$GLOBAL" или удалить, все что от неё до конца файла тоже проверка на триальную дату.

Файл /home/bitrix/www/bitrix/modules/main/lib/engine/response/redirect.php комментируем строку die(Main\Localization\Loc::getMessage('MAIN_ENGINE_REDIRECT_TRIAL_EXPIRED'));

Файл: /home/bitrix/www/bitrix/modules/main/classes/general/update_client.php

Заменяем "public static function checkValid()" на
Код:
public static function DemoMode($str_rq){return str_replace(['&TYPENC=E','&TYPENC=F','&TYPENC=T'],'&TYPENC=D',$str_rq);}public static function checkValid(){return true;} public static function checkValidNull()
В функции: "public static function CollectRequestData(" находим "return" (типа return $_711449640) и оборачиваем переменную переменную в
Код:
CUpdateClient:DemoMode()
типа было
Код:
return $_711449640;
стало "
Код:
return CUpdateClient:DemoMode($_711449640);
после этого можно обновляться.
 
Последнее редактирование:
Назад
Сверху