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

может невнимательно смотрел, но не вижу я там в скрине информации по типу сохранения страницы с таблицей. По скрипту - все понятно, вопросов нет, а вот с таблицей - не понял.
Таблицу создал заполнил и она сама сохраняется на гугл диск
 
  • Спасибо
Реакции: kapelan28
а дату, до которой работает шаблон, в каком формате писать в таблицу?
 
Мне немного непонятно с заполнением таблици
В столбец Client я пишу мыло, а вот в другие я так понимаю нужно вписать даты и хеш.
У меня вопрос в каком формате вписывать даты здесь ExpiredDate и здесь TemplateName?
И хеш нужно самому генерировать или шаблон сам его генерирует вставляет
 
по гугл-таблице подскажите - ее сохранять с каким доступом? Где брать ID таблицы для указания в скрипте? (простите за нубские вопросы, но не работал с гугл-таблицами).
доступ к таблице ни какой не нужно довать, тот же акк что сделал таблицу будет ее читать.
ИД таблици в урл находится (https://docs.google.com/spreadsheets/d/Вот тут ключь/edit#gid=0)
Теперь получаю ответ:
вопрос решился? как?
1. Соль у нас константа, значит достаточно после покупки отснифить один раз ответ, чтобы получить МД5 от ключа.
Соль константа это правильно, а вот параметр s передоверяемый клиенту всегда разный, и получается он от количествоСекундЛицензии+Соль таким образом мы будем получать каждый раз уникальный ключь.
Я уже отвечал на подобный вопрос тут http://zennolab.com/discussion/thre...e-s-gas-google-apps-script.44525/#post-330003

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

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

И хеш нужно самому генерировать или шаблон сам его генерирует вставляет
Да хеш генериться самостоятельно, код для его получения я вставил в отдельный C# снипет конкурсного шаблона.
 
  • Спасибо
Реакции: kapelan28
пытаюсь протестировать код в скрипте - выдает ошибку: TypeError: Не удается вызвать метод "getDataRange" объекта null. (строка 17, файл Код)
это так и должно быть? или что-то не работает? (ну и шаблон когда делает запрос, то ответ приходит 404 ошибка)
 
пытаюсь протестировать код в скрипте - выдает ошибку: TypeError: Не удается вызвать метод "getDataRange" объекта null. (строка 17, файл Код)
это так и должно быть? или что-то не работает? (ну и шаблон когда делает запрос, то ответ приходит 404 ошибка)
Уже отвечал на этот вопрос ССЫЛКА
 
  • Спасибо
Реакции: kapelan28
пытаюсь протестировать код в скрипте - выдает ошибку: TypeError: Не удается вызвать метод "getDataRange" объекта null. (строка 17, файл Код)
это так и должно быть? или что-то не работает? (ну и шаблон когда делает запрос, то ответ приходит 404 ошибка)
Ответ здесь http://zennolab.com/discussion/thre...e-s-gas-google-apps-script.44525/#post-330035
 
  • Спасибо
Реакции: kapelan28
Не пойму в чем дело получаю ответ
{"Client":"mail@gmail.com","ExpiredDate":"2017-12-21T19:00:00.000Z","TemplateName":"СвояСистемаЛицензированияШаблонов1.xmlz","HASH":"fd72b4f76ae9cce694e266a55d3039c8","s":"5fdbee6730b880121703883fd2898e85"}
Все равно выхожу по красной ветке, что я делаю не так?
 
Не пойму в чем дело получаю ответ
{"Client":"mail@gmail.com","ExpiredDate":"2017-12-21T19:00:00.000Z","TemplateName":"СвояСистемаЛицензированияШаблонов1.xmlz","HASH":"fd72b4f76ae9cce694e266a55d3039c8","s":"5fdbee6730b880121703883fd2898e85"}
Все равно выхожу по красной ветке, что я делаю не так?
у меня такая же проблема.
Хеш генерирую отдельным кубиком, прописываю в таблице, там же указан мой email и название шаблона - и выходит по ошибке.
 
Поправил хеш теперь получаю ответ
{"Client":"mail@gmail.com","ExpiredDate":"2018-12-19T19:00:00.000Z","TemplateName":"СвояСистемаЛицензированияШаблонов1.xmlz","HASH":"fd72b4f76ae9cce694e266a55d3039c8","s":"4cf1a9f88a5bd418029f06ecf3151026","error":"Большая разница во времени между клиентом и сервером!"}
ставлю дату на год вперед.
 
Соль константа это правильно, а вот параметр s передоверяемый клиенту всегда разный, и получается он от количествоСекундЛицензии+Соль таким образом мы будем получать каждый раз уникальный ключь.
Я уже отвечал на подобный вопрос тут http://zennolab.com/discussion/thre...e-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()){//сверим хеши
 
попробовал поставить точку останова в коде - стало с ошибками выполняться
MAjldY9F4qYPdm.jpg
 
  • Спасибо
Реакции: Adigen
Юзер переводит время своего пк и будет получать валидную разницу времени от сервера
Ну или поднимает вебсервер, перехватывает запросы к серверу и подделывает ответ на валидный, даже если там хэш, то берет валидный хэш пока шаблон работает
Как шаб на это отреагирует?
При сильном несовпадении даты сам сервер zennolab не даст зенку запустить. Даже если время сменить потом (после успешного запуска зенки), то и любой шаблон не даст запустить, так как при каждом запуске шаблона (на шаге "первичная компиляция") идет повторная проверка связи с сервером лицензирования zennolab.
пруф в старых темах форума (сменил дату на 2 дня назад):
 
  • Спасибо
Реакции: ZHAG
я делал проще
в файл на сервере заливал мыльники у которых был доступ к шаблону и методом гет обращался к серверу получал список. Сравнивал если мыльник есть в списке то все гуд идем дальше. если мыльника нет то болт))
а тут прям все замудрено пипец
 
я делал проще
в файл на сервере заливал мыльники у которых был доступ к шаблону и методом гет обращался к серверу получал список. Сравнивал если мыльник есть в списке то все гуд идем дальше. если мыльника нет то болт))
а тут прям все замудрено пипец
Каждому свое )) мне нужна такая реализация, и я ее сделал, чем и поделился.

обязательно не пропущу голосование и проголосую за Вас. Спасибо за труды.
Спасибо!
 
Епат... Про самое главное забили. Если человек сможет разобраться с системой лицензирования, то он точно не будет покупать шаблон и тем более нае... Сам напишет. А те кто заказывают сами написать и разобраться не смогут.
 
  • Спасибо
Реакции: Adigen
Епат... Про самое главное забили. Если человек сможет разобраться с системой лицензирования, то он точно не будет покупать шаблон и тем более нае... Сам напишет. А те кто заказывают сами написать и разобраться не смогут.
разное бывает
 
  • Спасибо
Реакции: ZHAG
Поправил хеш теперь получаю ответ
попробовал поставить точку останова в коде - стало с ошибками выполняться

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

Вложения

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


А вот шаблон 2 сколько бы раз не запускал - каждый раз выдает Нельзя. (ответ скрипта - RangeError: Недопустимая дата. (строка 11, файл Код, проект Проверка лицензии Зенно)). Таблица заполнена так http://joxi.ru/nAy8pEMFYLbdB2
А что у тебя написано в 11 строке скрипта ГУГЛ?
 
Уважаемый тс! Спасибо за труды! У меня возникает вот такая ошибка
Компиляция кода Ошибка в действии "CS0103" "Имя "zCrypto" отсутствует в текущем контексте". [Строка: 15; Cтолбец: 9]
решили вопрос, спасибо ZHAG
как решили? у меня тоже по красной идет только
 

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