X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/f5e7f3182bde769e585d5b269d9639de111ec862..8097430a810ac1535fe5304f74991b16ff58b064:/modules/m_stats.c diff --git a/modules/m_stats.c b/modules/m_stats.c index dbc7699..67e53bb 100644 --- a/modules/m_stats.c +++ b/modules/m_stats.c @@ -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) { @@ -959,6 +987,8 @@ static struct shared_flags shared_flagtable[] = { SHARED_TDLINE, 'd' }, { SHARED_PDLINE, 'D' }, { SHARED_UNDLINE, 'E' }, + { SHARED_DIE, 'I' }, + { SHARED_MODULE, 'M' }, { 0, '\0'} };