/*
* Oper extban type: matches opers
* -- jilles
- *
- * $Id: extb_oper.c 1299 2006-05-11 15:43:03Z jilles $
*/
#include "stdinc.h"
#include "modules.h"
#include "client.h"
+#include "privilege.h"
+#include "s_newconf.h"
#include "ircd.h"
static int _modinit(void);
(void)chptr;
(void)mode_type;
- /* perhaps use data somehow? (opernick/flags?) */
- /* so deny any bans with data for now */
+
if (data != NULL)
- return EXTBAN_INVALID;
+ {
+ struct PrivilegeSet *set = privilegeset_get(data);
+ if (set != NULL && client_p->localClient->privset == set)
+ return EXTBAN_MATCH;
+
+ /* $o:admin or whatever */
+ return HasPrivilege(client_p, data) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
+ }
+
return IsOper(client_p) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
}