Скрипт по обновлению антивирусных баз NOD32 под Linux (PHP): различия между версиями

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску
(Версии скрипта)
(Что умеет скрипт.)
Строка 29: Строка 29:
 
==Что умеет скрипт.==
 
==Что умеет скрипт.==
 
Умеет все тоже, что и скрипт на bash, только работает быстрее, один скрипт может обновлять обе версии и можно использовать на любой платформе (сам не пробовал) .
 
Умеет все тоже, что и скрипт на bash, только работает быстрее, один скрипт может обновлять обе версии и можно использовать на любой платформе (сам не пробовал) .
#Обновляет базы с официальных и бесплатных серверов NOD32 (для официальных серверов нужно задать имя и пароль для обновления).
+
#Обновляет базы с официальных и бесплатных серверов NOD32 (для официальных серверов нужно задать имя и пароль для обновления). Причем, при обновлении с бесплатных серверов скрипт пробует обновится со всех серверов, указанных в update.ver и прекращает работу при первом удачном обновлении.
#Может работать через прокси сервер с аутентификацией и без нее (При работе через Прокси сервер с аутентификацией, используется программа wget для выкачивания файлов обновлений, в остальных случаях используются средства PHP).
+
#Может работать через прокси сервер с аутентификацией и без нее.
 
#Может отправлять сообщение на указанный п/я с информацией об ошибке или при удачном обновлении с изменением версии базы.
 
#Может отправлять сообщение на указанный п/я с информацией об ошибке или при удачном обновлении с изменением версии базы.
 
#Обновляет сразу базы для '''V2''' и '''V3''', но может и отдельно.
 
#Обновляет сразу базы для '''V2''' и '''V3''', но может и отдельно.

Версия 07:27, 8 июля 2009

Вот портировал скрипты по обновлению антивирусных баз NOD32 V2* и V3* в PHP.

Версии скрипта

Буду тут выкладывать описание версий с датами для более удобного отслеживания за изменениями

  1. Версия 1.9b от 11.07.2009
    1. Закачка через wget изменена на php-cURL.
    2. Добавлен тихий режим, без отправки сообщений в консоль, если критических ошибок нет
    3. Если сервер указан, то пытается обновится только с него. Если не указан сервер (это касается только тех кто обновляется с официальных серверов), то список серверов берется из update.ver и скрипт пробует обновить базы с каждого сервера из этого списка, пока не получится. А то иногда бывает проблема с серверами (похоже из-за их перегрузки) - то их видно, то нет.
  2. Версия 1.8 от 1.07.2009
    1. Добавлена возможность закачивать файлы через прокси сервер с аутентификацией и без нее.
    2. Добавлена возможность отсылки дополнительного письма об обновлении баз на указанный п/я, в случае ошибки или удачного обновления с изменением версии.
  3. Версия 1.7 от 24.06.2009
    1. Имя пользователя, от которого работает WEB сервер вынесено в setup.php
    2. В начале скрипта umask меняется на 0022, а после выполнения возвращается на ту, что была до его выполнения.
  4. Версия 1.6 от 19.06.2009
    1. Если происходит ошибка при выкачивании файла, то обновление сразу завершается и восстанавливает базу данной версии Нода, которая была до этого. Раньше скрипт пытался выкачивать остальные файлы, а потом все равно происходило восстановление.
  5. Версия 1.5 от 16.03.2009 Теперь можно обновлять базы для NOD32 V4.
    1. Добавлены секции, которых не было в вервии V3 [SYSTEMSTATUS0], [SYSTEMSTATUS1],[SYSTEMSTATUS2],[SYSTEMSTATUS640],[SYSTEMSTATUS641],[SYSTEMSTATUS642],[SELFDEFENSE0],[SELFDEFENSE1],[SELFDEFENSE2],[SELFDEFENSE640],[SELFDEFENSE641],[SELFDEFENSE642]. Обновляется только файл секций section.php.
  6. Версия 1.4 от 21.01.2009
    1. Исправлена ошибка записи имени файла в создаваемой update.ver, если этого файла еще не было.
  7. Версия 1.3 от 16.01.2009
    1. Если при обновлении NOD32 V2 происходила ошибка, то она не сбрасывалась и для NOD32 V3
    2. Не правильно формировался блок [data0001] в файле update.ver в NOD32 V3, если в этой секции встречался знак =.
    3. Убрано отображение некоторых ненужных сообщений.
  8. Версия 1.2 от 2.12.2008
    1. Исправлено удаление файла, если он уже не нужен
  9. Версия 1.1 от 18.11.2008
    1. Первая версия.

