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

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску
(Версии скрипта)
(Версии скрипта)
Строка 2: Строка 2:
 
==Версии скрипта==
 
==Версии скрипта==
 
Буду тут выкладывать описание версий с датами для более удобного отслеживания за изменениями
 
Буду тут выкладывать описание версий с датами для более удобного отслеживания за изменениями
 +
#'''Версия 1.12d''' от 25.09.2009
 +
## Попробовал исправить большинство ошибок при error_reporting = E_ALL в php.ini.
 +
## Добавлены новые секции для закачки
 
#'''Версия 1.11''' от 10.09.2009
 
#'''Версия 1.11''' от 10.09.2009
 
## Исправлено несколько синтаксических ошибок.
 
## Исправлено несколько синтаксических ошибок.

Версия 09:36, 25 сентября 2009

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

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

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

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

Инсталяция

Установка UNRAR

Внимание: Эту программу нужно выполнять только прио отсутствии расширения php-rar
1. Идем на сайт https://gna.org/projects/unrar/ далее в Download и выкачиваем архив unrar-0.0.1.tar.gz.
2. Распаковываем его и устанавливаем.

cp  unrar-0.0.1.tar.gz /usr/local/src
cd /usr/local/src
tar -xzf  unrar-0.0.1.tar.gz
cd unrar-0.0.1
./configure
make
make install

После этого архиватор unrar будет в каталоге /usr/local/bin

Установка php расширений

  1. Устанавливаем пакеты php-cli.*.rpm и php-rar*.rpm. Для версии 1.9в нужен php-curl*.rpm.

Установка скрипта

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

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

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