X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/cc200171d7c40be3b204460f9c14d5d37e771866..16d8d9fc6d5131eebc8fd10b4a025c0f8eda06f7:/modules/core/m_kick.c diff --git a/modules/core/m_kick.c b/modules/core/m_kick.c index edec515..88befac 100644 --- a/modules/core/m_kick.c +++ b/modules/core/m_kick.c @@ -27,7 +27,7 @@ #include "stdinc.h" #include "channel.h" #include "client.h" -#include "irc_string.h" +#include "match.h" #include "ircd.h" #include "numeric.h" #include "send.h" @@ -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 } @@ -52,7 +53,6 @@ DECLARE_MODULE_AV1(kick, NULL, NULL, kick_clist, NULL, NULL, "$Revision: 3317 $" /* ** m_kick -** parv[0] = sender prefix ** parv[1] = channel ** parv[2] = client to kick ** parv[3] = kick comment @@ -158,6 +158,21 @@ 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.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'; @@ -181,9 +196,6 @@ m_kick(struct Client *client_p, struct Client *source_p, int parc, const char *p sendto_server(client_p, chptr, CAP_TS6, NOCAPS, ":%s KICK %s %s :%s", use_id(source_p), chptr->chname, use_id(who), comment); - sendto_server(client_p, chptr, NOCAPS, CAP_TS6, - ":%s KICK %s %s :%s", - source_p->name, chptr->chname, who->name, comment); remove_user_from_channel(msptr); } else if (MyClient(source_p))