]>
jfr.im git - irc/rqf/shadowircd.git/blob - extensions/extb_channel.c
2 * Channel extban type: matches users who are in a certain public channel
14 static int _modinit(void);
15 static void _moddeinit(void);
16 static int eb_channel(const char *data
, struct Client
*client_p
, struct Channel
*chptr
, long mode_type
);
18 DECLARE_MODULE_AV1(extb_channel
, _modinit
, _moddeinit
, NULL
, NULL
, NULL
, "$Revision: 1723 $");
23 extban_table
['c'] = eb_channel
;
31 extban_table
['c'] = NULL
;
34 static int eb_channel(const char *data
, struct Client
*client_p
,
35 struct Channel
*chptr
, long mode_type
)
37 struct Channel
*chptr2
;
42 return EXTBAN_INVALID
;
43 chptr2
= find_channel(data
);
45 return EXTBAN_INVALID
;
46 /* require consistent target */
47 if (chptr
->chname
[0] == '#' && data
[0] == '&')
48 return EXTBAN_INVALID
;
49 /* privacy! don't allow +s/+p channels to influence another channel */
50 if (!PubChannel(chptr2
))
51 return EXTBAN_INVALID
;
52 return IsMember(client_p
, chptr2
) ? EXTBAN_MATCH
: EXTBAN_NOMATCH
;