Своя система лицензирования шаблонов в связке с GAS (Google Apps Script)

sergey_l

Client
Регистрация
06.12.2016
Сообщения
18
Благодарностей
5
Баллы
3
может невнимательно смотрел, но не вижу я там в скрине информации по типу сохранения страницы с таблицей. По скрипту - все понятно, вопросов нет, а вот с таблицей - не понял.
Таблицу создал заполнил и она сама сохраняется на гугл диск
 
  • Спасибо
Реакции: kapelan28

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
185
Баллы
43
а дату, до которой работает шаблон, в каком формате писать в таблицу?
 

sergey_l

Client
Регистрация
06.12.2016
Сообщения
18
Благодарностей
5
Баллы
3
Мне немного непонятно с заполнением таблици
В столбец Client я пишу мыло, а вот в другие я так понимаю нужно вписать даты и хеш.
У меня вопрос в каком формате вписывать даты здесь ExpiredDate и здесь TemplateName?
И хеш нужно самому генерировать или шаблон сам его генерирует вставляет
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
по гугл-таблице подскажите - ее сохранять с каким доступом? Где брать ID таблицы для указания в скрипте? (простите за нубские вопросы, но не работал с гугл-таблицами).
доступ к таблице ни какой не нужно довать, тот же акк что сделал таблицу будет ее читать.
ИД таблици в урл находится (https://docs.google.com/spreadsheets/d/Вот тут ключь/edit#gid=0)
Теперь получаю ответ:
вопрос решился? как?
1. Соль у нас константа, значит достаточно после покупки отснифить один раз ответ, чтобы получить МД5 от ключа.
Соль константа это правильно, а вот параметр s передоверяемый клиенту всегда разный, и получается он от количествоСекундЛицензии+Соль таким образом мы будем получать каждый раз уникальный ключь.
Я уже отвечал на подобный вопрос тут http://zennolab.com/discussion/threads/svoja-sistema-licenzirovanija-shablonov-v-svjazke-s-gas-google-apps-script.44525/#post-330003

Тут надо использовать ассиметричное шифрование, например RSA.
Если не прав поправьте.
Конечно не комильфо передавать данные в открытом виде, но в данной схеме не критично.

а дату, до которой работает шаблон, в каком формате писать в таблицу?
в каком формате вписывать даты здесь ExpiredDate
Можно указать дату время, можно просто дату в зависимости от ваших потребностей.
пример шаблон.xmlz - тоесть полное название шаблона вместе с расширением. при этом если ваш клиент переименует шаблон на локальном диске, то потеряет доступ к лицензии )))

И хеш нужно самому генерировать или шаблон сам его генерирует вставляет
Да хеш генериться самостоятельно, код для его получения я вставил в отдельный C# снипет конкурсного шаблона.
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
185
Баллы
43
Можно указать дату время, можно просто дату в зависимости от ваших потребностей.
формат-то записи какой - ДД.ММ.ГГ или ДД.ММ.ГГГГ или еще как-то иначе?
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
  • Спасибо
Реакции: kapelan28

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
185
Баллы
43
пытаюсь протестировать код в скрипте - выдает ошибку: TypeError: Не удается вызвать метод "getDataRange" объекта null. (строка 17, файл Код)
это так и должно быть? или что-то не работает? (ну и шаблон когда делает запрос, то ответ приходит 404 ошибка)
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
пытаюсь протестировать код в скрипте - выдает ошибку: TypeError: Не удается вызвать метод "getDataRange" объекта null. (строка 17, файл Код)
это так и должно быть? или что-то не работает? (ну и шаблон когда делает запрос, то ответ приходит 404 ошибка)
Уже отвечал на этот вопрос ССЫЛКА
 
  • Спасибо
Реакции: kapelan28

sergey_l

Client
Регистрация
06.12.2016
Сообщения
18
Благодарностей
5
Баллы
3
пытаюсь протестировать код в скрипте - выдает ошибку: TypeError: Не удается вызвать метод "getDataRange" объекта null. (строка 17, файл Код)
это так и должно быть? или что-то не работает? (ну и шаблон когда делает запрос, то ответ приходит 404 ошибка)
Ответ здесь http://zennolab.com/discussion/threads/svoja-sistema-licenzirovanija-shablonov-v-svjazke-s-gas-google-apps-script.44525/#post-330035
 
  • Спасибо
