2 * Do not allow operators to be kicked from +M channels.
17 #include "privilege.h"
18 #include "s_newconf.h"
21 static const char chm_operpeace_desc
[] =
22 "Adds channel mode +M which prohibits operators from being kicked";
24 static void hdl_can_kick(hook_data_channel_approval
*);
26 mapi_hfn_list_av1 chm_operpeace_hfnlist
[] = {
27 { "can_kick", (hookfn
) hdl_can_kick
},
31 static unsigned int mymode
;
36 mymode
= cflag_add('M', chm_hidden
);
49 DECLARE_MODULE_AV2(chm_operpeace
, _modinit
, _moddeinit
, NULL
, NULL
, chm_operpeace_hfnlist
, NULL
, NULL
, chm_operpeace_desc
);
52 hdl_can_kick(hook_data_channel_approval
*data
)
54 struct Client
*source_p
= data
->client
;
55 struct Client
*who
= data
->target
;
56 struct Channel
*chptr
= data
->chptr
;
61 if((chptr
->mode
.mode
& mymode
) && HasPrivilege(who
, "oper:receive_immunity"))
63 sendto_realops_snomask(SNO_GENERAL
, L_NETWIDE
, "%s attempted to kick %s from %s (which is +M)",
64 source_p
->name
, who
->name
, chptr
->chname
);
65 sendto_one_numeric(source_p
, ERR_ISCHANSERVICE
, "%s %s :Cannot kick IRC operators from that channel.",
66 who
->name
, chptr
->chname
);