X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/ff0482a9cb989d23082d0a1ed53c5faa463a8c2f..refs/tags/shadowircd-6.2.0-beta1:/modules/m_stats.c diff --git a/modules/m_stats.c b/modules/m_stats.c index 92b0e43..dc826bc 100644 --- a/modules/m_stats.c +++ b/modules/m_stats.c @@ -21,7 +21,6 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA * - * $Id: m_stats.c 1608 2006-06-04 02:11:40Z jilles $ */ #include "stdinc.h" @@ -94,6 +93,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 +137,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 +451,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) { @@ -744,7 +771,7 @@ stats_tresv(struct Client *source_p) if(aconf->hold) sendto_one_numeric(source_p, RPL_STATSQLINE, form_str(RPL_STATSQLINE), - 'q', aconf->port, aconf->name, aconf->passwd); + 'q', aconf->port, aconf->host, aconf->passwd); } HASH_WALK(i, R_MAX, ptr, resvTable) @@ -753,7 +780,7 @@ stats_tresv(struct Client *source_p) if(aconf->hold) sendto_one_numeric(source_p, RPL_STATSQLINE, form_str(RPL_STATSQLINE), - 'q', aconf->port, aconf->name, aconf->passwd); + 'q', aconf->port, aconf->host, aconf->passwd); } HASH_WALK_END } @@ -959,6 +986,8 @@ static struct shared_flags shared_flagtable[] = { SHARED_TDLINE, 'd' }, { SHARED_PDLINE, 'D' }, { SHARED_UNDLINE, 'E' }, + { SHARED_DIE, 'I' }, + { SHARED_MODULE, 'M' }, { 0, '\0'} };