]> jfr.im git - solanum.git/blobdiff - modules/core/m_kick.c
m_info: Correct description of general::client_exit like in example confs.
[solanum.git] / modules / core / m_kick.c
index c87a1a50a59ca2e5d1c67001e0f3741ebf5a62d9..eb72d1c9cbbe1d59e3154d2d5a610fc9f4840379 100644 (file)
@@ -37,6 +37,7 @@
 #include "hash.h"
 #include "packet.h"
 #include "s_serv.h"
 #include "hash.h"
 #include "packet.h"
 #include "s_serv.h"
+#include "hook.h"
 
 static int m_kick(struct Client *, struct Client *, int, const char **);
 #define mg_kick { m_kick, 3 }
 
 static int m_kick(struct Client *, struct Client *, int, const char **);
 #define mg_kick { m_kick, 3 }
@@ -96,7 +97,7 @@ m_kick(struct Client *client_p, struct Client *source_p, int parc, const char *p
                        return 0;
                }
 
                        return 0;
                }
 
-               if(!is_chanop(msptr))
+               if(get_channel_access(source_p, msptr) < CHFL_CHANOP)
                {
                        if(MyConnect(source_p))
                        {
                {
                        if(MyConnect(source_p))
                        {
@@ -157,6 +158,22 @@ m_kick(struct Client *client_p, struct Client *source_p, int parc, const char *p
                        return 0;
                }
 
                        return 0;
                }
 
+               if(MyClient(source_p))
+               {
+                       hook_data_channel_approval hookdata;
+
+                       hookdata.client = source_p;
+                       hookdata.chptr = chptr;
+                       hookdata.msptr = msptr;
+                       hookdata.target = who;
+                       hookdata.approved = 1;
+
+                       call_hook(h_can_kick, &hookdata);
+
+                       if (!hookdata.approved)
+                               return 0;
+               }
+
                comment = LOCAL_COPY((EmptyString(parv[3])) ? who->name : parv[3]);
                if(strlen(comment) > (size_t) REASONLEN)
                        comment[REASONLEN] = '\0';
                comment = LOCAL_COPY((EmptyString(parv[3])) ? who->name : parv[3]);
                if(strlen(comment) > (size_t) REASONLEN)
                        comment[REASONLEN] = '\0';