$username = $tmp[2]; if ($username eq '') { $username='-'; };
$method = $tmp[3];
- $xlrator_url = $source_url;
+ $xlrator_url = "";
if (($method eq 'GET') || ($method eq 'HEAD'))
{
# -----------------------------------------------------------
if (
- (($source_url =~ m@^http://[^/]*\.microsoft\.com/.*\.(exe|psf|msi|msp|cab)$@i) ||
- ($source_url =~ m@^http://[^/]*\.windowsupdate\.com/.*\.(exe|psf|msi|msp|cab)$@i))
+ (($source_url =~ m@^http://[^/]*\.microsoft\.com/.*\.(exe|psf|msi|msp|msu|cab)$@i) ||
+ ($source_url =~ m@^http://[^/]*\.windowsupdate\.com/.*\.(exe|psf|msi|msp|msu|cab)$@i))
&& ($source_url !~ m@^http://[^/]*\.microsoft\.com/.*(/autoupd|selfupdate/).*\.cab@i)
&& ($source_url !~ m@\&@)
)
{
+ # NOTE: check_cache will change to $mirror instead of $unique if the filename contains an SHA1 hash
+ # and the URL is not found in cache!
$xlrator_url = &check_cache($source_url,$hostaddr,$username,"Microsoft",$unique);
}
# -----------------------------------------------------------
if (
- ($source_url =~ m@^[h|f]t?tp://[^?]+\.(deb|rpm)$@i) ||
- ($source_url =~ m@^[h|f]t?tp://[^?]+/distfiles/[^?]+\.(tar\.gz|tar\.bz2|tgz|zip|patch\.bz2|gz|docx|patch|pdf|exe)$@i)
+ ($source_url =~ m@^[h|f]t?tp://[^?]+\.(pkg\.tar\.xz|deb|rpm)$@i) ||
+ ($source_url =~ m@^[h|f]t?tp://[^?]+/distfiles/[^?]+\.(tar\.gz|tar\.bz2|tar\.xz|tgz|zip|patch\.bz2|gz|docx|patch|pdf|exe)$@i)
)
{
$xlrator_url = &check_cache($source_url,$hostaddr,$username,"Linux",$mirror);
# Section: Avast Downloads
# -----------------------------------------------------------
- if ($source_url =~ m@^http://download[\d]+\.avast\.com/.*\.(exe|vpu)$@i)
+ if ($source_url =~ m@^http://(ion|download)[\d]+\.avast\.com/.*\.(exe|vpu|vpx)$@i)
{
$xlrator_url = &check_cache($source_url,$hostaddr,$username,"Avast",$mirror);
}
+ # -----------------------------------------------------------
+ # Section: Mozilla Downloads
+ # -----------------------------------------------------------
+
+ if ($source_url=~ m@^http://.*\.mozilla\.net/.*\.((complete|partial)\.mar|exe)$@i)
+ {
+ $xlrator_url = &check_cache($source_url,$hostaddr,$username,"Mozilla",$unique);
+ }
+
# -----------------------------------------------------------
+ # Section: Mcafee
+ # -----------------------------------------------------------
+
+ if ($source_url =~ m@^http://update\.nai\.com/.*\.(mcs|z|gem|dat|zip)$@i)
+ {
+ $xlrator_url = &check_cache($source_url,$hostaddr,$username,"mcafee",$mirror);
+ }
# -----------------------------------------------------------
# Section: Avira Downloads
# ----------- ADD NEW SOURCES BEFORE THIS LINE !!! ------------------
}
- $request="$xlrator_url $hostaddr $username $method\n";
-
- print $request;
+ if ($xlrator_url) {
+ print "OK rewrite-url=\"$xlrator_url\"\n";
+ } else {
+ print "ERR\n";
+ }
}
# -------------------------------------------------------------------
my $sourceurl=$_[0];
my $cfmirror=$_[4];
+ $sourceurl =~ s@\%2b@+@ig;
$sourceurl =~ s@\%2f@/@ig;
+ $sourceurl =~ s@\%7e@~@ig;
$updfile = substr($sourceurl,rindex($sourceurl,"/")+1);
$updfile =~ s@\%20@ @ig;
)
{
&debuglog("File exists in cache and is up to date");
- &debuglog("Retrieving file from cache ($updsource)");
+ &debuglog("Retrieving file from cache ($updsource) for $hostaddr");
&setcachestatus("$updcachedir/$vendorid/$uuid/access.log",time);
$cacheurl="http://$netsettings{'GREEN_ADDRESS'}:$http_port/updatecache/$vendorid/$uuid/$updfile";
+ }
+ elsif (
+ ($cfmirror == $unique) &&
+ ($vendorid == "microsoft") &&
+ ($source_url =~ m@.*[0-9a-f]{40}\.[^\.]+@i)
+ )
+ {
+ # Most Microsoft updates now have an SHA1 hash in the name. These should be treated as unique files.
+ # Since it wasn't found in the URL cache, switch to mirror mode and try again using just the filename.
+ &debuglog("SHA1: $vendorid $uuid not cached. Reprocessing as mirror $sourceurl");
+ $cacheurl = &check_cache($source_url,$hostaddr,$username,$vendorid,$mirror);
}
else
{
&debuglog("Free disk space: " . &diskfree($updcachedir));
&debuglog("Disk usage: " . &diskusage($updcachedir) . "% (max. $maxusage%)");
if (-e "$updcachedir/download/$vendorid/$updfile") { &debuglog("File download/$vendorid/$updfile exists"); }
- &debuglog("Retrieving file from source ($updsource)");
+ &debuglog("Retrieving file from source ($updsource) for $hostaddr");
if ((!$passive_mode) && (&diskusage($updcachedir) <= $maxusage) && ($remote_size <= &diskfree($updcachedir)) && (!-e "$updcachedir/download/$vendorid/$updfile"))
{
&debuglog("Running command $nice$apphome/bin/download $vendorid $sourceurl $cfmirror &");