X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/954012d39be2c96c55f6939e69edd8aa90495820..4b1cce65ed584cc0fdc9f3c5ec84373fdf2566a8:/extensions/m_okick.c diff --git a/extensions/m_okick.c b/extensions/m_okick.c index 156a046e..3bdfda6d 100644 --- a/extensions/m_okick.c +++ b/extensions/m_okick.c @@ -19,14 +19,12 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA - * - * $Id: m_okick.c 3554 2007-08-10 22:31:14Z jilles $ */ #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,28 +35,30 @@ #include "packet.h" #include "s_conf.h" #include "s_serv.h" +#include "messages.h" +#include "logger.h" -static int mo_okick(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]); +static const char okick_desc[] = "Allow admins to forcibly kick users from channels with the OKICK command"; +static void mo_okick(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[]); struct Message okick_msgtab = { - "OKICK", 0, 0, 0, MFLG_SLOW, + "OKICK", 0, 0, 0, 0, {mg_unreg, mg_not_oper, mg_ignore, mg_ignore, mg_ignore, {mo_okick, 4}} }; mapi_clist_av1 okick_clist[] = { &okick_msgtab, NULL }; -DECLARE_MODULE_AV1(okick, NULL, NULL, okick_clist, NULL, NULL, "$Revision: 3554 $"); +DECLARE_MODULE_AV2(okick, NULL, NULL, okick_clist, NULL, NULL, NULL, NULL, okick_desc); /* ** m_okick -** parv[0] = sender prefix ** parv[1] = channel ** parv[2] = client to kick ** parv[3] = kick comment */ -static int -mo_okick(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) +static void +mo_okick(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { struct Client *who; struct Client *target_p; @@ -73,8 +73,8 @@ mo_okick(struct Client *client_p, struct Client *source_p, int parc, const char if(*parv[2] == '\0') { - sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "KICK"); - return 0; + sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS), me.name, source_p->name, "KICK"); + return; } if(MyClient(source_p) && !IsFloodDone(source_p)) @@ -94,29 +94,28 @@ mo_okick(struct Client *client_p, struct Client *source_p, int parc, const char if(!chptr) { sendto_one_numeric(source_p, ERR_NOSUCHCHANNEL, form_str(ERR_NOSUCHCHANNEL), name); - return 0; + return; } if((p = strchr(parv[2], ','))) *p = '\0'; - user = LOCAL_COPY(parv[2]); // strtoken(&p2, parv[2], ","); + user = LOCAL_COPY(parv[2]); // strtoken(&p2, parv[2], ","); if(!(who = find_chasing(source_p, user, &chasing))) { - return 0; + return; } if((target_p = find_client(user)) == NULL) { - sendto_one(source_p, form_str(ERR_NOSUCHNICK), me.name, parv[0], user); - return 0; + sendto_one(source_p, form_str(ERR_NOSUCHNICK), user); + return; } if((msptr = find_channel_membership(chptr, target_p)) == NULL) { - sendto_one(source_p, form_str(ERR_USERNOTINCHANNEL), - me.name, parv[0], parv[1], parv[2]); - return 0; + sendto_one(source_p, form_str(ERR_USERNOTINCHANNEL), parv[1], parv[2]); + return; } sendto_wallops_flags(UMODE_WALLOP, &me, @@ -132,12 +131,9 @@ mo_okick(struct Client *client_p, struct Client *source_p, int parc, const char me.name, chptr->chname, target_p->name, source_p->name, source_p->username, source_p->host); - sendto_channel_local(ALL_MEMBERS, chptr, ":%s KICK %s %s :%s", + sendto_channel_local(&me, ALL_MEMBERS, chptr, ":%s KICK %s %s :%s", me.name, chptr->chname, who->name, comment); sendto_server(&me, chptr, CAP_TS6, NOCAPS, ":%s KICK %s %s :%s", me.id, chptr->chname, who->id, comment); - sendto_server(&me, chptr, NOCAPS, CAP_TS6, - ":%s KICK %s %s :%s", me.name, chptr->chname, who->name, comment); remove_user_from_channel(msptr); - return 0; }