По договоренности
1. При запуске программы реализовать ввод лицензионного ключа. Его валидность проверяется запросом к php скрипту.
Сам php скрипт проверяет варидность ключа на сервере
php скрипт все обращения и события пишет в лог (с данными клиента IP, ключ, дату и время, наименование события)
У Ключа должна быть следующая информация (она хранится на сервере):
-Клиент (текстовое поле)
-Дата начала действия лицензии (если поле пустое значит ключ не активирован)
-Дата окончания действия лицензии
-Срок действия лицензии (в днях)
-Комментарий (текстовое поле не передается клиенту)
-Поставщики (текстовое поле, где через запятую перечисляются адреса сайтов поставщиков)
-Статус ключа(может принимать значения: Не активирован, На обработке, Активирован, Заблокирован)
php скрипт должен проверить срок действия ключа и передать информацию программе. Если действие истекло нужно выдать сообщение и предложить ввести ключ продления.
Если лицензионный ключ не активирован нужно предложить активировать и заполнить анкету (Клиент, Поставщики)
Если это уже второй ключ (ключ продления) (т.е. мы активируем следующий ключ) нужно не предлагать заполнить анкету а сразу активировать ключ (записать в лог ключа инфу о продлении и изменить поля срока лицензии, дату начала и окончания)
После активации ключа у ключа меняется статус на "На обработке"
Далее мы по ftp (это по, в дальнейшем сделаем доп. программу) меняем статус на "Активирован" и при следующем запуске php скрипта- происходит запись даты начала и окончания действия лицензии
2. При нажатии на кнопку "Загрузить" у нас должен загружаться архив с сервера через php скрипт (с проверкой лицензии)
Этот архив распаковывается и там наши 4 dat файла. Далее все как обычно
На сервере в лиц. ключе ставится пометка что пользователь скачал себе файлы и их нельзя трогать. Через час если пользователь не сохранил изменения пометка сбрасывается.
В программе же пользователя через час всплывает сообщение что сессия завершена и нужно заново закачивать с сервера изменения (по русски) и блокируется сохранение (пишем что нужно перезапустить программу)
При сохранении архивом эти файлы улетают на сервер через php скрипт (причем улетают только 2 dat файла)
При этом на сервере сохраняются предыдущие версии файлов и текущие версии файлов.
Т.е. на сервере в папке с php скриптом есть структура:
Папка LIC в ней находятся папки с именем ключа
Например такая папка:
ASBEAR-ABSDEONB32-GHSTRAGB7F
один файл .htassess (в нем блокировка на чтение всей папки)
один файл lic.start.txt (в нем ключи к основным лицензиям.) В нем строчки вида: (аналогично файле lic.update.txt)
ASBEAR-ABSDEONB32-GHSTRAGB7F 9 30 true 17.09.2013 ASBEAR-ABSDEONB32-GHSTRAGB7F
UAYSHD-ABSDEONB32-GHSTRAGB7F 9 30 false
один файл lic.update.txt (в нем в каждой строчке 3-5 переменных:
GHDGYTSD-IJHGYT76FD-UJHDETBVC9 9 30 false
GHDGYTSD-IJHGYT76FD-UJHIJABVC9 9 30 true 17.09.2013 ASBEAR-ABSDEONB32-GHSTRAGB7F
1. Ключ продления
2. Тип лицензии число (от него будет зависеть функционал программы полный или не полный)
3. количество дней продления
4. -false не активирован, если true то автивирован, и будут еще 2 переменные
5. Дата активации продления
6. На каком ключе активировано
)
Папка ASBEAR-ABSDEONB32-GHSTRAGB7F (папка лицензионного ключа)
Если папка существует то лицензионный ключ существует
Если папка не существует то проверяем файл lic.start.txt если в нем есть этот ключ то создаем папку лицензии и сохраняем в ней файл info.ini с начальными данными
в папке есть файл info.ini в котором и лежит информация о ключе (имя, даты активации, статус и т.д.)
info.update.txt здесь будут дублироваться строчки при продлении из lic.update.txt
Т.е. будет такая строчка
GHDGYTSD-IJHGYT76FD-UJHIJABVC9 9 30 true 17.09.2013 ASBEAR-ABSDEONB32-GHSTRAGB7F
Это информационно.
Так же здесь есть папка DATA
в ней архивы всех изменений dat файлов
YYYY-MM-DD_HH-SS_IIII.zip
Где IIII это либо CLIENT либо SERVER в зависимости от того, кто сохранял этот архив с dat файлами
т.е. вид будет таким 2013-09-17_14-12_CLIENT.zip появлятся файл после нажатия на кнопку "Сохранить" у клиента
Внутри архива лежат 2 файла dat (текущее сохранение)
Во время загрузки в программу, php файл берет 2 последних zip файла и именно их он передает программе.
т.е. .bak получаются из этих файлов
Итого структура следующая:
solomagazine.php
LIC
.htaccess
lic.update.txt
lic.start.txt
ASBEAR-ABSDEONB32-GHSTRAGB7F
info.ini
info.update.txt
DATA
2013-09-17_14-12_CLIENT.zip
2013-09-17_17-12_SERVER.zip
3. Реализовать обновление программы на стороне клиента (если версия на сервере и у клиента отличается) предложить ее обновить. Если клиент не обновляет ее то заблокировать работу