PVD Update Manager v1.0
Программа предназначена для обновления директорий/файлов и структуры базы MySQL на сервере клиента. Конфигурирование сервера и клиента, а так же передача информации для обновления происходит посредством XML.
Серверная часть.
Файлы:
0644 .htaccess - файл обработки
авторизаций пользователей
<DIR> 0644 .htaction - модули сервера
0644 401.pl
0644 user_get_file.pl
0644 user_get_xml.pl
<DIR> 0644 .htsql - хранилище SQL схем
0755 update_server.pl - скрипт сервера
0644 update_server.xml - файл конфигурации сервера
Файл настроек.
<conf>
Административная информация.
<!-- общий путь к файлам -->
<repository>/path/to/files/repository</repository>
<!-- дополнительные именные репозитории (для каждого клиента
можно установить отдельно, а так же есть сверка по именам - что
можно и что нельзя скачивать)-->
<anyfiles>
<repository>E:/Apache/u/updater/cgi-bin/client/test/a1</repository>
<name>a1</name>
</anyfiles>
<anyfiles>
<repository>E:/Apache/u/updater/cgi-bin/client/test/a2</repository>
<name>a2</name>
</anyfiles>
<!-- доступ администратора -->
<admin>
<login>admin</login>
<passw>admin</passw>
<mysql>
<!-- файл схемы базы MySQL -->
<scheme>./.htsql/scheme.xml</scheme>
<!-- ИЛИ параметры доступа к базе -->
<host></host>
<login></login>
<passw></passw>
<base>ns</base>
</mysql>
</admin>
<!-- файлы которые не используются для передачи -->
<protect>^.ht</protect>
<protect>^index.cfg$</protect>
<!-- клиенты -->
<client>
<!-- URL клиентского скрипта (info only) -->
<url>http://clienturl/cgi-bin/client/update_client.pl</url>
<!-- login клиента (mandatory) -->
<login>client1</login>
<!-- password клиента (mandatory) -->
<passw>client1</passw>
<!-- истечение срока доступа (info only) -->
<expire></expire>
<!-- доступ к MySQL схеме или базе
(берется от conf->admin если не определено) -->
<mysql>
<!-- файл схемы базы MySQL -->
<scheme>./.htsql/scheme.xml</scheme>
<!-- ИЛИ параметры доступа к базе -->
<host></host>
<login></login>
<passw></passw>
<base>ns</base>
</mysql>
</client>
<client>
...
</client>
...
</conf>
Клиентская часть.
Файлы:
<DIR> 0777 logs - директория хранения лог файлов
0755 update_client.pl
0644 update_client.xml
Файл настроек.
<conf>
<repository>/path/for/compare/and/update</repository>
<anyfiles>
<repository>E:/Apache/u/updater/cgi-bin/client/test/a1</repository>
<name>a1</name>
</anyfiles>
<anyfiles>
<repository>E:/Apache/u/updater/cgi-bin/client/test/a2</repository>
<name>a2</name>
</anyfiles>
<url>http://updater/cgi-bin/server/update_server.pl</url>
<login>client1</login>
<passw>client1</passw>
<mysql>
<host></host>
<login></login>
<passw></passw>
<base>client</base>
</mysql>
<logs>./logs</logs>
</conf>
Принцип работы.
Клиентский скрипт обращается на URL сервера (скрипта) обновления. Получает XML схему списка файлов/директорий и схему базы. Проходится по директориям, сверяет файлы по размеру, если не совпадает - выкачивает с сервера, если нету - выкачивает, так же создает директории и расставляет разрешения если не совпадает с тем, что указано в схеме. Далее идет проверка MySQL базы, если есть доступ к ней, в противном случае пропускает и завершается. Если же есть доступ к базе - коннектится к ней, достает схему базы клиента и сверяет с присланной схемой сервера. Далее создает нехватающие таблицы, при существовании таблиц - сравнивает информацию о полях, недостающие добавляет, не одинаковые - обновляет. Затем идет сверка ключей таблиц, все так же проверяется и добавляются/удаляются/изменяются в зависимости от того чем отличаются.
Настройки клиентов.
На сервере, для каждого клиента, можно отдельно задать:
путь к файлам для сравнения
доступ к базе или путь к схеме базы для сравнения
логин и пароль доступа к серверу для обновления Все эти параметры так же имеют значения поумолчанию для всех, если для какого то клиента вы не указываете их то используются общие.
|