]>
jfr.im git - solanum.git/blob - extensions/extb_channel.c
2 * Channel extban type: matches users who are in a certain public channel
13 static int _modinit(void);
14 static void _moddeinit(void);
15 static int eb_channel(const char *data
, struct Client
*client_p
, struct Channel
*chptr
, long mode_type
);
16 static const char extb_desc
[] = "Channel ($c) extban type";
18 DECLARE_MODULE_AV2(extb_channel
, _modinit
, _moddeinit
, NULL
, NULL
, NULL
, NULL
, NULL
, extb_desc
);
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
) && chptr2
!= chptr
)
51 return EXTBAN_INVALID
;
52 return IsMember(client_p
, chptr2
) ? EXTBAN_MATCH
: EXTBAN_NOMATCH
;