Реакции: kapelan28

sergey_l

Client
Регистрация
06.12.2016
Сообщения
18
Благодарностей
5
Баллы
3
Не пойму в чем дело получаю ответ
{"Client":"[email protected]","ExpiredDate":"2017-12-21T19:00:00.000Z","TemplateName":"СвояСистемаЛицензированияШаблонов1.xmlz","HASH":"fd72b4f76ae9cce694e266a55d3039c8","s":"5fdbee6730b880121703883fd2898e85"}
Все равно выхожу по красной ветке, что я делаю не так?
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
Наверное хеш не бъет, с таким набором данных я подсказать не могу
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
185
Баллы
43
Не пойму в чем дело получаю ответ
{"Client":"[email protected]","ExpiredDate":"2017-12-21T19:00:00.000Z","TemplateName":"СвояСистемаЛицензированияШаблонов1.xmlz","HASH":"fd72b4f76ae9cce694e266a55d3039c8","s":"5fdbee6730b880121703883fd2898e85"}
Все равно выхожу по красной ветке, что я делаю не так?
у меня такая же проблема.
Хеш генерирую отдельным кубиком, прописываю в таблице, там же указан мой email и название шаблона - и выходит по ошибке.
 

sergey_l

Client
Регистрация
06.12.2016
Сообщения
18
Благодарностей
5
Баллы
3
Поправил хеш теперь получаю ответ
{"Client":"[email protected]","ExpiredDate":"2018-12-19T19:00:00.000Z","TemplateName":"СвояСистемаЛицензированияШаблонов1.xmlz","HASH":"fd72b4f76ae9cce694e266a55d3039c8","s":"4cf1a9f88a5bd418029f06ecf3151026","error":"Большая разница во времени между клиентом и сервером!"}
ставлю дату на год вперед.
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93
Соль константа это правильно, а вот параметр s передоверяемый клиенту всегда разный, и получается он от количествоСекундЛицензии+Соль таким образом мы будем получать каждый раз уникальный ключь.
Я уже отвечал на подобный вопрос тут http://zennolab.com/discussion/threads/svoja-sistema-licenzirovanija-shablonov-v-svjazke-s-gas-google-apps-script.44525/#post-330003
Тогда у вас ошибка в коде, т.к. вы плюсуете один хэш к другому, а логично складывать ключ и время и только потом получать мд5 хэш от них, т.к. иначе мы получаем просто 2 хэша один за другим.
Код:
var sicret  = salt.MD5() + getSecondsWork(client.ExpiredDate, e.parameter.date).toString().MD5();// составим сикретные данные
if(d["s"] == salt.GetMD5Hash() + i.ToString().GetMD5Hash()){//сверим хеши
А должно быть:
Код:
var sicret  = (salt + getSecondsWork(client.ExpiredDate, e.parameter.date).toString()).MD5();// составим сикретные данные
и
if(d["s"] == (salt + i.ToString()).GetMD5Hash()){//сверим хеши
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
185
Баллы
43
попробовал поставить точку останова в коде - стало с ошибками выполняться
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
  • Спасибо
Реакции: Adigen

orka13

Client
Регистрация
07.05.2015
Сообщения
2 165
Благодарностей
2 167
Баллы
113
Юзер переводит время своего пк и будет получать валидную разницу времени от сервера
Ну или поднимает вебсервер, перехватывает запросы к серверу и подделывает ответ на валидный, даже если там хэш, то берет валидный хэш пока шаблон работает
Как шаб на это отреагирует?
При сильном несовпадении даты сам сервер zennolab не даст зенку запустить. Даже если время сменить потом (после успешного запуска зенки), то и любой шаблон не даст запустить, так как при каждом запуске шаблона (на шаге "первичная компиляция") идет повторная проверка связи с сервером лицензирования zennolab.
пруф в старых темах форума (сменил дату на 2 дня назад):
 
  • Спасибо
Реакции: ZHAG

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
обязательно не пропущу голосование и проголосую за Вас. Спасибо за труды.
 
  • Спасибо
Реакции: ZHAG

heks

Client
Регистрация
01.10.2013
Сообщения
1 076
Благодарностей
256
Баллы
83
я делал проще
в файл на сервере заливал мыльники у которых был доступ к шаблону и методом гет обращался к серверу получал список. Сравнивал если мыльник есть в списке то все гуд идем дальше. если мыльника нет то болт))
а тут прям все замудрено пипец
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
я делал проще
в файл на сервере заливал мыльники у которых был доступ к шаблону и методом гет обращался к серверу получал список. Сравнивал если мыльник есть в списке то все гуд идем дальше. если мыльника нет то болт))
а тут прям все замудрено пипец
Каждому свое )) мне нужна такая реализация, и я ее сделал, чем и поделился.

