Array("short_text" => "usermsg", "long_text" => "User message"), "n"=>Array("short_text" => "usernotice", "long_text" => "User notice"), "c"=>Array("short_text" => "chanmsg", "long_text" => "Channel message"), "N"=>Array("short_text" => "channotice", "long_text" => "Channel notice"), "P"=>Array("short_text" => "part", "long_text" => "Part message"), "q"=>Array("short_text" => "quit", "long_text" => "Quit message"), "d"=>Array("short_text" => "dcc", "long_text" => "DCC Filename"), "a"=>Array("short_text" => "away", "long_text" => "Away message"), "t"=>Array("short_text" => "topic", "long_text" => "Channel topic"), "T"=>Array("short_text" => "message-tag", "long_text" => "Message tag"), "u"=>Array("short_text" => "usermask", "long_text" => "User mask (nick!user@host:realname)"), ); function spamfilter_targets_to_string($targets) { global $spamfilter_target_info; $ret = ''; for ($i = 0, $targs = ""; $i < strlen($targets); $i++) { $c = $targets[$i]; if (isset($spamfilter_target_info[$c])) $ret .= $spamfilter_target_info[$c]["short_text"].", "; else $ret .= "??, "; } $ret = rtrim($ret,", "); return $ret; } function spamfilter_targets_to_string_with_info($targets) { global $spamfilter_target_info; $ret = ''; for ($i = 0, $targs = ""; $i < strlen($targets); $i++) { $c = $targets[$i]; if (isset($spamfilter_target_info[$c])) $ret .= "".$spamfilter_target_info[$c]["short_text"].", "; else $ret .= "??, "; } $ret = rtrim($ret,", "); return $ret; } function spamfilter_target_name_to_char($name) { global $spamfilter_target_info; foreach ($spamfilter_target_info as $char=>$e) { if ($e["short_text"] == $name) return $char; } return false; } function spamfilter_targets_from_array_to_chars($ar) { $ret = ''; foreach ($ar as $name) { $c = spamfilter_target_name_to_char($name); if ($c !== false) $ret .= $c; } return $ret; } if (!empty($_POST)) { do_log($_POST); if (($sf = (isset($_POST['sf_add'])) ? $_POST['sf_add'] : false)) // if it was a spamfilter entry { if (!current_user_can(PERMISSION_SPAMFILTER_ADD)) Message::Fail("Could not add Spamfilter entry: Permission denied"); else { /* 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 = spamfilter_targets_from_array_to_chars($targets); /* 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) $bantype = "soft-$bantype"; 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 (!empty($_POST['sf'])) { if (!current_user_can(PERMISSION_SPAMFILTER_DEL)) Message::Fail("Could not delete Spamfilter entry or entries: Permission denied"); else foreach ($_POST['sf'] as $key => $value) { $tok = explode(",", $value); $name = base64_decode($tok[0]); $match_type = base64_decode($tok[1]); $spamfilter_targets = base64_decode($tok[2]); $ban_action = base64_decode($tok[3]); if ($rpc->spamfilter()->delete($name, $match_type, $spamfilter_targets, $ban_action)) Message::Success("Spamfilter on $name has been removed"); else Message::Fail("Unable to remove spamfilter on $name: $rpc->error"); } } } $spamfilter = $rpc->spamfilter()->getAll(); ?>

Spamfilter Overview


"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; } ?>
Match Type Mask Target Action Action Duration Reason Set By Set On
".$sf->match_type."".$sf->name."".spamfilter_targets_to_string_with_info($sf->spamfilter_targets)."".$sf->ban_action."".$sf->ban_duration_string."".$sf->reason."".show_nick_only($sf->set_by)."".$sf->set_at_string."