blob: 99bcd26064b4c0fb12ddbef5600e12d280b21375 (
about) (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
/*
* 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);
static void _moddeinit(void);
static int eb_oper(const char *data, struct Client *client_p, struct Channel *chptr, long mode_type);
DECLARE_MODULE_AV1(extb_oper, _modinit, _moddeinit, NULL, NULL, NULL, "$Revision: 1299 $");
static int
_modinit(void)
{
extban_table['o'] = eb_oper;
return 0;
}
static void
_moddeinit(void)
{
extban_table['o'] = NULL;
}
static int eb_oper(const char *data, struct Client *client_p,
struct Channel *chptr, long mode_type)
{
/* $o doesn't make sense for bans and quiets. */
if(mode_type == CHFL_BAN || mode_type == CHFL_QUIET)
return EXTBAN_INVALID;
(void)chptr;
(void)mode_type;
if (data != NULL)
/* $o:admin or whatever */
return HasPrivilege(client_p, data) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
return IsOper(client_p) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
}
|