Skip to content

dango/nod32-update-mirror

 
 

Repository files navigation

ESET Nod32 Update Mirror

Скрипт создания и обновления зеркала антивируса Eset Nod32 под Linux, как с бесплатных серверов, так и официальных (для обновления с официальных серверов требуется установленный unrar). Требования к системе, на которой разворачивается:

  • Bash (тестировал на версиях 4.1.11(2) и 4.2.24(1) - полет без ошибок);
  • Apache для раздачи файлов и показа морды (опционально, тестировалось на версии 1.3.42)
  • Наличие и разрешение на запуск 'curl' (проверка состояния источника), 'wget' (скачивание файлов), 'rm', 'mkdir', 'mv' и 'unrar' (для работы с официальными зеркалами)

alt tag

Некоторые особенности:

  1. Работает как с официальными серверами, так и "пиратскими";
  2. Не требует вывода индекса (списка файлов) для того, чтоб забрать файлы обновлений;
  3. Разбирает 'update.ver' и создает новый (разные сервера по разному указывают пути к файлам обновлений - встречал полные пути, относительные, только имена файлов);
  4. Имеет возможность проверки под-директорий (иногда разные сервера хранят под разные версии обновления в разных под-директориях);
  5. Имеет возможность не скачивать сами файлы обновлений, а лишь поддерживать в актуальном виде 'update.ver'. Удобно, если раздающий обновления сервер имеет ограниченный траффик, или недостаточно ресурсов. Такая штука работает, на удивление, даже с официальными серверами - доступ у них по прямым ссылкам к файлам без авторизации (скорее всего - баг, и будет через какое-то время исправлен);
  6. Всегда используется User-Agent самого антивируса (по крайней мере - очень похожий и проходящий валидацию). Более того, при каждом запуске скрипта некоторые его части (номера версий) случайным образом генерируются, так что идентифицировать скрипт в общей куче становится ещё сложнее;
  7. Настройки лимитов скорости и паузы между запросами вынесены в секцию настроек (удобно снизить нагрузку на канал и сервер);
  8. Подробные комментарии (на ломаном английском) и приятный, подробный вывод;
  9. Скачивает только обновленные файлы;
  10. Работает без проблем на Apache версии 1.3.x, выводит приятную взгляду мордашку (в которую встраиваются ссылки на дистрибутивы, какая-либо информация для пользователей, etc.);

Алгоритм работы в двух словах:

  1. Проверяем доступность серверов (запрашивая файл 'update.ver' по указанному адресу) по порядку, указанному в настройках;
  2. При подтверждении доступности сервера - скачиваем и разбираем файл 'update.ver' выковыривая имена файлов. После чего пишем новый 'update.ver' (без путей к файлам), и 'wget'-ом выкачиваем файлы, выковыренные ранее (только обновленные). Если необходимо (опция 'createLinksOnly') - создаем только файл 'update.ver' с ссылками на оригинальные расположения файлов, не скачивая сами файлы обновлений;
  3. Проверяем под-директории из списка, указанного в настройках (алгоритм как в предыдущем пункте);
  4. Убираем за собой, создаем файл-временную метку и 'robots.txt', запрещающий индексацию.

Код не самый лучший, но хорошо откомментирован и работает.

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

  • 0.3.2 - Незначительные поправки
  • 0.3.1 - Добавлен "цветной" вывод сообщений, добавлена опция 'createLinksOnly' которая позволяет НЕ скачивать все файлы обновления целиком, а только лишь указывать ссылки на них в 'update.ver'. Улучшено комментирование кода, исправлена пара мелких ошибок, выявленных после теста на боевом сервере. Мелкие исправления
  • 0.3 - Полностью переписан bash скрипт, иной алгоритм работы
  • 0.2.5-sh - PHP версия более не поддерживается, скрипт переписан на bash
  • 0.2.5 - Масса мелких исправлений в .htaccess и верстке
  • 0.2.4 - Релиз на гитхабе

Оформление внешнего вида

Используется возможность модуля 'mod_autoindex.c' сервера 'Apache'. Для настройки вывода редактируются 3 файла:

  • .htaccess - 'IndexOptions' и прочие директивы, отвечающие за вывод листинга
  • .header.html - Верстка перед выводом листинга
  • .footer.html - Верстка после листинга

Hint: Листинг файлов выводится при клике на лого. Верстка оптимизирована даже под мобильные девайсы (зачем?!)

Настройки

  • update_nod32_mirror.sh - Секция настроек обновления в начале файла
  • .htaccess - Ограничение доступа к зеркалу и прочие настройки

Автоматизация - Добавьте запуск скрипта в 'cron' с интервалом запуска 2..3 раза в сутки

Ссылки

Пост в блоге об этом хабе

Make love, not war!

About

Web application for update Eset Nod32 base

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published