vamos ver oq conseguimos ;)
Versão Imprimível
vamos ver oq conseguimos ;)
fudido o windows update meu deus parece que ele faz por streaming!
achei isso na net!
se desse para imendar no nosso!
pelo que deu pra entender usa uma pasta no apache faz download pra lá de tudo
depois por dns ele vai redirecionando pra pasta interna
como um SUB-cache!
# byron jones
# public domain
# fixed bug .. now prints blank line if there's no change
# fixed bug .. removed psf from extension list
# fixed weirdness .. "next" on some flavours of perl wasn't "next"ing
# fixed v5 issue by not caching iuident.cab (thanks marvi benedet)
$| = 1;
my $cache_path = '/usr/local/apache/htdocs/cache/store';
my $cache_url = 'http://10.0.0.254:8000/cache/store';
my $downloader = '/usr/local/apache/htdocs/cache/download';
URL: while(<>) {
# grab url (first word)
($url) = /^(\S+)/;
$orig_req = $_;
$orig_url = $url;
# decode
$url =~ tr|+| |;
$url =~ s|%([a-fA-F0-9][a-fA-F0-9])|pack("C", hex($1))|ge;
$url =~ s/\000+$//; # trailing nulls
# check cache store
{
my $url = $orig_url;
$url =~ s#^http://##i;
$url =~ s/^www\.//i;
if($url !~ /iuident\.cab/ && -e "$cache_path/$url" && !-d "$cache_path/$url" && !-e "$cache_path/$url.downloading") {
open(FH, ">>$cache_path/../log");
print FH '[', scalar localtime, '] ';
print FH "cachehit ", -s "$cache_path/$url", " $url\n";
close FH;
# s|^\S+|$cache_url/$url|;
print "$cache_url/$url\n";
next URL;
}
}
# cache windows update and other bits
if(!/^\Q$cache_url/i) {
if(
(
# any microsoft cab (windowsupdate, officeupdate, msdn, etc)
m#^http://(.*?\.microsoft\.com\S+\.(cab|exe))\b#i
|| m#^http://(.*?\.windowsupdate\.com\S+\.(cab|exe))\b#i
|| m#^http://(.*?mssjus\.www\.conxion\.com\S+\.(cab|exe))\b#i
# quicktime
|| m#^http://(.*?qtinstall\.apple\.com\S+\...|idx|dat))\b#i
# java
|| m#^http://(.*?java\.sun\.com\S+\.(cab|exe))\b#i
# adobe acrobat
|| m#^http://(.*?ardownload\.adobe\.com\S+...x|gz|exe))\b#i
)
&& !(m#iuident\.cab\b#i)
) {
my $url = $1;
$url =~ s/^www\.//i;
if(-e "$cache_path/$url" && !-e "$cache_path/$url.downloading") {
open(FH, ">>$cache_path/../log");
print FH '[', scalar localtime, '] ';
print FH "cachehit ", -s "$cache_path/$url", " $url\n";
close FH;
# s|^\S+|$cache_url/$url|;
print "$cache_url/$url\n";
next URL;
} else {
system("$downloader $url 2>&1 >/dev/null &");
}
}
}
# no change
print "\n";
}
__END__
1000355322.691 106912 JIMMY.internal TCP_MISS/200 14884044 GET http://www.download.windowsupdate.co...D5BF46A97.exe? - DIRECT/203.102.129.100 application/octet-stream
quanto ao AVG vo precisar de mais uma ajudinha!!!!
saca soh
o avg tem esses hosts aki:
guru.avg.com
downloadfree.avg.com
akamai.avg.com
e esse aqui que cria uma subpasta que eh o
update.avg.com
fiz isso aki e ambos funcionam:
if ($url =~ /^http:\/\/guru.avg.com/) {
$url =~ s/guru/downloadfree/;
print $fh "saida: $url\n";
print "$url\n";
}
if ($url =~ /^http:\/\/akamai.avg.com/) {
$url =~ s/akamai/downloadfree/;
print $fh "saida: $url\n";
print "$url\n";
}
só que olha soh a diferença dos 3 hosts guru , akamai e download free pro update....
http://akamai.avg.com/update/u7avi1337u13277l.bin
http://guru.avg.com/update/u7avi1337u13277l.bin
http://downloadfree.avg.com/update/u7avi1337u13277l.bin
http://update.avg.com/softw/80/update/u7avi1337u13277l.bin
tem como dar uma mão ae pra optimizar esse lance? abração!
os do update são sempre softw/80?
se for é só fazer:
Código :
if ($url =~ /^http:\/\/update.avg.com/) { $url =~ s/update/downloadfree/; $url =~ s/softw\/80\///; print $fh "saida: $url\n"; print "$url\n"; }
Se não for, aí tem que ver o padrão pra ver qual vai ser a melhor forma de resolver isso. ;)
to tendo alguns entrevês com o AVG, pois ele tem algumas outras particularidades... quando eu aciono todos os redirecionamentos ele não updateia... estou verificando aqui assim que acabar posto
pode explicar a lógica da linha?
$url =~ s/softw\/80\///; abraços! quero dizer como ele sabe que tem que cortar na parte X até Y ;)