diff options
-rw-r--r-- | packages/spamd_db.php | 23 | ||||
-rw-r--r-- | packages/spamd_db_ext.php | 23 |
2 files changed, 46 insertions, 0 deletions
diff --git a/packages/spamd_db.php b/packages/spamd_db.php index 7738ce95..dd10aaad 100644 --- a/packages/spamd_db.php +++ b/packages/spamd_db.php @@ -60,6 +60,7 @@ if($_GET['action'] or $_POST['action']) { exec("/usr/local/sbin/spamdb -d {$srcip}"); exec("/usr/local/sbin/spamdb -d \"<{$srcip}>\" -T"); exec("/usr/local/sbin/spamdb -d \"<{$srcip}>\" -t"); + delete_from_spamd_bl($srcip); mwexec("/sbin/pfctl -q -t blacklist -T replace -f /var/db/blacklist.txt"); exec("echo spamdb -a {$srcip} > /tmp/tmp"); exec("/usr/local/sbin/spamdb -a {$srcip}"); @@ -67,6 +68,7 @@ if($_GET['action'] or $_POST['action']) { exec("/usr/local/sbin/spamdb -d {$srcip}"); exec("/usr/local/sbin/spamdb -d \"<{$srcip}>\" -T"); exec("/usr/local/sbin/spamdb -d \"<{$srcip}>\" -t"); + delete_from_spamd_bl($srcip); mwexec("/sbin/pfctl -q -t spamd -T delete $srcip"); mwexec("/sbin/pfctl -q -t blacklist -T replace -f /var/db/blacklist.txt"); } else if($action == "spamtrap") { @@ -110,6 +112,27 @@ if($_GET['getstatus'] <> "") { exit; } +function delete_from_spamd_bl($ip) { + config_lock(); + if(!file_exists("/var/db/blacklist.txt")) + return; + $blacklist = file("/var/db/blacklist.txt"); + $new_blacklist = array(); + foreach($blacklist as $bl) { + if(stristr($bl, $ip)) { + /* don't add item */ + } else { + $new_blacklist[] = $bl; + } + } + $fd = fopen("/var/db/blacklist.txt", "w"); + foreach($new_blacklist as $bl) + fwrite($fd, $bl . "\n"); + flose($fd); + mwexec("/sbin/pfctl -q -t blacklist -T replace -f /var/db/blacklist.txt"); + config_unlock(); +} + /* spam trap e-mail address */ if($_GET['spamtrapemail'] <> "") { $status = exec("spamdb -T -a \"<{$_GET['spamtrapemail']}>\""); diff --git a/packages/spamd_db_ext.php b/packages/spamd_db_ext.php index 8a6b726c..ae6c51fb 100644 --- a/packages/spamd_db_ext.php +++ b/packages/spamd_db_ext.php @@ -73,6 +73,7 @@ if($_GET['action'] or $_POST['action']) { usleep(100); exec("/usr/local/sbin/spamdb -a {$srcip}"); mwexec("/sbin/pfctl -q -t blacklist -T replace -f /var/db/blacklist.txt"); + delete_from_spamd_bl($srcip); log_error("spamd: {$srcip} has been whitelisted by {$_SERVER['REMOTE_ADDR']} {$loginname}"); hup_spamd(); exit; @@ -82,6 +83,7 @@ if($_GET['action'] or $_POST['action']) { hup_spamd(); mwexec("/sbin/pfctl -q -t spamd -T delete $srcip"); mwexec("/sbin/pfctl -q -t blacklist -T replace -f /var/db/blacklist.txt"); + delete_from_spamd_bl($srcip); log_error("spamd: {$srcip} has been deleted by {$_SERVER['REMOTE_ADDR']} {$loginname}"); exit; } else if($action == "spamtrap") { @@ -154,6 +156,27 @@ if($_GET['whitelist'] <> "") { exit; } +function delete_from_spamd_bl($ip) { + config_lock(); + if(!file_exists("/var/db/blacklist.txt")) + return; + $blacklist = file("/var/db/blacklist.txt"); + $new_blacklist = array(); + foreach($blacklist as $bl) { + if(stristr($bl, $ip)) { + /* don't add item */ + } else { + $new_blacklist[] = $bl; + } + } + $fd = fopen("/var/db/blacklist.txt", "w"); + foreach($new_blacklist as $bl) + fwrite($fd, $bl . "\n"); + flose($fd); + mwexec("/sbin/pfctl -q -t blacklist -T replace -f /var/db/blacklist.txt"); + config_unlock(); +} + function delete_from_spamd_db($srcip) { config_lock(); $fd = fopen("/tmp/execcmds", "w"); |