diff --git a/apiconfig.php b/apiconfig.php index d043f7d..23eceb6 100644 --- a/apiconfig.php +++ b/apiconfig.php @@ -65,6 +65,13 @@ $APIS = [ "domain (optional)" => "" ] ], + "net/contactspam/submit" => [ + "load" => "net.contactspam.submit.php", + "vars" => [ + "email (optional)" => "", + "ipaddr (optional)" => "" + ] + ], "net/geoip" => [ "load" => "net.geoip.php", "vars" => [ diff --git a/database.mwb b/database.mwb new file mode 100644 index 0000000..299305d Binary files /dev/null and b/database.mwb differ diff --git a/database.mwb.bak b/database.mwb.bak new file mode 100644 index 0000000..6fd611e Binary files /dev/null and b/database.mwb.bak differ diff --git a/endpoints/net.contactspam.php b/endpoints/net.contactspam.php index a93263a..a9ae0b8 100644 --- a/endpoints/net.contactspam.php +++ b/endpoints/net.contactspam.php @@ -132,6 +132,20 @@ try { } +// Check local spammer database +if (env("require_database")) { + if (!empty($clientip)) { + if ($database->has("net.contactspam_spammers", ["ip" => $clientip])) { + exitWithJson(["status" => "OK", "clean" => false, "filter" => "netsyms_ip_blacklist", "hit" => $clientip, "message" => "A computer at your IP address has sent spam in the past. Your message has been blocked."]); + } + } + if (!empty($clientip)) { + if ($database->has("net.contactspam_spammers", ["email" => $email_lower])) { + exitWithJson(["status" => "OK", "clean" => false, "filter" => "netsyms_email_blacklist", "hit" => $clientip, "message" => "Someone put your email as the from address on a spam message. Your message has been blocked."]); + } + } +} + // // Well if we got here then the message tested negative for spam // diff --git a/endpoints/net.contactspam.submit.php b/endpoints/net.contactspam.submit.php new file mode 100644 index 0000000..fb288fc --- /dev/null +++ b/endpoints/net.contactspam.submit.php @@ -0,0 +1,40 @@ +has("net.contactspam_spammers", ["email" => $fromemail])) { + $database->update("net.contactspam_spammers", [ + "entrylastreported" => date("Y-m-d H:i:s"), + "reportcount[+]" => 1 + ], ["email" => $fromemail]); + } else { + $database->insert("net.contactspam_spammers", [ + "entrylastreported" => date("Y-m-d H:i:s"), + "reportcount" => 1, + "email" => $fromemail + ]); + } +} + +if (!empty($clientip) && filter_var($clientip, FILTER_VALIDATE_IP)) { + if ($database->has("net.contactspam_spammers", ["ip" => $clientip])) { + $database->update("net.contactspam_spammers", [ + "entrylastreported" => date("Y-m-d H:i:s"), + "reportcount[+]" => 1 + ], ["ip" => $clientip]); + } else { + $database->insert("net.contactspam_spammers", [ + "entrylastreported" => date("Y-m-d H:i:s"), + "reportcount" => 1, + "ip" => $clientip + ]); + } +} + +// +// Well if we got here then the message tested negative for spam +// +exitWithJson(["status" => "OK"]);