/nod32-update-mirror

Bash script for create and update Eset Nod32 Base

Primary LanguageShellMIT LicenseMIT

GitHub license Language

ESET Nod32 Update Mirror

English version available here.

Скрипт для создания зеркала баз обновлений антивируса "Eset Nod32". Для его полноценного функционирования потребуется:

  • bash (тестировался на версиях 4.1.11(2), 4.2.24(1) и 4.2.45(1)) или cygwin;
  • curl (тестировался на версиях 7.29.0, 7.37.0) или wget (тестировался на версиях 1.14, 1.15 и 1.18);
  • unrar (тестировался на версиях 3.39, 4.0 и 5.00 beta 3, для работы с официальными зеркалами);
  • sed, awk и некоторые другие "стандартные" приложения;
  • nginx (тестировался на версиях 1.6.3, 1.9.12 и 1.10.1 без каких-либо экзотических модулей).

Параметры запуска и дополнительные функции смотри запустив скрипт с флагом --help.

Console screenshot

Особенности

  • Не требует от системы каких-либо экзотических или ресурсоемких приложений, экономично относится к ресурсам системы;
  • Успешно работает с различными версиями антивирусов Eset Nod32 (для определения "рабочих" директорий различных версий Eset Nod32 используется проверки User-Agent и редиректы средствами nginx);
  • Умеет автоматически искать и использовать (поддерживая их список в актуальном состоянии) бесплатные ключи обновлений (ВНИМАНИЕ! ДАННЫЙ ФУНКЦИОНАЛ ТОЛЬКО ДЛЯ ОЗНАКОМЛЕНИЯ И ТЕСТИРОВАНИЯ РАБОТЫ! ИСПОЛЬЗУЙТЕ ТОЛЬКО ЛЕГАЛЬНО КУПЛЕННЫЕ КЛЮЧИ!)
  • Возможно размещение базы обновлений как в корневой директории домена, так и в произвольной под-директории (потребуется самостоятельно переписать пути в файле конфигурации nginx);
  • При указании не официальных серверов обновлений (их можно указывать до 10 шт.) и возникновении ошибки в процессе с первого указанного сервера - обновление произойдет со второго, иначе - с третьего, и так далее;
  • Реализована возможность скачивать обновления только для определенных программных продуктов, платформ, языков и версий Eset Nod32;
  • Поддерживается отладочный режим работы для быстрого выявления источников возможных проблем;
  • Пишет подробный лог;
  • Возможно указание лимитов скорости и задержек при скачивании файлов обновлений;
  • При завершении обновления пишет в отдельные файлы версию базы обновлений и дату обновления (имена файлов настраиваются);
  • Скачивает только обновленные файлы.

Установка

Для примера рассмотрим установку на чистый дистрибутив CentOS 7 (от других дистрибутивов будет лишь отличаться менеджером пакетов, расположением некоторых конфигов и методом установки unrar).

  • Переходим в домашнюю директорию:
$ cd ~
  • Ставим необходимые пакеты:
$ sudo yum -y install epel-release 
$ sudo yum -y install nano wget curl git nginx # Только после установки epel-release
$ wget -O unrar.rpm http://pkgs.repoforge.org/unrar/unrar-5.0.3-1.el6.rf.$(arch).rpm
$ sudo rpm -Uvh ./unrar.rpm && rm -f ./unrar.rpm
  • Клонируем данный репозиторий:
$ git clone https://github.com/tarampampam/nod32-update-mirror.git
  • Переместим директорию с веб-интерфейсом в /usr/share/nginx/, и в последствии её будем использовать как хранилище файлов зеркала (доступную через web, разумеется):
$ mv ./nod32-update-mirror/webroot /usr/share/nginx/nod32mirror
  • Перейдем к настройке nginx, для чего возьмем пример конфигурации и поправим его:
$ sudo cp ./nod32-update-mirror/nginx.server.conf /etc/nginx/conf.d/nod32mirror.conf
$ nano /etc/nginx/conf.d/nod32mirror.conf
# Выставляем:
#   listen 80;
#   server_name %имя_домена_полностью%; или комментируем эту строку, если необходимо чтоб доступ к зеркалу был просто IP адресу сервера
#   root /usr/share/nginx/nod32mirror;
  • Если server_name не был указан выше, то необходимо удалить или закомментировать виртуальный сервер nginx "по умолчанию", для чего выполняем:
$ sudo nano /etc/nginx/nginx.conf
# Удаляем или комментируем секцию 'server', так как иначе сервер будет отвечать 'заглушкой'
  • После чего тестируем конфигурацию, и если всё хорошо - то говорим nginx перечитать свои конфиги:
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo nginx -s reload
  • Открываем в браузере указанный server_name (или его IP адрес), проверяем корректное отображение веб-интерфейса;

