aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/spamd_db.php23
-rw-r--r--packages/spamd_db_ext.php23
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");