X-Git-Url: https://jfr.im/git/irc/unrealircd/unrealircd-webpanel.git/blobdiff_plain/dc961139b6abc47e087ec829b862cc07550329a9..3f487ee18009aa687a13899e8cf32596a892f9f1:/index.php diff --git a/index.php b/index.php index fbb29c8..aa3a265 100644 --- a/index.php +++ b/index.php @@ -26,7 +26,96 @@ require_once "Classes/class-rpc.php"; do_log($_POST); if (!empty($_POST)) { - if (!($bantype = $_POST['bantype'])) + + if ($sf = $_POST['sf_add']) // if it was a spamfilter entry + { + /* get targets */ + $targets = []; // empty arrae + foreach($_POST as $key => $value) + { + if (substr($key, 0, 7) == "target_") + $targets[] = str_replace(["target_", "_"], ["", "-"], $key); + } + if (empty($targets)) + Message::Fail("No target was specified"); + + if (!isset($_POST['sf_bantype'])) + Message::Fail("No action was chosen"); + + else + { + + $bantype = $_POST['sf_bantype']; + $targ_chars = ""; + foreach($targets as $targ) + { + switch ($targ) { + case "channel": + $targ_chars .= "c"; + break; + case "private": + $targ_chars .= "p"; + break; + case "channel-notice": + $targ_chars .= "N"; + break; + case "private-notice": + $targ_chars .= "n"; + break; + case "part": + $targ_chars .= "P"; + break; + case "quit": + $targ_chars .= "q"; + break; + case "dcc": + $targ_chars .= "d"; + break; + case "away": + $targ_chars .= "a"; + break; + case "topic": + $targ_chars .= "t"; + break; + case "messagetag": + $targ_chars .= "T"; + break; + case "user": + $targ_chars .= "u"; + break; + } + } + /* duplicate code for now [= */ + $banlen_w = (isset($_POST['banlen_w'])) ? $_POST['banlen_w'] : NULL; + $banlen_d = (isset($_POST['banlen_d'])) ? $_POST['banlen_d'] : NULL; + $banlen_h = (isset($_POST['banlen_h'])) ? $_POST['banlen_h'] : NULL; + $duration = ""; + if (!$banlen_d && !$banlen_h && !$banlen_w) + $duration .= "0"; + + else + { + if ($banlen_w) + $duration .= $banlen_w; + if ($banlen_d) + $duration .= $banlen_d; + if ($banlen_h) + $duration .= $banlen_h; + } + $match_type = $_POST['matchtype']; // should default to 'simple' + $reason = isset($_POST['ban_reason']) ? $_POST['ban_reason'] : "No reason"; + $soft = (isset($_POST['soft'])) ? true : false; + if ($soft) + $targ_chars = "%" . $targ_chars; + if ($rpc->spamfilter()->add($sf, $match_type, $targ_chars, $bantype, $duration, $reason)) + Message::Success("Added spamfilter entry \"$sf\" [match type: $match_type] [targets: $targ_chars] [reason: $reason]"); + else + Message::Fail("Could not add spamfilter entry \"$sf\" [match type: $match_type] [targets: $targ_chars] [reason: $reason]: $rpc->error"); + } + + } + + else if (!($bantype = $_POST['bantype'])) // if it was a ban entry { } else if (!($users = $_POST["userch"])) @@ -258,7 +347,7 @@ rpc_pop_lists(); echo "