Опционально: Можно загрузить свои дистрибутивы антивируса Eset Nod32 в директорию /usr/share/nginx/nod32mirror/download и поправить файл /usr/share/nginx/nod32mirror/webface/index.html, указав в nod32button.settings.download.links имена файлов дистрибутивов, и установив nod32button.settings.download.enabled в true. Таким образом посетители зеркала смогут не только получать с него обновления, но и скачать необходимые (или уже преднастроенные на это самое зеркало) дистрибутивы при его посещении.

  • Создаем директорию в которой будет располагаться скрипт, и перемещаем его директорию в неё:
$ NOD_SCRIPTS_DEST=~/scripts
$ mkdir -p "$NOD_SCRIPTS_DEST"
$ mv ./nod32-update-mirror/nod32-mirror "$NOD_SCRIPTS_DEST"
  • Дадим скриптам право исполняться:
$ find "$NOD_SCRIPTS_DEST" -type f -name '*.sh' -exec chmod +x {} \;
  • Создадим копию конфига, и поправим её под наши нужды (работать именно с копией необходимо для того, что бы при очередном обновлении скрипта не пришлось переписывать его настройки):
$ cp $NOD_SCRIPTS_DEST/nod32-mirror/settings.conf $NOD_SCRIPTS_DEST/nod32-mirror/conf.d/default.conf
$ nano $NOD_SCRIPTS_DEST/nod32-mirror/conf.d/default.conf
# Выставляем:
#   export NOD32MIRROR_USE_FREE_KEY=1;
#   export NOD32MIRROR_MIRROR_DIR="/usr/share/nginx/nod32mirror";
#   export NOD32MIRROR_LOG_PATH="$HOME/nod32mirror.log";
  • Указание в конфигурации использовать бесплатный ключ -- лишь для проверки работоспособности! После всех проверок, пожалуйста, приобретите лицензионный ключ и используйте только его, для чего укажите его в NOD32MIRROR_SERVER_0 с установкой значения NOD32MIRROR_USE_FREE_KEY в 0.
  • Выполняем пробный запуск:
$ $NOD_SCRIPTS_DEST/nod32-mirror/nod32-mirror.sh
# Если всё хорошо, то:
$NOD_SCRIPTS_DEST/nod32-mirror/nod32-mirror.sh --get-key
# Если период тестирования несколько затянется и один или все ключи потеряют актуальность - скрипт автоматически найдет новые. Если на этом шаге тоже всё хорошо, то:
$ $NOD_SCRIPTS_DEST/nod32-mirror/nod32-mirror.sh --update
  • После чего должно успешно запуститься обновление. По его завершению следует проверить корректность обновления антивирусов Eset Nod32, настроенными на только что созданное зеркало обновлений.
  • Удаляем лишнее:
$ rm -Rf ./nod32-update-mirror/

Для автоматизации обновления добавляем следующую строку в крон:

0 */3 * * * nice -n 15 bash ~/scripts/nod32-mirror/nod32-mirror.sh --update

Внимание: Необходимо указывать полный путь к скрипту.

У меня не работает!

Если у вас возникнут проблемы с запуском - вы всегда можете сообщить нам об этом. К сообщению обязательно прикладывайте содержимое файлов конфигураций, версии используемого ПО (cat /proc/version, bash --version, wget -V, curl -V), и вывод работы скрипта в не измененном виде!

Настройка скрипта

Все настройки указываются в файле settings.conf. Каждая опция сопровождается подробным описанием и примером использования. Пожалуйста, будьте внимательны при его настройке.

Так же вы можете разместить свои конфигурации в директории ./nod32-mirror/conf.d с произвольными именами, но обязательно с расширением *.conf.

Настройка веб-интерфейса

Web-interface screenshot

Веб-интерфейс представляет из себя страницу, выполненную в минималистичном стиле, которая выводится вместо списка файлов зеркала обновления. Возможно его настроить таким образом, что при клике на логотип будет скачиваться необходимый дистрибутив (если указан какой-то один, не зависимо от указания его разрядности), или предоставляться выбор пользователю (выбрать в соответствии с разрядностью его операционной системы). Так же по умолчанию настроен вывод крайней даты обновления зеркала и версии антивирусной базы (при наведении курсора на логотип и наличии соответствующих настроек). Настройки производятся путем правки файла ./webroot/webface/index.html.

История изменений

История изменений доступна по этой ссылке.

Ссылки

Лицензия MIT

Copyright (c) 2014-2016 <github.com/tarampampam>

Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:

Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения.

ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.