]> jfr.im git - solanum.git/blobdiff - extensions/chm_operpeace.c
explicitly show IP in SNO_BANNED snotes
[solanum.git] / extensions / chm_operpeace.c
index aaa40dc843bd5532376f8d0063c50cbaaf2fafbc..53a22d9ba2f505f0c78b8e979442602ab35762a8 100644 (file)
 #include "s_newconf.h"
 #include "chmode.h"
 
-static void hdl_can_kick(hook_data_channel_approval *);
+static const char chm_operpeace_desc[] =
+       "Adds channel mode +M which prohibits operators from being kicked";
+
+static void hdl_can_kick(void *);
 
 mapi_hfn_list_av1 chm_operpeace_hfnlist[] = {
-       { "can_kick", (hookfn) hdl_can_kick },
+       { "can_kick", hdl_can_kick },
        { NULL, NULL }
 };
 
@@ -43,11 +46,12 @@ _moddeinit(void)
        cflag_orphan('M');
 }
 
-DECLARE_MODULE_AV1(chm_operpeace, _modinit, _moddeinit, NULL, NULL, chm_operpeace_hfnlist, "$Revision$");
+DECLARE_MODULE_AV2(chm_operpeace, _modinit, _moddeinit, NULL, NULL, chm_operpeace_hfnlist, NULL, NULL, chm_operpeace_desc);
 
 static void
-hdl_can_kick(hook_data_channel_approval *data)
+hdl_can_kick(void *data_)
 {
+       hook_data_channel_approval *data = data_;
        struct Client *source_p = data->client;
        struct Client *who = data->target;
        struct Channel *chptr = data->chptr;
@@ -55,7 +59,7 @@ hdl_can_kick(hook_data_channel_approval *data)
        if(IsOper(source_p))
                return;
 
-       if((chptr->mode.mode & mymode) && IsOper(who))
+       if((chptr->mode.mode & mymode) && HasPrivilege(who, "oper:receive_immunity"))
        {
                sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "%s attempted to kick %s from %s (which is +M)",
                        source_p->name, who->name, chptr->chname);