Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Ответ
 
Опции темы
Старый 26.03.2011, 17:37   #1
 Рыцарь-защитник
Аватар для "Unix
 
"Unix гордость нации"Unix гордость нации"Unix гордость нации"Unix гордость нации"Unix гордость нации"Unix гордость нации"Unix гордость нации"Unix гордость нации"Unix гордость нации"Unix гордость нации"Unix гордость нации
Регистрация: 08.07.2010
Сообщений: 631
Популярность: 3773
Сказал(а) спасибо: 88
Поблагодарили 275 раз(а) в 163 сообщениях
Отправить сообщение для "Unix с помощью Skype™
 
Wink CPW

Структура

Чтобы настроить систему обновлений нужен веб-сервер, с быстрым каналом.
Структура папок выглядит следующим образом (это пример):

* [Ссылки могут видеть только зарегистрированные пользователи. ]
o info ([Ссылки могут видеть только зарегистрированные пользователи. ])
+ pid ([Ссылки могут видеть только зарегистрированные пользователи. ]) — файл содержит число из клиентского файла pid.ini
o launcher ([Ссылки могут видеть только зарегистрированные пользователи. ])
+ version ([Ссылки могут видеть только зарегистрированные пользователи. ]) — содержит число — текущую версию ланчера
+ files.md5 ([Ссылки могут видеть только зарегистрированные пользователи. ]) — содержит список файлов и их md5-сумму папки launcher клиента
o patcher ([Ссылки могут видеть только зарегистрированные пользователи. ])
+ version ([Ссылки могут видеть только зарегистрированные пользователи. ]) — содержит число — текущую версию патчера
+ files.md5 ([Ссылки могут видеть только зарегистрированные пользователи. ]) — содержит список файлов и их md5-сумму папки patcher клиента
+ v-X.inc ([Ссылки могут видеть только зарегистрированные пользователи. ]) — например, v-3.inc, содержит список файлов, их md5-сумму и знак операции (+ — новый файл, ! — файл изменен). 3 — разница между текущей версией и версией клиента. т.е. если у клиента версия 78, а на сервере уже 85, то клиент будет качать файл v-7.inc
o element ([Ссылки могут видеть только зарегистрированные пользователи. ])
+ version ([Ссылки могут видеть только зарегистрированные пользователи. ]) — содержит число — текущую версию элементов, та самая, что отображается в окне патчера
+ files.md5 ([Ссылки могут видеть только зарегистрированные пользователи. ]) — содержит список файлов и их md5-сумму папки element клиента
+ v-X.inc ([Ссылки могут видеть только зарегистрированные пользователи. ]) — например, v-3.inc, содержит список файлов, их md5-сумму и знак операции (+ — новый файл, ! — файл изменен). 3 — разница между текущей версией и версией клиента. т.е. если у клиента версия 78, а на сервере уже 85, то клиент будет качать файл v-7.inc

Каждый файл files.md5 и v-X.inc имеет внизу [Ссылки могут видеть только зарегистрированные пользователи. ]

Алгоритмы обновления

В клиенте ПВ два уровня обновления:

1. launcher/launcher.exe — та мини-программа, которая лезет на сервер обновлений только для того, чтобы узнать не нужно ли обновлять patcher и себя;
2. patcher/patcher.exe — основной патчер, он качает отдельные кусочки pck-файлов, карты, списки серверов, словом все, что находится в папке element.

Помимо этого, есть и два метода обновления

1. Полная проверка. Рекомендуется делать когда есть какие-то проблемы с клиентом или он не синхронизирован с текущим;
2. Регулярное обновление. Происходит в обычном случае.

Рассмотрим каждый метод более подробно.

Полная проверка
Для того, чтобы произошла полная проверка, нужно запустить клиент через launcher/FixIt.bat . После этого launcher/launcher.exe полностью обновит себя, содержимое своей папки (с помощью [Ссылки могут видеть только зарегистрированные пользователи. ]) и папки patcher (с помощью [Ссылки могут видеть только зарегистрированные пользователи. ]) (включая подпапки). Потом, как обычно, запустится patcher/patcher.exe .
Если клиент нажмет кнопку «Проверка», то patcher/patcher.exe скачает файл [Ссылки могут видеть только зарегистрированные пользователи. ] и начнет проверять md5-сумму тех файлов, что перечислены там, с просчитанными суммами тех, что есть у клиента. Клиент скачает только отличающиеся и новые файлы. Если включен антивирус, то процесс займет продолжительное время.

С технической точки зрения процесс выглядит так:

1. launcher/FixIt.bat запускает launcher/launcher.exe FullCheck, т.е. с параметром полной проверки
2. launcher/launcher.exe скачивает [Ссылки могут видеть только зарегистрированные пользователи. ] и сравнивает с числом из pid.ini из patcher, если совпадают, то к следующему шагу, если нет — выдаст ошибку
3. launcher/launcher.exe скачает файл [Ссылки могут видеть только зарегистрированные пользователи. ], и поочередно проверит суммы всех файлов, скачает отличающиеся. Тоже самое проделает с файлом [Ссылки могут видеть только зарегистрированные пользователи. ] и папкой patcher .
4. запустится patcher/patcher.exe, после нажатия на «Проверку», патчер начнет качать большой файл [Ссылки могут видеть только зарегистрированные пользователи. ] и будет сверять каждый файл, перечисленный там, с тем, который имеется у клиента и скачает отличающиеся.

Регулярное обновление

