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