11 static const char override_kick_immunity_desc
[] =
12 "Prevents +p users (oper override) from being kicked from any channel";
14 static void can_kick(void *data
);
16 mapi_hfn_list_av1 override_kick_immunity_hfnlist
[] = {
17 { "can_kick", (hookfn
) can_kick
},
24 hook_data_channel_approval
*data
= vdata
;
26 if (data
->target
->umodes
& user_modes
['p'])
28 if (data
->client
->umodes
& user_modes
['p'])
30 /* Using oper-override to kick an oper
31 * who's also using oper-override, better
32 * report what happened.
34 sendto_realops_snomask(SNO_GENERAL
, L_NETWIDE
, "%s is using oper-override on %s (KICK %s)",
35 get_oper_name(data
->client
), data
->chptr
->chname
, data
->target
->name
);
39 /* Like cmode +M, let's report any attempt
40 * to kick the immune oper.
42 sendto_realops_snomask(SNO_GENERAL
, L_NETWIDE
, "%s attempted to kick %s from %s (who is +p)",
43 data
->client
->name
, data
->target
->name
, data
->chptr
->chname
);
44 sendto_one_numeric(data
->client
, ERR_ISCHANSERVICE
, "%s %s :Cannot kick immune IRC operators.",
45 data
->target
->name
, data
->chptr
->chname
);
52 DECLARE_MODULE_AV2(override_kick_immunity
, NULL
, NULL
, NULL
, NULL
,
53 override_kick_immunity_hfnlist
, NULL
, NULL
, override_kick_immunity_desc
);