Обычное обновление не требует от игрока каких-то специфических действий, кроме как запуск игры через launcher/launcher.exe (как это происходит на оф-серверах). launcher/launcher.exe проверит свою версию, скачает новые/измененные файлы, если они есть, и запустит patcher/patcher.exe .
patcher/patcher.exe скачает файл [Ссылки могут видеть только зарегистрированные пользователи. ], если он отличается от версии клиента, то скачает [Ссылки могут видеть только зарегистрированные пользователи. ], где X — разница версий и начнет проверять md5-сумму тех файлов, что перечислены там, с просчитанными суммами тех, что есть у клиента. Клиент скачает только отличающиеся и новые файлы. Если включен антивирус, то процесс займет продолжительное время.

С технической точки зрения процесс выглядит так:

1. launcher/launcher.exe скачивает [Ссылки могут видеть только зарегистрированные пользователи. ] и сравнивает с числом из pid.ini из patcher, если совпадают, то к следующему шагу, если нет — выдаст ошибку
2. launcher/launcher.exe скачивает [Ссылки могут видеть только зарегистрированные пользователи. ] и сравнивает с клиентской версией launcher, если совпадают, то к следующему шагу, если нет — скачает именно файл [Ссылки могут видеть только зарегистрированные пользователи. ], и поочередно проверит суммы всех файлов, скачает отличающиеся. После проделает тоже самое с [Ссылки могут видеть только зарегистрированные пользователи. ] и [Ссылки могут видеть только зарегистрированные пользователи. ], где X — разница версий и начнет проверять md5-сумму тех что перечислены там, с просчитанными суммами тех, что есть у клиента.
3. запустится patcher/patcher.exe, и повторит все действия что и launcher/launcher.exe, только с [Ссылки могут видеть только зарегистрированные пользователи. ] и [Ссылки могут видеть только зарегистрированные пользователи. ], где X — разница версий и начнет проверять md5-сумму тех что перечислены там, с просчитанными суммами тех, что есть у клиента.

Структура файлов

Цифровая подпись нужна для аутентификации и валидации клиента. Поэтому, каждый файл подписан цифровой подписью длинной 173 символа, разбитую на три строки (через 64 символа).
Подпись генерируется для текста, который идет до надписи -----BEGIN ELEMENT SIGNATURE----- с помощью закрытого ключа, клиентские программы launcher/launcher.exe и patcher/patcher.exe проверяют ее с помощью открытого ключа, который зашит у них в коде (его необходимо заменить на свой при установке, иначе первая же валидация не пройдет).

Пример файла v-X.inc

PHP код:
# 128 129 10561111
!cb06039aebcb7f132f525e19bcb110c6 /Y29uZmlncw==/YmFkd29yZHMudHh0
!54b52a31aee9302ac04ff2f2d1071add /ZGF0YQ==/Z3Nob3AuZGF0YQ==
+
23ef97776d85a98116d52a8dd7268a46 YXV0b2FkdmFuY2Vtb3VudGFpbjIuaHRm
!d052f2a05f4c55a75571b682a233caf7 YXV0b2FkdmFuY2Vtb3VudGFpbjIuc3Rm
!09263a66781cc03f4b975bc594ccda46 YXV0b2FkdmFuY2Vyb2FkLmh0Zg==
!
d09d971b029c258507816f6735abd5fc aWNvbmxpc3RfZ3VpbGQudHh0
-----BEGIN ELEMENT SIGNATURE-----
EKQk4dgIM6pHBdQ5UtRagdL3WQWrGhSWawIUWDDyGILOdWpoNPNiH/s2/QaAV7dx
NOqIJMIgkId
/dpDtm3jcILEkKFX8MERpSrnZi/urgFHNIHUVsCUyGAKchI6AAZMo
LXYtUttCjCMxpkUHsTdxVlObCWt7dcOyT1M63vMwLuA

Первая строка: версия клиента, версия на сервере и размер обновления в байтах. Все пишется через пробел, вналаче строки идет знак диез (решетка) — #.

Далее список файлов. Каждая строка состоит из операции (! — обновить файл, + — добавить), md5-суммы, и пути файла. Путь файла преобразован с помощью base64, при том, что каждое имя папки или файла преобразуется отдельно, слеши преобразуются в дефисы, чтобы не было коллизий. Т.е. файл /Y29uZmlncw==/YmFkd29yZHMudHh0 равносилен файлу configs/badwords.txt.
Исходя из предыдущего примера понятно, что каждый pck-архив должен быть распакован.

Каждый файл папки element (либо launcher, либо patcher) расположен по адресу [Ссылки могут видеть только зарегистрированные пользователи. ] (либо [Ссылки могут видеть только зарегистрированные пользователи. ], либо [Ссылки могут видеть только зарегистрированные пользователи. ]), т.е. файл /Y29uZmlncw==/YmFkd29yZHMudHh0 находится [Ссылки могут видеть только зарегистрированные пользователи. ].
Если путь начинается со слеша, то это значит, что путь файлу лежит от корня директории (element, launcher или patcher), если не начинается со слеша, то файл лежит в предыдущей директории. Т.е. файл /ZGF0YQ==/Z3Nob3AuZGF0YQ== находится по адресу [Ссылки могут видеть только зарегистрированные пользователи. ], так же как и следующий за ним файл YXV0b2FkdmFuY2Vtb3VudGFpbjIuaHRm ([Ссылки могут видеть только зарегистрированные пользователи. ]).

Далее идет строка -----BEGIN ELEMENT SIGNATURE-----.
После нее начинается подпись.

Анализировать файлы files.md5 нет смысла. Там отсутствует номер клиентской версии, и знаки операций.
________________
  Ответить с цитированием
Пользователь сказал cпасибо:
smike999 (11.01.2012)
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 07:53.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net