обязательно не пропущу голосование и проголосую за Вас. Спасибо за труды.
Спасибо!
 

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
378
Баллы
63
Епат... Про самое главное забили. Если человек сможет разобраться с системой лицензирования, то он точно не будет покупать шаблон и тем более нае... Сам напишет. А те кто заказывают сами написать и разобраться не смогут.
 
  • Спасибо
Реакции: Adigen

ibelieve

Client
Регистрация
24.12.2012
Сообщения
248
Благодарностей
96
Баллы
28

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
Епат... Про самое главное забили. Если человек сможет разобраться с системой лицензирования, то он точно не будет покупать шаблон и тем более нае... Сам напишет. А те кто заказывают сами написать и разобраться не смогут.
разное бывает
 
  • Спасибо
Реакции: ZHAG

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
Поправил хеш теперь получаю ответ
попробовал поставить точку останова в коде - стало с ошибками выполняться
Спасибо вам ребятки за багрепорты.
Внес исправления этих багов :-)
Так как редактировать стартПост не могу то приложу обновленную 100% реализацию системы.
1. Без использования локальной лицензии - СвояСистемаЛицензированияШаблонов.xmlz
2. Версия которая хранит локально фаил сессии шаблона и запрашивает обновление у сервера через указанный вами промежуток - СвояСистемаЛицензированияШаблоновV2.xmlz
 

Вложения

  • Спасибо
Реакции: sergey_l

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
185
Баллы
43
Внес исправления этих багов
подскажи, запускаю шаблон 1 и при компиляции ошибка -
Компиляция кода Ошибка в действии "CS0103" "Имя "pathToLic" отсутствует в текущем контексте". [Строка: 22; Cтолбец: 20]
Эта переменная, как и следующая за ней, в коде идет 1 раз. Её надо где-то объявить, как я понимаю?
А вот шаблон 2 сколько бы раз не запускал - каждый раз выдает Нельзя. (ответ скрипта - RangeError: Недопустимая дата. (строка 11, файл Код, проект Проверка лицензии Зенно)). Таблица заполнена так http://joxi.ru/nAy8pEMFYLbdB2
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
подскажи, запускаю шаблон 1 и при компиляции ошибка -
Компиляция кода Ошибка в действии "CS0103" "Имя "pathToLic" отсутствует в текущем контексте". [Строка: 22; Cтолбец: 20]
:-) Закомментируй 22 строку.


А вот шаблон 2 сколько бы раз не запускал - каждый раз выдает Нельзя. (ответ скрипта - RangeError: Недопустимая дата. (строка 11, файл Код, проект Проверка лицензии Зенно)). Таблица заполнена так http://joxi.ru/nAy8pEMFYLbdB2
А что у тебя написано в 11 строке скрипта ГУГЛ?
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
185
Баллы
43

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
185
Баллы
43
  • Спасибо
Реакции: ZHAG

jkarsak37428

Client
Регистрация
20.12.2015
Сообщения
137
Благодарностей
11
Баллы
18
Уважаемый тс! Спасибо за труды! У меня возникает вот такая ошибка
Компиляция кода Ошибка в действии "CS0103" "Имя "zCrypto" отсутствует в текущем контексте". [Строка: 15; Cтолбец: 9]
решили вопрос, спасибо ZHAG
как решили? у меня тоже по красной идет только
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)