tarampampam / nod32-update-mirror

:large_orange_diamond: [WIP] ESET Nod32 Updates Mirror
MIT License
108 stars 50 forks source link

Улучшение функционала и fix era update #59

Closed pifpaf001 closed 6 years ago

pifpaf001 commented 7 years ago

Добрый день!

Столкнулся с проблемой и придумал улучшение.

1. Bug: Отмена редиректов для ERA

Проблема: Если на зеркало обновлений направить ERA, то реврайты nginx отправляют запросы в подпапки, т.к. User Agent так же содержит строку BPC. Пример user-agent от ERA ERA Update (Windows; U; 32bit; RMV 1034; RAV 5.2.22.0; OS: 6.1.7601 SP 1.0 NT; Mirror; TDB 31643; x64c; APP era; PX 0; HWF: 54545654-B2BF-7539-7434-5757878452157; PLOC ru_ru; RAF 1.0.0.1.; BPC 5.2.22.0; RACL 23.0.5; RALG 46.0.9964.71.0.0.0.0.54.0; RART 0.0.0; RARI 0.-1; RAGR 0.0.0; RAPL 4; RANT 30; RARP 0; RAUP 1; RATS 3.23361) Разница с обновлениями клиентов только в начале строки. Клиенты сообщают ESS Update, ERA сообщает ERA Update Для ERA необходимо отменить редирект на подпапки. Ей должны быть доступны все версии (по сути она сама является зеркалом). Как исправить - не знаю (не силен в регулярных выражениях).

2. Improve: Уменьшение частоты обращений к серверам ESET

В среднем ESET выпускает обновления 4 раза в сутки, но все зависит от вирусной активности. Предлагаю перед запуском обновления сверять версию скачанных БД сигнатур. Например:

#!/bin/bash

bdlocal=$(cat /var/www/version.txt | awk '{print $1}')
bdremote=$(curl -s http://virusradar.com/en/update/info/latest | grep -oP "(?<=\<h1\>Update )[0-9]+")

if [ "$bdlocal" == "$bdremote" ]; then
       выход и ничего не делаем
    else
      обновляемся
fi

с башем тоже пока очень плохо. При таком подходе можно запускать скрипт хоть каждые 10 минут, но качать обновления только по необходимости (тем самым мы ускорим доставку на конечных клиентов). Можно сделать на уровне конфига.

Вообще, лучше смотреть свежую версию на http://virusradar.com/en/update/info Я просто заметил, что если после /info добавить /blalbla (например, http://virusradar.com/en/update/info/blablabla) то идет редирект на последнее обновление. Там мне было легче спарсить номер.

3. Bug: Скачивать файлы в папку tmp.

Если клиент запросит обновления БД во время синхронизации зеркала с серверами ESET, то получается ошибка обновления баз 0x1106. К сожалению, в некоторых случаях, чтобы обновления снова заработали, нужно очистить кэш обновлений. На удаленных клиентах это не всегда возможно. Скачивание новых и обновленных файлов в папку tmp, а затем их разовое копирование в зеркало существенно снизит частоту возникновения подобных ситуаций.

С уважением!

stale[bot] commented 6 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.