DevelNext — Активация программы через сервер с привязкой к железу

Программа передаёт ключ и id железа, на их основе сервер генерирует уникальный файл лицензии для каждого ПК. В последующие запуски активация через Интернет не требуется, т.к. данные об активации хранятся в лицензионном файле. В демо я сделал id железа = хэш sha-1 от uuid и id мат.платы, поэтому никакие личные данные никуда не утекут. Можно не вешать ssl на сервер, вряд ли что-то можно будет сделать, даже перехватив данные.

Описание алгоритма

Серверная часть

Скачать "DevelNext Activation Server" Загрузок: 673

Клиент

Скачать "DevelNext Actvation Client" Загрузок: 700

Инструкция по установке

1. Установка на сервер
1.1 Скачать и распаковать скрипты для сервера
1.2 Создать базу данных SQL, сделать импорт файла dn.sql
1.3 Отредактировать файл config.php: указать логин/пароль для авторизации, параметры для подключения к MySQL, придумать секретный ключ, которым будет подписываться файл лицензии, его нужно будет прописать в программе-клиенте (далее).

2. Конфигурация клиента
2.1 Скачиваем проект с программой клиентом, открываем модуль Activation

2.2 В модуле указываем секретный ключ (такой же, как в конфигурации сервера из п.1.3), URL сервера, где установлен скрипт авторизации.
2.3 Для работы к проекту необходимо подключить пакет Windows
2.4 Обязательно отметьте галочку компилировать в байт-код, иначе смысла от такой активации не будет

Активация демо проекта настроена на этот сервер

Админка демо проекта

Добавить комментарий

  1. Аноним:

    Привет, исходник решил попробовать, и установил на тестовый сервер, настроив его под себя, и когда запускаю тестовый проект, мне пишет ошибку что отсутствует пакет windows и предлагает его сразу скачать, хотя у меня уже есть установленный пакет 2.0 и подключен к проетку, после ошибки проект останавливается.

    • Аноним:

      Я тоже с этим поборолся слегка… Ты возьми, перейди по ссылки предлагаемой и скачай только версию 1.0 (ее как раз ссылка и предлагает) , и поставь, вернее система спросить заменить на более раннюю версию, отвечай да… И тогда все заработает

  2. Павел:

    Привет, у меня такая проблема скачать DevelNext 16.7.0 скачал проект установил пакет (Проект пакеты добавить пакет ) и пишет все равно, что нужно скачать пакет dn-windows-bundle.dnbundle в чем может быть проблема ? Ибо я впервые пользуюсь данной программой.

    • Аноним:

      Пакет мало установить в систему, ее в при конкретном проекте, нужно перетащить в верхнее поле с нижнего, где она отображалась как установленная…

  3. Nelegal-38:

    Одним и тем же ключом активировал несколько программ на разных компьютерах. Вывод, нет привязки по железу…

  4. Nikl:

    Не работает активация в online режиме лог фаил жалуется на несоответствие времени

  5. Руслан:

    Почему у меня весь template.html в каракулях?

  6. Аноним:

    Блин это же гениально как я до этого не мог додуматься
    и знаешь что ты крутой кодер или как вас там завут

  7. DraonKHacks:

    Что такое ‘Авторизационные данные’ в config.php к чему они?

  8. Аноним:

    При заходе на сайт вылазит это:
    ‘Новый ключ добавлен!’, ‘keyDeleted’ => ‘Ключ удалён’, ‘keyEdited’ => ‘Ключ изменён’, ]; if(isset($messages[$_GET[‘message’]])){ ?>
    Как исправить?

  9. RenX:

    Система очень уязвима. Смотри…. когда из базы удалить ключ и отмотать время на компе (клиенте) , то можно пользоваться программой сколько захочешь (отматывая время) при условии что нет ключа. И просто без удаления ключа из базы данных, можно отмотать время назад и юзать прогу сколько угодно. Т.к программа обращается к серверу когда лицензия закончится( а время она берет не из сервера а из компа-клиента).
    Т.е в базе данных время истекло, а на компе-клиенте нет, и юзай прогу сколько влезет отматывая время.

    • RenX:

      тестировал на 2-х ноутбуках в течении 3-х дней

    • Аноним:

      Если не трудно подскажите код как можно дату сверить со временем в интернете? Я прописывал в Activation.php $now = Time::now(TimeZone::of(‘Moscow’))->getTime(); но это время компютера а как в интернет выйти?

      • Аноним:

        Создаешь файл php на серве пишешь туда это

        date_default_timezone_set(«Europe/Moscow»);
        $today[1] = date(«H:i:s»);
        $date = gmdate(«Y-m-d $today[1]»);
        $timestamp = strtotime($date);
        echo $timestamp;

        На $now в клиенте ставишь file_get_contents этого файлика profit

        • Nikl:

          Пожалуйста помоги разобраться — почему когда скрипт на сервере online выдает ошибку после ввода серийного номера —
          Fatal error: Uncaught Error: Cannot call ‘getTime’ method of non-object in res://app/modules/Activation.php on line 63, position 105
          Stack Trace:
          #0 app\forms\ActivationForm->doActivateAction() called at [res://php/gui/UXNodeWrapper.php:252]
          #1 app\modules\Activation::getLicense() called at [res://app/forms/ActivationForm.php:22]
          #2 app\modules\Activation::is() called at [res://app/modules/Activation.php:86]
          #3 app\modules\Activation::getLicenseFileParams() called at [res://app/modules/Activation.php:33]
          #4 {main}
          thrown in res://app/modules/Activation.php on line 63

  10. Аноним:

    При нажатии на «Получить лицензию» выдаёт ошибку Fatal error: Uncaught Error: Cannot call ‘getTime’ method of non-object in res://app/modules/Activation.php on line 57, position 105

    • Nikl:

      Я заметил что эта ошибка зависит от того имеется ли какая-нибудь надпись в окне ввода при стартовом запуске программы если да то начинает выдавать такую ошибку но если окно ввода пусто при первом запуске то все нормально. Причем окно запуска нужно сделать пустым еще до сборки программы в devel…

    • Аноним:

      Эта ошибка будет существовать до тех пора, пока не удалишь файл лицензии, он будет нулевого размера! Но при повторном запуске скрипта протекции, сразу не будет, выскочит форма ввода ключа, но с сервером связи (с требуемой конфигурацией) не, и файл лицензии просто создастся пустой, т.е нулевой. это связано с тем, что хостинг, где установлена серверная часть скрипта, не соответствует по настройкам (в файле php.ini) с требуемыми. С какими, я не стал выяснять, просто сменил хостинг на иной, и все заработало.

  11. Аноним:

    Parse error: syntax error, unexpected ‘[‘ in /var/www/u0314106/data/www/mushroomeater.pw/license/index.php on line 18

  12. Аноним:

    Спасибо, отличный исходник, пригодится!