Скрипт по обновлению антивирусных баз NOD32 под Linux (PHP): различия между версиями
Misha (обсуждение | вклад) (→Версии скрипта) |
Misha (обсуждение | вклад) (→Что умеет скрипт.) |
||
Строка 27: | Строка 27: | ||
#Обновляет базы с официальных и бесплатных серверов NOD32 (для официальных серверов нужно задать имя и пароль для обновления). | #Обновляет базы с официальных и бесплатных серверов NOD32 (для официальных серверов нужно задать имя и пароль для обновления). | ||
#Может работать через прокси сервер с аутентификацией и без нее (При работе через Прокси сервер с аутентификацией, используется программа wget для выкачивания файлов обновлений, в остальных случаях используются средства PHP). | #Может работать через прокси сервер с аутентификацией и без нее (При работе через Прокси сервер с аутентификацией, используется программа wget для выкачивания файлов обновлений, в остальных случаях используются средства PHP). | ||
− | #Может отправлять сообщение на указанный п/я с информацией | + | #Может отправлять сообщение на указанный п/я с информацией об ошибке или при удачном обновлении с изменением версии базы. |
#Обновляет сразу базы для '''V2''' и '''V3''', но может и отдельно. | #Обновляет сразу базы для '''V2''' и '''V3''', но может и отдельно. | ||
#Если на сервере названия файлов не совпадают с локальными - не качает, а переименовывает файлы. | #Если на сервере названия файлов не совпадают с локальными - не качает, а переименовывает файлы. |
Версия 12:22, 1 июля 2009
Вот портировал скрипты по обновлению антивирусных баз NOD32 V2* и V3* в PHP.
Содержание
Версии скрипта
Буду тут выкладывать описание версий с датами для более удобного отслеживания за изменениями
- Версия 1.8 от 1.07.2009
- Добавлена возможность закачивать файлы через прокси сервер с аутентификацией и без нее.
- Добавлена возможность отсылки дополнительного письма об обновлении баз на указанный п/я, в случае ошибки или удачного обновления с изменением версии.
- Версия 1.7 от 24.06.2009
- Имя пользователя, от которого работает WEB сервер вынесено в setup.php
- В начале скрипта umask меняется на 0022, а после выполнения возвращается на ту, что была до его выполнения.
- Версия 1.6 от 19.06.2009
- Если происходит ошибка при выкачивании файла, то обновление сразу завершается и восстанавливает базу данной версии Нода, которая была до этого. Раньше скрипт пытался выкачивать остальные файлы, а потом все равно происходило восстановление.
- Версия 1.5 от 16.03.2009 Теперь можно обновлять базы для NOD32 V4.
- Добавлены секции, которых не было в вервии V3 [SYSTEMSTATUS0], [SYSTEMSTATUS1],[SYSTEMSTATUS2],[SYSTEMSTATUS640],[SYSTEMSTATUS641],[SYSTEMSTATUS642],[SELFDEFENSE0],[SELFDEFENSE1],[SELFDEFENSE2],[SELFDEFENSE640],[SELFDEFENSE641],[SELFDEFENSE642]. Обновляется только файл секций section.php.
- Версия 1.4 от 21.01.2009
- Исправлена ошибка записи имени файла в создаваемой update.ver, если этого файла еще не было.
- Версия 1.3 от 16.01.2009
- Если при обновлении NOD32 V2 происходила ошибка, то она не сбрасывалась и для NOD32 V3
- Не правильно формировался блок [data0001] в файле update.ver в NOD32 V3, если в этой секции встречался знак =.
- Убрано отображение некоторых ненужных сообщений.
- Версия 1.2 от 2.12.2008
- Исправлено удаление файла, если он уже не нужен
- Версия 1.1 от 18.11.2008
- Первая версия.
Что умеет скрипт.
Умеет все тоже, что и скрипт на bash, только работает быстрее, один скрипт может обновлять обе версии и можно использовать на любой платформе (сам не пробовал) .
- Обновляет базы с официальных и бесплатных серверов NOD32 (для официальных серверов нужно задать имя и пароль для обновления).
- Может работать через прокси сервер с аутентификацией и без нее (При работе через Прокси сервер с аутентификацией, используется программа wget для выкачивания файлов обновлений, в остальных случаях используются средства PHP).
- Может отправлять сообщение на указанный п/я с информацией об ошибке или при удачном обновлении с изменением версии базы.
- Обновляет сразу базы для V2 и V3, но может и отдельно.
- Если на сервере названия файлов не совпадают с локальными - не качает, а переименовывает файлы.
- Сам создает файл update.ver. Те при обновлении с зеркал обновляются только компоненты с более новыми версиями.
- Автоматически создает папки, нужные для работы программы, в том числе и для Web сервера.
- Создает папку на веб сервере с файлами обновления.
- При ошибке обновления восстанавливает базу в том виде, которая была до обновления.
Скрипт автоматически создает папки для временного хранения копий баз /var/lib/nod32/mirror_V2 и /var/lib/nod32/mirror_V3 и загружает туда файлы антивирусных баз. Если обновление прошло успешно, то переписывает базы в WEB директорию, а если произошла ошибка, то наоборот, восстанавливает базы, переписывая их из WEB директории в папку временного хранения.
Спасибо Kode - использовал его функции. Так как не очень большой спец в PHP, то прошу не пинать, а если можно то помочь доработать.
Из чего состоит
- update.php - Сам скрипт
- function.php - Файл функций
- section.php - Файл описания секций
- setup.php - Файл установок
Инсталяция
- Устанавливаем пакеты php-cli.*.rpm и php-rar*.rpm.
- Если нет пакета php-rar*.rpm, можно установить RAR для Linux.
- Выкачиваем архив nod_upd_php_v1.8.tar.bz2 и распаковываем в любой каталог, например, /etc/upd_prog/.
- Редактируем файл setup.php для каждого варианта антивируса - Устанавливаем:
- Измените, если нужно, путь до папки, где будут храниться временные файлы работы скрипта, например (define("DEFAULT_SAVE_PATH","/var/lib/nod32");).
- Отредактируйте, если нужно, имя пользователя от которого работает WEB сервер, например (define("HTTP_USER", "apache");).
- Если нужна, дополнительная отправка почты, то разкоментируйте строку с переменной $user_mail и укажите там нужный email. (Но при этом дб настроен и запущен почтовый сервер (postfix, sendmail или другой).)
- Если Вы хотите или должны использовать HTTP-Proxy, пожалуйста, разкоментируйте строку с переменной $proxy и укажите свои параметры Прокси сервера, например ($proxy = 'http://vasya:qwerty@www.rrr.ru:8080';)
- Если Вы используете Прокси сервер с аутентификацией (требуются имя и пароль для Прокси), то укажите путь до wget в переменной $wget.
- Если Вы используете Прокси сервер с аутентификацией и Вам не нужен вывод подробной информации от wget, то разкоментируйте строку с переменной $quiet. Вместо значения -q, можно установить -nv (см man wget).
- Адрес сервера, например ('host'=>'http://89.202.157.139/',)
- Web каталог для каждой версии баз, например ('www'=>'/var/www/nod32/',)
- Имя пользователя, например ('user'=>'EAV-06545664',) или ('user'=>' ',) - для бесплатных серверов
- Пароль, например ('password'=>'k3fp7ksv8e',) или ('password'=>' ',) - для бесплатных серверов
- Пробуем из под root запустить файл update.php.
- Теперь в crontab прописываем запуск скрипта
# Обновление баз NOD32* 00 09,15 * * * root /etc/upd_prog/update.php
и наслаждаемся автоматическим обновлением 2 раза в сутки