Change /stats O to show privset blocks (oper only).

To show operator blocks, only /stats o (lowercase) now works.
This commit is contained in:
Jilles Tjoelker 2009-01-18 01:35:24 +01:00
parent be15a2ac40
commit 3a17735469
5 changed files with 33 additions and 1 deletions

View file

@ -1014,6 +1014,12 @@
<para>Show operator blocks</para>
</listitem>
</varlistentry>
<varlistentry>
<term>O</term>
<listitem>
<para>Show privset blocks</para>
</listitem>
</varlistentry>
<varlistentry>
<term>p</term>
<listitem>

View file

@ -24,6 +24,7 @@ X f - Shows File Descriptors
l - Shows hostname and generic info about [nick]
m - Shows commands and their usage
n - Shows DNS blacklists
* O - Shows privset blocks
^ o - Shows operator blocks (Old O: lines)
^ P - Shows configured ports
p - Shows online opers

View file

@ -47,5 +47,6 @@ struct PrivilegeSet *privilegeset_ref(struct PrivilegeSet *set);
void privilegeset_unref(struct PrivilegeSet *set);
void privilegeset_mark_all_illegal(void);
void privilegeset_delete_all_illegal(void);
void privilegeset_report(struct Client *source_p);
#endif

View file

@ -101,6 +101,7 @@ static void stats_klines(struct Client *);
static void stats_messages(struct Client *);
static void stats_dnsbl(struct Client *);
static void stats_oper(struct Client *);
static void stats_privset(struct Client *);
static void stats_operedup(struct Client *);
static void stats_ports(struct Client *);
static void stats_tresv(struct Client *);
@ -148,7 +149,7 @@ static struct StatsStruct stats_cmd_table[] = {
{'M', stats_messages, 0, 0, },
{'n', stats_dnsbl, 0, 0, },
{'o', stats_oper, 0, 0, },
{'O', stats_oper, 0, 0, },
{'O', stats_privset, 1, 0, },
{'p', stats_operedup, 0, 0, },
{'P', stats_ports, 0, 0, },
{'q', stats_tresv, 1, 0, },
@ -678,6 +679,11 @@ stats_oper(struct Client *source_p)
}
}
static void
stats_privset(struct Client *source_p)
{
privilegeset_report(source_p);
}
/* stats_operedup()
*

View file

@ -24,6 +24,7 @@
#include <stdinc.h>
#include "s_conf.h"
#include "privilege.h"
#include "numeric.h"
static rb_dlink_list privilegeset_list = {};
@ -189,3 +190,20 @@ privilegeset_delete_all_illegal(void)
privilegeset_unref(set);
}
}
void
privilegeset_report(struct Client *source_p)
{
rb_dlink_node *ptr;
RB_DLINK_FOREACH(ptr, privilegeset_list.head)
{
struct PrivilegeSet *set = ptr->data;
/* use RPL_STATSDEBUG for now -- jilles */
sendto_one_numeric(source_p, RPL_STATSDEBUG,
"O :%s %s",
set->name,
set->privs);
}
}