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
.
Особенности
- Не требует от системы каких-либо экзотических или ресурсоемких приложений, экономично относится к ресурсам системы;
- Успешно работает с различными версиями антивирусов 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
.
Настройка веб-интерфейса
Веб-интерфейс представляет из себя страницу, выполненную в минималистичном стиле, которая выводится вместо списка файлов зеркала обновления. Возможно его настроить таким образом, что при клике на логотип будет скачиваться необходимый дистрибутив (если указан какой-то один, не зависимо от указания его разрядности), или предоставляться выбор пользователю (выбрать в соответствии с разрядностью его операционной системы). Так же по умолчанию настроен вывод крайней даты обновления зеркала и версии антивирусной базы (при наведении курсора на логотип и наличии соответствующих настроек).
Настройки производятся путем правки файла ./webroot/webface/index.html
.
История изменений
История изменений доступна по этой ссылке.
Ссылки
Лицензия MIT
Copyright (c) 2014-2016 <github.com/tarampampam>
Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:
Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения.
ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.