Что умеет скрипт.

Умеет все тоже, что и скрипт на bash, только работает быстрее, один скрипт может обновлять обе версии и можно использовать на любой платформе (сам не пробовал) .

  1. Обновляет базы с официальных и бесплатных серверов NOD32 (для официальных серверов нужно задать имя и пароль для обновления). Причем, при обновлении с бесплатных серверов скрипт пробует обновится со всех серверов, указанных в update.ver и прекращает работу при первом удачном обновлении.
  2. Может работать через прокси сервер с аутентификацией и без нее.
  3. Может отправлять сообщение на указанный п/я с информацией об ошибке или при удачном обновлении с изменением версии базы.
  4. Обновляет сразу базы для V2 и V3, но может и отдельно.
  5. Если на сервере названия файлов не совпадают с локальными - не качает, а переименовывает файлы.
  6. Сам создает файл update.ver. Те при обновлении с зеркал обновляются только компоненты с более новыми версиями.
  7. Автоматически создает папки, нужные для работы программы, в том числе и для Web сервера.
  8. Создает папку на веб сервере с файлами обновления.
  9. При ошибке обновления восстанавливает базу в том виде, которая была до обновления.

Скрипт автоматически создает папки для временного хранения копий баз /var/lib/nod32/mirror_V2 и /var/lib/nod32/mirror_V3 и загружает туда файлы антивирусных баз. Если обновление прошло успешно, то переписывает базы в WEB директорию, а если произошла ошибка, то наоборот, восстанавливает базы, переписывая их из WEB директории в папку временного хранения.

Спасибо Kode - использовал его функции. Так как не очень большой спец в PHP, то прошу не пинать, а если можно то помочь доработать.

Из чего состоит

  1. update.php - Сам скрипт
  2. function.php - Файл функций
  3. section.php - Файл описания секций
  4. setup.php - Файл установок

Инсталяция

  1. Устанавливаем пакеты php-cli.*.rpm и php-rar*.rpm.
    1. Если нет пакета php-rar*.rpm, можно установить RAR для Linux.
  2. Выкачиваем архив nod_upd_php_v1.8a.tar.bz2 и распаковываем в любой каталог, например, /etc/upd_prog/.
  3. Редактируем файл setup.php для каждого варианта антивируса - Устанавливаем:
    1. Измените, если нужно, путь до папки, где будут храниться временные файлы работы скрипта, например (define("DEFAULT_SAVE_PATH","/var/lib/nod32");).
    2. Отредактируйте, если нужно, имя пользователя от которого работает WEB сервер, например (define("HTTP_USER", "apache");).
    3. Если нужна, дополнительная отправка почты, то разкоментируйте строку с переменной $user_mail и укажите там нужный email. (Но при этом дб настроен и запущен почтовый сервер (postfix, sendmail или другой).)
    4. Если Вы хотите или должны использовать HTTP-Proxy, пожалуйста, разкоментируйте строку с переменной $proxy и укажите свои параметры Прокси сервера, например ($proxy = 'http://vasya:qwerty@www.rrr.ru:8080';)
    5. Если Вы используете Прокси сервер с аутентификацией (требуются имя и пароль для Прокси), то укажите путь до wget в переменной $wget.
    6. Если Вы используете Прокси сервер с аутентификацией и Вам не нужен вывод подробной информации от wget, то разкоментируйте строку с переменной $quiet. Вместо значения -q, можно установить -nv (см man wget).
    7. Адрес сервера, например ('host'=>'http://89.202.157.139/',)
    8. Web каталог для каждой версии баз, например ('www'=>'/var/www/nod32/',)
    9. Имя пользователя, например ('user'=>'EAV-06545664',) или ('user'=>' ',) - для бесплатных серверов
    10. Пароль, например ('password'=>'k3fp7ksv8e',) или ('password'=>' ',) - для бесплатных серверов
  4. Пробуем из под root запустить файл update.php.
  5. Теперь в crontab прописываем запуск скрипта
# Обновление баз NOD32*
00 09,15 * * * root /etc/upd_prog/update.php

и наслаждаемся автоматическим обновлением 2 раза в сутки

Настройка сервера Apache для доступа к базам по паролю