![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Antony41 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 27.12.2008 Репутация: 1 Всего: 1 |
Всем привет! Пишу ShareWare программу. Принцип следующий: на сервере хранятся ключевые файлы, в каждом ключевом файле, есть дата истечения ключа. Хочу сделать так что бы при запуске клиентской программы, проверялась текущая дата с какого либо сервера допустим NTP сервака, и как только его дата (в его часовом поясе) больше той которая в ключе, программа блокирует ключевой файл! Так вот проблема в часовых поясах например у меня уже будет 25 число а в москве еще только 24, так как разница во времени +2 часа, Как сделать такую проверку мне нужно узнать сколько времени сейчас у пользователя, лучший вариант это узнать по IP адресу например вот
http://yandex.ru/yandsearch?text=%D0%BA%D0...D1%81&lr=57, но вдруг страницу на яндексе переделают что тогда? как вобще делаются подобные приложения, например антивирус доктор вэб, тоже как только истекает срок ключа сразу блокирует ключи. |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Почему бы клиенту не спрашивать дату у своего сервера? причем, запрашивать в UTC формате?
Потом - берем на клиенте LocalTime, вычитаем SystemTime (UTC). тем самым получаем на сколько время клиента разнится с "глобальным". Добавляем эту разницу к полученному от своего сервера и имеем реальное время часового пояса пользователя (в том случае, если он выставил его себе правильно), а не то, которое выставил себе клиент... Этим ликвидируются все неясности локальных настроек, устраняется зависимость от третьих сервисов, закрытых портов и система контроля будет приведена к единому знаменателю... Это сообщение отредактировал(а) kami - 11.3.2010, 22:47 |
|||
|
||||
| Antony41 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 27.12.2008 Репутация: 1 Всего: 1 |
Огромное спасибо
|
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
NTP и SNTP протоколы передают дату и время по гринвичу.
|
|||
|
||||
| darkmamba |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 16.10.2008 Репутация: нет Всего: 1 |
На компе клиента нельзя дату сверять.
|
|||
|
||||
| Antony41 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 27.12.2008 Репутация: 1 Всего: 1 |
Как же быть тогда просто ни как в голове не укладывается?
Добавлено через 13 минут и 44 секунды Делать синхронизацию, каждый раз например каждые 2 часа, думаю неверный вариант, так как сервера синхронизации не всегда могут принимать и обрабатывать запросы, а тем более не всегда работают |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Почему бы вместе с датой в ключевом файле на сервере не хранить признак того, что ключ уже не действует?
-------------------- |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
А если нет доступа у NTP серверу...
|
|||
|
||||
| Antony41 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 27.12.2008 Репутация: 1 Всего: 1 |
Все ключевые файлы будут хранится на сервере, в каждом ключевом файле будет первый параметр, день месяц или год, второй это значение.
Например пользователь хочет активировать клиента, и вводит код активации, происходит обращение к ключевому файлу на сервере, читается параметр например Day 7 значит к текущей дате должно прибавиться 7 дней это и будет датой истекающего срока Думаю правильным решением будет отправить команду серверу, а сервер при активации возмет своё время, и при каждом обращении проверять. На сервере производить синхронизацию например каждый час, и если срок в ключевом файле истёк, то блокировать его) |
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 5 Всего: 17 |
Antony41, а если твоя программа будет установлена на компьютере, который не подключен к Интернету в силу определенных причин? Или, например, человек поставил программу, активировал и отключил комп от сети. Ведь, приведенные тобой в пример др. веб, да и каспер, все равно реагируют на истечение ключа.
Я бы сделал так: Создал бы службу Wind0w$ для своей программы, которая бы следила за всем этим. После установки использовал бы ее для активации программы на сервере. В активированном ключевом файле хранил бы временные метки активации и срока действия ключа, полученные с сервера. При запуске программы проверял бы запущена служба или нет и истечение срока действия ключа. При наличии активного подключения сверялся бы с сервером активации. Кроме того, служба следила бы за переводом календаря и часов пользователя. Дополнительно можно взаимно отслеживать изменение программы и службы пользователями (простенькая защита от перекомпилляции). Это сообщение отредактировал(а) former - 15.4.2010, 11:33 -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Antony41 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 27.12.2008 Репутация: 1 Всего: 1 |
Конечно это всё верно, для моего варианта проще, так как программа не имеет смысла без соединения с интернетом. Спасибо! Теперь хоть знать буду как изобретать программы не связанные с интернетом.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |