Вы скажете, что есть функция обновления из локальной папки. Функция-то есть, но реализована она крайне неудобно и вот почему:
При обновлении антивирусных баз из интернета, фактически, не требуется никаких вмешательств пользователя. Все что он увидит - 3 выскакивающих и самозакрывающихся окошка. Это - плюс. А при обновлении из папки, даже если установлена галка “Do not ask for the update source”, он все равно предложит выбрать каталог из списка. Все бы хорошо, но когда этот антивирус установлен в организации на 30 машинах и каждый из 30 чайников начинает звонить мне и спрашивать: “Тут выскочила фигня такая…”, пытаться прочесть мне текст, не зная английского… Сами понимаете - напрягает.
Наша организация выходит в интернет через прокси. Маршрутизатор на Debian 4 r1, сам проксик - squid. Поэтому было решено воспользоваться возможностью редиректа. В squid.conf:
redirect_program /usr/local/bin/redirector.plЗная, что по умолчанию АVG 8 версии обращается на адрес http://guru.grisoft.com/softw/80free/update/ можно изготовить и сам скрипт redirector.pl:
#!/usr/bin/perlКак результат: запрос на получение обновлений с http://guru.grisoft.com/softw/80free/update будет автоматически перенаправлен по соответствующему URL на локальный веб-сервер организации с IP 192.168.1.16.
$|=1;
while (<>)
{
s@http://guru.grisoft.com/softw/80free/update@http://192.168.1.16/avg_bases@;
print;
}
Веб-сервер должен быть установлен и настроен.
Теперь о том, как забирать файлы с сервера обновлений AVG:
Update manager AVG получает файл avginfoavi.ctf, парсит его и загружает нужные файлы. В соответствие с этим мы должны создать зеркало сервера обновлений. Нижеприведенный скрипт получает файл avginfo.ctf, извлекает из него имена файлов с обновлениями и загружает их в папку на сервере:
#!/bin/shДля работы скрипта необходим wget, также, если требуется, нужно испавить путь до wget-a. Ставим скрипт в крон, периодичность - по усмотрению.
WORKDIR=/home/corning/public_html/avg_bases
AVGUPD_URL=http://guru.grisoft.com/softw/80free/update
/bin/mkdir -p $WORKDIR
/usr/bin/wget -q -O $WORKDIR/avginfoavi.ctf $AVGUPD_URL/avginfoavi.ctf
if [ ! -e $WORKDIR/avginfoavi.ctf ]; then
echo "Error downloading AVG update filelist"
exit
fi
for file in `grep -o "[[:alnum:]]*.bin" $WORKDIR/avginfoavi.ctf`
do
if [ ! -e $WORKDIR/$file ]; then
/usr/bin/wget -q -O $WORKDIR/$file $AVGUPD_URL/$file
fi
done
Статья переделана под 8 версию антивируса. Оригинал для 7 версии тут: http://home.onego.ru/~rti/2007/03/01/35/