X-Git-Url: https://jfr.im/git/irc/unrealircd/unrealircd-webpanel.git/blobdiff_plain/4cba23263a53a67d8d15f9555ac2b5e369e94244..fdc0088faa6bc7498d0e39b2457c2e758b10e6d8:/index.php diff --git a/index.php b/index.php index ef7c0d6..1e966ec 100644 --- a/index.php +++ b/index.php @@ -1,721 +1,266 @@ - -UnrealIRCd Panel - - - -
-

UnrealIRCd Administration Panel

- -
- Overview - Users - Channels - Server Bans - Spamfilter - News -
$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"])) - { - /* check if this came from our Server Bans tab. */ - if (!($iphost = $_POST['tkl_add'])) - Message::Fail("No user was specified"); - - else /* It did */ - { - if (( - $bantype == "gline" || - $bantype == "gzline" || - $bantype == "shun" || - $bantype == "eline" - ) && strpos($iphost, "@") == false) // doesn't have full mask - $iphost = "*@" . $iphost; - - $soft = ($_POST['soft']) ? true : false; - - if ($soft) - $iphost = "%" . $iphost; - /* 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; - } - $msg_msg = ($duration == "0" || $duration == "0w0d0h") ? "permanently" : "for ".rpc_convert_duration_string($duration); - $reason = (isset($_POST['ban_reason'])) ? $_POST['ban_reason'] : "No reason"; - if ($rpc->serverban()->add($iphost, $bantype, $duration, $reason)) - { - Message::Success("Host / IP: $iphost has been $bantype" . "d $msg_msg: $reason"); - } - else - Message::Fail("The $bantype against \"$iphost\" could not be added: $rpc->error"); - } - } - else /* It came from the Users tab */ - { - foreach ($_POST["userch"] as $user) - { - $user = base64_decode($user); - $bantype = (isset($_POST['bantype'])) ? $_POST['bantype'] : NULL; - if (!$bantype) /* shouldn't happen? */ - { - Message::Fail("An error occured"); - return; - } - $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; - } - - $nick = $rpc->user()->get($user); - if (!$nick) - { - Message::Fail("Could not find that user. Maybe they disconnected after you clicked this?"); - return; - } - - $msg_msg = ($duration == "0" || $duration == "0w0d0h") ? "permanently" : "for ".rpc_convert_duration_string($duration); - $reason = (isset($_POST['ban_reason'])) ? $_POST['ban_reason'] : "No reason"; - if ($rpc->serverban()->add($user, $bantype, $duration, $reason)) - { - $c = $nick->client; - Message::Success($c->name . " (*@".$c->hostname.") has been $bantype" . "d $msg_msg: $reason"); - } - } - } - - if (!empty($_POST['tklch'])) - foreach ($_POST as $key => $value) { - foreach ($value as $tok) { - $tok = explode(",", $tok); - $ban = base64_decode($tok[0]); - $type = base64_decode($tok[1]); - if ($rpc->serverban()->delete($ban, $type)) - Message::Success("$type has been removed for $ban"); - else - Message::Fail("Unable to remove $type on $ban: $rpc->error"); - } - } - - if (!empty($_POST['sf'])) - foreach ($_POST as $key => $value) { - foreach ($value as $tok) { - $tok = explode(",", $tok); - $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"); - } - } -} - -rpc_pop_lists(); +$stats = $rpc->query("stats.get", []); ?> -
-
- - - - - - - - - -
Chat Overview
Users
Opers
Services
Most popular channel ( users)
Channels
Server bans
Spamfilter entries
- -
-
- - - - - - - -
Filter by: -
- Nick: - -
-
-
- Hostname: - -
-
-
- IP: - -
-
-
- Account: - -
-
- - - - - - - - - - - - - - - Network Overview - /* Some basic filtering for NICK */ - if (isset($_POST['uf_nick']) && strlen($_POST['uf_nick']) && - strpos(strtolower($user->name), strtolower($_POST['uf_nick'])) !== 0 && - strpos(strtolower($user->name), strtolower($_POST['uf_nick'])) == false) - continue; - - /* Some basic filtering for HOST */ - if (isset($_POST['uf_host']) && strlen($_POST['uf_host']) && - strpos(strtolower($user->hostname), strtolower($_POST['uf_host'])) !== 0 && - strpos(strtolower($user->hostname), strtolower($_POST['uf_host'])) == false) - continue; - - /* Some basic filtering for IP */ - if (isset($_POST['uf_ip']) && strlen($_POST['uf_ip']) && - strpos(strtolower($user->ip), strtolower($_POST['uf_ip'])) !== 0 && - strpos(strtolower($user->ip), strtolower($_POST['uf_ip'])) == false) - continue; - - /* Some basic filtering for ACCOUNT */ - if (isset($_POST['uf_account']) && strlen($_POST['uf_account']) && - strpos(strtolower($user->user->account), strtolower($_POST['uf_account'])) !== 0 && - strpos(strtolower($user->user->account), strtolower($_POST['uf_account'])) == false) - continue; +"; - echo ""; - $isBot = (strpos($user->user->modes, "B") !== false) ? ' Bot' : ""; - echo "'; - echo ""; - echo ""; - $account = (isset($user->user->account)) ? $user->user->account : 'None'; - echo ""; - $modes = (isset($user->user->modes)) ? "+" . $user->user->modes : ""; - echo ""; - $oper = (isset($user->user->operlogin)) ? $user->user->operlogin." ".$user->user->operclass."" : ""; - if (!strlen($oper)) - $oper = (strpos($user->user->modes, "S") !== false) ? 'Service' : ""; - echo ""; - $secure = (isset($user->tls)) ? "Secure" : "Insecure"; - echo ""; - echo ""; - echo ""; - } - ?>
Select allNickUIDHost / IPAccountUsermodesℹ️OperSecureConnected toReputation ℹ️
".$user->name.$isBot.'".$user->id."".$user->hostname." (".$user->ip.")".$account."".$modes."".$oper."".$secure."".$user->user->servername."".$user->user->reputation."
-
- -
-
- - - -
-
- - - -
+/* What if someone wants to add their own stats... */ +Hook::run(HOOKTYPE_PRE_OVERVIEW_CARD, $array_of_stats); -
-
-

- - - - - - - - - "; - echo ""; - echo ""; - echo ""; - $topic = (isset($channel->topic)) ? $channel->topic : ""; - echo ""; - $setby = (isset($channel->topic)) ? "By ".$channel->topic_set_by .", at ".$channel->topic_set_at : ""; - echo ""; - $modes = (isset($channel->modes)) ? "+" . $channel->modes : ""; - echo ""; - } - ?>
NameCreatedUser countTopicTopic SetModes".$channel->name."".$channel->creation_time."".$channel->num_users."".$topic."".$setby."".$modes."
+/* This makes sure that a plugin which called the parameter + * by reference can add/update the stats for display here. +*/ +$stats = (object) $array_of_stats; -
-
-
- Add Server Ban -
-
- -
-
IP / Host:

-
Ban Type:

-
- - - -
-
- Don't affect logged-in users (soft) -
-
+
+
+
+
+
+
+ +
+
+

channel->total; ?>

+
+
+
+
+
+
+
Channels
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+

user->oper; ?>

+
+
+
+
+
+
+
Opers
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+

server->total; ?>

+
+
+
+
+
+
+
Servers
+
+ +
+
+
+
- - - - - - - - - - - - "; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; + +
+ +
+
+
+
+
+
+ +
+
+

server_ban->server_ban; ?>

+
+
+
+
+
+
+
Server Bans
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+

server_ban->spamfilter; ?>

+
+
+
+
+
+
+
Spamfilter
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+

server_ban->server_ban_exception; ?>

+
+
+
+ +
+
+
+
Server Ban Exceptions
+
+ +
+
+
+
+ server->ulined) { + $bg = "bg-success"; + + /* honestly can't think of a case where there would actually be only one uline... but... well here we are, worrying over the small stuff =] */ + $user_noun = ($stats->user->ulined == 1) ? "user" : "users"; // use "users" even if 0, sounds better. + $is_are = ($stats->user->ulined == 1) ? "is" : "are"; + $server_noun = ($stats->server->ulined == 1) ? "server" : "servers"; + $tooltip = "There $is_are " . $stats->user->ulined . " U-Lined $user_noun over " . $stats->server->ulined . " U-Lined $server_noun"; } - ?>
Select allMaskTypeSet BySet OnExpiresDurationReason".$tkl->name."".$tkl->type_string."".$tkl->set_by."".$tkl->set_at_string."".$tkl->expire_at_string."".$tkl->duration_string."".$tkl->reason."

- - -
-
-

-
- Add Spamfilter Entry -
-
- -
-
Entry:

-
MatchType:

-
Action:

- -
- Channel messages
-
Private messages
-
Channel notices
-
Private notices
-
Part reason
-
DCC Filename
-
Away messages
-
Channel topic
-
MessageTags
-
Userhost (nick!user@host:realname)
-
- - - -
-
- Don't affect logged-in users (soft) -
-
+ else + $bg = "bg-warning"; + ?> +
+
+
+
+
+ +
+
+

user->ulined; ?>/server->ulined; ?>

+
+
+
+
+
+
+
Services Online
+
+ +
+
+ +
+
- - - - - - - - - - - - - - - - "; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - for ($i = 0, $targs = ""; $i < strlen($sf->spamfilter_targets); $i++) - { - $c = $sf->spamfilter_targets[$i]; - if ($c == "c") - $targs .= "Channel, "; - else if ($c == "p") - $targs .= "Private,"; - else if ($c == "n") - $targs .= "Notice, "; - else if ($c == "N") - $targs .= "Channel notice, "; - else if ($c == "P") - $targs .= "Part message, "; - else if ($c == "q") - $targs .= "Quit message, "; - else if ($c == "d") - $targs .= "DCC filename, "; - else if ($c == "a") - $targs .= "Away message, "; - else if ($c == "t") - $targs .= "Channel topic, "; - else if ($c == "T") - $targs .= "MessageTag, "; - else if ($c == "u") - $targs .= "Usermask, "; - } - $targs = rtrim($targs,", "); - echo ""; - echo ""; - - } - ?>
Select allMaskTypeSet BySet OnExpiresDurationMatch TypeActionAction DurationTargetReason".$sf->name."".$sf->type_string."".$sf->set_by."".$sf->set_at_string."".$sf->expire_at_string."".$sf->duration_string."".$sf->match_type."".$sf->ban_action."".$sf->ban_duration_string."".$targs."".$sf->reason."

+ + +
+ +
+
+
+
+
+
+ +
+
+

+
+
+
+
+
+
+
Panel Users
+
+ +
+
+
+
+
+
+ -
- - -
- - +require_once "footer.php";