X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=blobdiff_plain;f=src%2Fcmd_neonserv_kick.c;h=f5af2c318ca3ce0e8311b56dbd535a189341cfbd;hp=373881ceb18994201e07bead95163ec878beb4fb;hb=c575e458c6257e75b97884847143b20965a5dfda;hpb=0f1dc61921eef1db8e404a5a82372e2d1cd55daa diff --git a/src/cmd_neonserv_kick.c b/src/cmd_neonserv_kick.c index 373881c..f5af2c3 100644 --- a/src/cmd_neonserv_kick.c +++ b/src/cmd_neonserv_kick.c @@ -1,3 +1,19 @@ +/* cmd_neonserv_kick.c - NeonServ v5.2 + * Copyright (C) 2011 Philipp Kreil (pk910) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include "cmd_neonserv.h" @@ -70,6 +86,10 @@ static void neonserv_cmd_kick_async1(struct ClientSocket *client, struct ClientS reply(textclient, user, "NS_SERVICE_IMMUNE", chanuser->user->nick); continue; } + if(cuser == user || ((cuser->flags & USERFLAG_ISAUTHED) && !stricmp(user->auth, cuser->auth))) { + reply(textclient, user, "NS_YOU_PROTECTED"); + continue; + } if(isUserProtected(chan, cuser, user)) { reply(textclient, user, "NS_USER_PROTECTED", cuser->nick); continue; @@ -90,6 +110,10 @@ static void neonserv_cmd_kick_async1(struct ClientSocket *client, struct ClientS //KICK AUTH nick++; cuser = NULL; + if(!stricmp(user->auth, nick)) { + reply(textclient, user, "NS_YOU_PROTECTED"); + continue; + } for(chanuser = getChannelUsers(chan, NULL); chanuser; chanuser = getChannelUsers(chan, chanuser)) { if((chanuser->user->flags & USERFLAG_ISAUTHED) && !stricmp(chanuser->user->auth, nick)) { provided_nicks++; @@ -106,7 +130,7 @@ static void neonserv_cmd_kick_async1(struct ClientSocket *client, struct ClientS cuser = chanuser->user; } kicked_users++; - putsock(client, "KICK %s %s :%s", chan->name, cuser->nick, reason); + putsock(client, "KICK %s %s :(%s) %s", chan->name, cuser->nick, user->nick, reason); } } } else { @@ -122,12 +146,16 @@ static void neonserv_cmd_kick_async1(struct ClientSocket *client, struct ClientS reply(textclient, user, "NS_SERVICE_IMMUNE", cuser->nick); continue; } + if(cuser == user || ((cuser->flags & USERFLAG_ISAUTHED) && !stricmp(user->auth, cuser->auth))) { + reply(textclient, user, "NS_YOU_PROTECTED"); + continue; + } if(isUserProtected(chan, cuser, user)) { reply(textclient, user, "NS_USER_PROTECTED", cuser->nick); continue; } kicked_users++; - putsock(client, "KICK %s %s :%s", chan->name, cuser->nick, reason); + putsock(client, "KICK %s %s :(%s) %s", chan->name, cuser->nick, user->nick, reason); } } if(kicked_users == provided_nicks)