X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/543b8c392c9ce80e4f2bef9124455bda984e9947..46b3bb76550cf811d049a534fffddc0da8699f20:/src/privilege.c diff --git a/src/privilege.c b/src/privilege.c index 239b779..6b2c8b7 100644 --- a/src/privilege.c +++ b/src/privilege.c @@ -24,6 +24,7 @@ #include #include "s_conf.h" #include "privilege.h" +#include "numeric.h" static rb_dlink_list privilegeset_list = {}; @@ -167,7 +168,13 @@ privilegeset_mark_all_illegal(void) { struct PrivilegeSet *set = (struct PrivilegeSet *) iter->data; + /* the "default" privset is special and must remain available */ + if (!strcmp(set->name, "default")) + continue; + set->status |= CONF_ILLEGAL; + rb_free(set->privs); + set->privs = rb_strdup(""); /* but do not free it yet */ } } @@ -185,3 +192,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); + } +}