]> jfr.im git - irc/freenode/ircd-seven.git/commitdiff
Add /stats g to show propagated (global) klines.
authorJilles Tjoelker <redacted>
Fri, 5 Mar 2010 23:31:51 +0000 (00:31 +0100)
committerJilles Tjoelker <redacted>
Fri, 5 Mar 2010 23:31:51 +0000 (00:31 +0100)
help/opers/stats
modules/m_stats.c

index 3017eb31988d81c09a5da56c179444431de68835..5d25900da6d60d0aac09b97030ae6e8d36e8b8c3 100644 (file)
@@ -16,6 +16,7 @@ X B - Shows hash statistics
 * e - Shows exemptions to D lines
 X E - Shows Events
 X f - Shows File Descriptors
+* g - Shows global K lines
 ^ h - Shows hub_mask/leaf_mask (Old H:/L: lines)
 ^ i - Shows auth blocks (Old I: lines)
 ^ K - Shows K lines (or matched klines)
index dbc76994fec76b99bafaa88e33c04726f2d45deb..b9ab39071c40dc7542d32fe3ea73fcf63c6a68ca 100644 (file)
@@ -94,6 +94,7 @@ static void stats_tdeny(struct Client *);
 static void stats_deny(struct Client *);
 static void stats_exempt(struct Client *);
 static void stats_events(struct Client *);
+static void stats_prop_klines(struct Client *);
 static void stats_hubleaf(struct Client *);
 static void stats_auth(struct Client *);
 static void stats_tklines(struct Client *);
@@ -137,6 +138,7 @@ static struct StatsStruct stats_cmd_table[] = {
        {'E', stats_events,             1, 1, },
        {'f', stats_comm,               1, 1, },
        {'F', stats_comm,               1, 1, },
+       {'g', stats_prop_klines,        1, 0, },
        {'h', stats_hubleaf,            0, 0, },
        {'H', stats_hubleaf,            0, 0, },
        {'i', stats_auth,               0, 0, },
@@ -450,6 +452,32 @@ stats_events (struct Client *source_p)
        rb_dump_events(stats_events_cb, source_p);
 }
 
+static void
+stats_prop_klines(struct Client *source_p)
+{
+       struct ConfItem *aconf;
+       rb_dlink_node *ptr;
+       char *user, *host, *pass, *oper_reason;
+
+       RB_DLINK_FOREACH(ptr, prop_bans.head)
+       {
+               aconf = ptr->data;
+
+               /* Skip non-klines and deactivated klines. */
+               if(aconf->status != CONF_KILL)
+                       continue;
+
+               get_printable_kline(source_p, aconf, &host, &pass, 
+                               &user, &oper_reason);
+
+               sendto_one_numeric(source_p, RPL_STATSKLINE,
+                               form_str(RPL_STATSKLINE),
+                               'g', host, user, pass,
+                               oper_reason ? "|" : "",
+                               oper_reason ? oper_reason : "");
+       }
+}
+
 static void
 stats_hubleaf(struct Client *source_p)
 {