|
|
-d "/var/lib/assp/$correctedspam" or mkdir "/var/lib/assp/$correctedspam",0700; | -d "/var/lib/assp/$correctedspam" or mkdir "/var/lib/assp/$correctedspam",0700; |
-d "/var/lib/assp/$correctednotspam" or mkdir "/var/lib/assp/$correctednotspam",0700; | -d "/var/lib/assp/$correctednotspam" or mkdir "/var/lib/assp/$correctednotspam",0700; |
my $pbdir = $1 if $pbdb=~/(.*)\/.*/; | my $pbdir = $1 if $pbdb=~/(.*)\/.*/; |
mkdir "$base/$pbdir",0700 if $pbdir; |
mkdir "/var/lib/assp/$pbdir",0700 if $pbdir; |
-d "/etc/assp/notes" or mkdir "$base/notes",0770; |
-d "/etc/assp/notes" or mkdir "/var/lib/assp/notes",0770; |
if ( !-e "/etc/assp/reports/whitereport.txt") { | if ( !-e "/etc/assp/reports/whitereport.txt") { |
-d "/etc/assp/reports" or mkdir "/etc/assp/reports",0770; | -d "/etc/assp/reports" or mkdir "/etc/assp/reports",0770; |
copy("/usr/share/assp/whitereport.txt", "/etc/assp/reports/whitereport.txt"); | copy("/usr/share/assp/whitereport.txt", "/etc/assp/reports/whitereport.txt"); |
|
|
| |
| |
# put this after chroot so the paths don't change | # put this after chroot so the paths don't change |
$SpamdbObject=tie %Spamdb,orderedtie,"$base/$spamdb" if $spamdb; |
$SpamdbObject=tie %Spamdb,orderedtie,"/var/lib/assp/$spamdb" if $spamdb; |
mlog(0,"warning: Bayesian spam database is small or empty: '$base/$spamdb'") if $spamdb && -s "$base/$spamdb" < 10000; |
mlog(0,"warning: Bayesian spam database is small or empty: '/var/lib/assp/$spamdb'") if $spamdb && -s "/var/lib/assp/$spamdb" < 10000; |
$HeloBlackObject=tie %HeloBlack,orderedtie,"$base/$spamdb.helo" if $spamdb; |
$HeloBlackObject=tie %HeloBlack,orderedtie,"/var/lib/assp/$spamdb.helo" if $spamdb; |
$DnsblObject=tie %Dnsbl,orderedtie,"$base/$dnsbl" if $dnsbl; |
$DnsblObject=tie %Dnsbl,orderedtie,"/var/lib/assp/$dnsbl" if $dnsbl; |
mlog(0,"warning: DNS blacklist database is small or empty: '$base/$dnsbl'") if $dnsbl && -s "$base/$dnsbl" < 10000; |
mlog(0,"warning: DNS blacklist database is small or empty: '/var/lib/assp/$dnsbl'") if $dnsbl && -s "/var/lib/assp/$dnsbl" < 10000; |
if ($CanUseTieRDBM && $whitelistdb =~ /mysql/) { | if ($CanUseTieRDBM && $whitelistdb =~ /mysql/) { |
eval { | eval { |
$WhitelistObject=tie %Whitelist,'Tie::RDBM',"dbi:mysql:database=$mydb;host=$myhost",{user=>"$myuser",password=>"$mypassword",table=>'whitelist',create=>1};}; | $WhitelistObject=tie %Whitelist,'Tie::RDBM',"dbi:mysql:database=$mydb;host=$myhost",{user=>"$myuser",password=>"$mypassword",table=>'whitelist',create=>1};}; |
|
|
$whitelistdb ="whitelist"; | $whitelistdb ="whitelist"; |
} | } |
} else { | } else { |
$WhitelistObject=tie %Whitelist,orderedtie,"$base/$whitelistdb"; |
$WhitelistObject=tie %Whitelist,orderedtie,"/var/lib/assp/$whitelistdb"; |
mlog(0,"warning: whitelist is small or empty: '$base/$whitelistdb' (ignore if this is a new install)") if $whitelistdb && -s "$base/$whitelistdb" < 1000; |
mlog(0,"warning: whitelist is small or empty: '/var/lib/assp/$whitelistdb' (ignore if this is a new install)") if $whitelistdb && -s "/var/lib/assp/$whitelistdb" < 1000; |
} | } |
| |
if ($CanUseTieRDBM && $redlistdb =~ /mysql/) { | if ($CanUseTieRDBM && $redlistdb =~ /mysql/) { |
|
|
$redlistdb ="redlist"; | $redlistdb ="redlist"; |
} | } |
} else { | } else { |
$RedlistObject=tie %Redlist,orderedtie,"$base/$redlistdb"; |
$RedlistObject=tie %Redlist,orderedtie,"/var/lib/assp/$redlistdb"; |
} | } |
$GriplistObject=tie %Griplist,orderedtie,"$base/$griplist" if $griplist; |
$GriplistObject=tie %Griplist,orderedtie,"/var/lib/assp/$griplist" if $griplist; |
| |
$PBWhiteObject=tie %PBWhite,orderedtie,"$base/$pbdb.white.db"; |
$PBWhiteObject=tie %PBWhite,orderedtie,"/var/lib/assp/$pbdb.white.db"; |
$PBBlackObject=tie %PBBlack,orderedtie,"$base/$pbdb.black.db"; |
$PBBlackObject=tie %PBBlack,orderedtie,"/var/lib/assp/$pbdb.black.db"; |
$RBLCacheObject=tie %RBLCache,orderedtie,"$base/$pbdb.rbl.db"; |
$RBLCacheObject=tie %RBLCache,orderedtie,"/var/lib/assp/$pbdb.rbl.db"; |
$URIBLCacheObject=tie %URIBLCache,orderedtie,"$base/$pbdb.uribl.db"; |
$URIBLCacheObject=tie %URIBLCache,orderedtie,"/var/lib/assp/$pbdb.uribl.db"; |
if ($CanUseTieRDBM && $delaydb =~ /mysql/) { | if ($CanUseTieRDBM && $delaydb =~ /mysql/) { |
eval { | eval { |
$DelayWhiteObject=tie %DelayWhite,'Tie::RDBM',"dbi:mysql:database=$mydb;host=$myhost",{user=>"$myuser",password=>"$mypassword",table=>'delaywhitedb',create=>1}; | $DelayWhiteObject=tie %DelayWhite,'Tie::RDBM',"dbi:mysql:database=$mydb;host=$myhost",{user=>"$myuser",password=>"$mypassword",table=>'delaywhitedb',create=>1}; |
|
|
} | } |
| |
} else { | } else { |
$DelayObject=tie %Delay,orderedtie,"$base/$delaydb"; |
$DelayObject=tie %Delay,orderedtie,"/var/lib/assp/$delaydb"; |
$DelayWhiteObject=tie %DelayWhite,orderedtie,"$base/$delaydb.white"; |
$DelayWhiteObject=tie %DelayWhite,orderedtie,"/var/lib/assp/$delaydb.white"; |
} | } |
| |
| |
|
|
| |
sub downloadGrip { | sub downloadGrip { |
# let's check if we really need to | # let's check if we really need to |
my @s=stat("$base/$griplist"); |
my @s=stat("/var/lib/assp/$griplist"); |
my $mtime=$s[9]; | my $mtime=$s[9]; |
if(time - $mtime< 12*3600) { | if(time - $mtime< 12*3600) { |
$NextGriplistDownload=$mtime + 12*3600; | $NextGriplistDownload=$mtime + 12*3600; |
|
|
$SocketCalls{$s}=\&GripTraffic; | $SocketCalls{$s}=\&GripTraffic; |
$readable->add($s); | $readable->add($s); |
$NextGriplistDownload=time+3600*12; | $NextGriplistDownload=time+3600*12; |
open(GRIPTEMP,">$base/$griplist.tmp"); |
open(GRIPTEMP,">/var/lib/assp/$griplist.tmp"); |
binmode(GRIPTEMP); | binmode(GRIPTEMP); |
$GriplistLen=0; | $GriplistLen=0; |
} else { | } else { |
|
|
$GriplistLen-=length($buf); | $GriplistLen-=length($buf); |
if(! $GriplistLen) { | if(! $GriplistLen) { |
close GRIPTEMP; | close GRIPTEMP; |
unlink("$base/$griplist"); |
unlink("/var/lib/assp/$griplist"); |
rename("$base/$griplist.tmp","$base/$griplist"); |
rename("/var/lib/assp/$griplist.tmp","/var/lib/assp/$griplist"); |
mlog(0,"griplist download complete") if $MaintenanceLog; | mlog(0,"griplist download complete") if $MaintenanceLog; |
if($GriplistObject) { | if($GriplistObject) { |
$GriplistObject->resetCache(); | $GriplistObject->resetCache(); |
} else { | } else { |
$GriplistObject=tie %Griplist,orderedtie,"$base/$griplist" if $griplist; |
$GriplistObject=tie %Griplist,orderedtie,"/var/lib/assp/$griplist" if $griplist; |
} | } |
$readable->remove($fh); | $readable->remove($fh); |
$fh->close; | $fh->close; |
|
|
sub cleanBlackPB { | sub cleanBlackPB { |
if ($PenaltyExpiration==0) { | if ($PenaltyExpiration==0) { |
$PBBlackObject->flush() if $PBBlackObject; | $PBBlackObject->flush() if $PBBlackObject; |
unlink "$base/$pbdb.black.db.bak"; |
unlink "/var/lib/assp/$pbdb.black.db.bak"; |
rename("$base/$pbdb.black.db","$base/$pbdb.black.db.bak"); |
rename("/var/lib/assp/$pbdb.black.db","/var/lib/assp/$pbdb.black.db.bak"); |
$PBBlackObject->DESTROY() if $PBBlackObject; | $PBBlackObject->DESTROY() if $PBBlackObject; |
| |
return; | return; |
|
|
} | } |
if ($ips_before==0) { | if ($ips_before==0) { |
$PBBlackObject->flush() if $PBBlackObject; | $PBBlackObject->flush() if $PBBlackObject; |
unlink "$base/$pbdb.black.db.bak"; |
unlink "/var/lib/assp/$pbdb.black.db.bak"; |
rename("$base/$pbdb.black.db","$base/$pbdb.black.db.bak"); |
rename("/var/lib/assp/$pbdb.black.db","/var/lib/assp/$pbdb.black.db.bak"); |
$PBBlackObject->DESTROY() if $PBBlackObject;} | $PBBlackObject->DESTROY() if $PBBlackObject;} |
mlog(0,"PB: cleaning black finished; IPs before=$ips_before, deleted=$ips_deleted") if $DoPenalty; | mlog(0,"PB: cleaning black finished; IPs before=$ips_before, deleted=$ips_deleted") if $DoPenalty; |
MainLoop2(); | MainLoop2(); |
|
|
mlog(0,"RBLCache: cleaning cache finished; IPs before=$ips_before, deleted=$ips_deleted") if $MaintenanceLog; | mlog(0,"RBLCache: cleaning cache finished; IPs before=$ips_before, deleted=$ips_deleted") if $MaintenanceLog; |
if ($ips_before==0 || ($ips_before>=5000 && $ips_deleted==0)) { | if ($ips_before==0 || ($ips_before>=5000 && $ips_deleted==0)) { |
$RBLCacheObject->flush() ; | $RBLCacheObject->flush() ; |
unlink "$base/$pbdb.rbl.db.bak"; |
unlink "/var/lib/assp/$pbdb.rbl.db.bak"; |
rename("$base/$pbdb.rbl.db","$base/$pbdb.rbl.db.bak"); |
rename("/var/lib/assp/$pbdb.rbl.db","/var/lib/assp/$pbdb.rbl.db.bak"); |
$RBLCacheObject->DESTROY(); | $RBLCacheObject->DESTROY(); |
$RBLCache{""}="" if $ips_before==0; | $RBLCache{""}="" if $ips_before==0; |
}} | }} |
|
|
mlog(0,"URIBLCache: cleaning cache finished; Domains before=$domains_before, deleted=$domains_deleted") if $MaintenanceLog; | mlog(0,"URIBLCache: cleaning cache finished; Domains before=$domains_before, deleted=$domains_deleted") if $MaintenanceLog; |
if ($domains_before==0 || ($domains_before>=5000 && $domains_deleted==0)) { | if ($domains_before==0 || ($domains_before>=5000 && $domains_deleted==0)) { |
$URIBLCacheObject->flush() ; | $URIBLCacheObject->flush() ; |
unlink "$base/$pbdb.uribl.db.bak"; |
unlink "/var/lib/assp/$pbdb.uribl.db.bak"; |
rename("$base/$pbdb.uribl.db","$base/$pbdb.rbl.db.bak"); |
rename("/var/lib/assp/$pbdb.uribl.db","/var/lib/assp/$pbdb.rbl.db.bak"); |
$URIBLCacheObject->DESTROY(); | $URIBLCacheObject->DESTROY(); |
$URIBLCache{""}="" if $domains_before==0; | $URIBLCache{""}="" if $domains_before==0; |
}} | }} |