AVG9: локальные базы с помощью ngnix и bash


_gaSh_ - Posted on 23 Июнь 2010

Заворачиваем запрос AVG на внутренний (aka локальный) сервер обновлений.

Выбор nginx`а обусловлен его умением проксировать и изменять запросы http без каких-либо дополнительных софтин.
Итак, приступим.

Далее 192.168.1.1 - адрес локального сервера.

nginx.conf :

# коментарии удалил для экономии места.
worker_processes  1;
events {
    worker_connections  1024;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
 
    # опишем перенаправляющий прокси
    server {
      listen 90;
      server_name proxy-avg;
#      access_log /tmp/proxy-avg.access.log;
#      error_log  /tmp/proxy-avg.error.log;
      location / {
        proxy_pass http://avgupd/;
#        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        root /var/local/avg;
        index index.html index.htm;
      }
    }
 
    # собственно сам сервер обновлений
    server {
      listen 80;
      server_name avgupd;
      access_log /tmp/avgupd.access.log;
      error_log  /tmp/avgupd.error.log;
      location / {
	# для платных версий
	rewrite ^.*softw/90/update/(.*)$ /$1 last;
	# для бесплатных версий
	#rewrite ^.*softw/90free/update/(.*)$ /$1 last;
        root /var/local/avg;
        index index.html index.htm;
      }
    }
 
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   /srv/http/www;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

Добавим avgupd в /etc/hosts.
Проверим: кидаем в /usr/local/avg файл, например test.txt и ставим в броузере проски 192.168.1.1:90.
Теперь пробуем скачать http://update.avg.com/softw/90/update/test.txt
Здесь, возможно, нужно будет разобраться с правами доступа

Отлично, теперь приступим к закачке обновлений:
avg_update.sh :

#!/bin/bash
 
DST="/var/local/avg"
WGET="wget -nv -c -N -o /dev/null"
 
cd $DST
 
# для бесплатных версий 
#URLUPD="http://guru.avg.com/softw/90free/update"
# для платных версий
URLUPD="http://update.avg.com/softw/90/update"
${WGET} "${URLUPD}/avg9infowin.ctf"
${WGET} "${URLUPD}/avg9infoavi.ctf"
 
sed -n '/\.bin/s/^bin(\([^\.]*\.bin\).*/\1/p' avg9infowin.ctf avg9infoavi.ctf | \
    xargs -I FILE ${WGET} ${URLUPD}/FILE
 
rm -f wget-log*
 
# удаляем ненужные файлы
ls *.bin > /tmp/binaries.list
sed -n '/\.bin/s/^bin(\([^\.]*\.bin\).*/\1/p' avg9infowin.ctf avg9infoavi.ctf | \
    xargs -I FILE sed -i "/FILE$/d" /tmp/binaries.list
cat /tmp/binaries.list | xargs -I FILE rm -f FILE
rm -f /tmp/binaries.list
 
#  здесь у меня добавлена еще упаковка в архив, 
#+ для быстрого скачивания по http для обновления на автономных машинах.
 
cd -

Теперь стоит сделать проверку самого AVG (выставить прокси 192.168.1.1:90 и обновить) и запихать в cron часов на 5 утра, чтобы не мешало работе.

Чистых компов вам, господа =)

/tnx 2 angel2s2/

Оо :)) Дружище, класс! Как раз на днях хотел этим вопросом заняться, для одной конторки. Сэкономил мне кучу времени и нервов :)))
Мега респект :))

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.