X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/161f040940ad8422dfc03fadcb3a07ccd60201df..b2c208be091670e3c5259eba77187bae6ac6eece:/modules/core/m_kick.c diff --git a/modules/core/m_kick.c b/modules/core/m_kick.c index c87a1a50..eb72d1c9 100644 --- a/modules/core/m_kick.c +++ b/modules/core/m_kick.c @@ -37,6 +37,7 @@ #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 } @@ -96,7 +97,7 @@ m_kick(struct Client *client_p, struct Client *source_p, int parc, const char *p return 0; } - if(!is_chanop(msptr)) + if(get_channel_access(source_p, msptr) < CHFL_CHANOP) { 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; } + 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';