*** VERSION 5.2.0 ***
[NeonServV5.git] / src / cmd_neonserv_kickban.c
index 190770671ca620ef171db92f11e9af17c9dd28d0..9010e7c7a191dc6f4bd3b313e14fda2c2e6e5db4 100644 (file)
@@ -1,3 +1,19 @@
+/* cmd_neonserv_kickban.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 <http://www.gnu.org/licenses/>. 
+ */
 
 #include "cmd_neonserv.h"
 
@@ -70,6 +86,10 @@ static void neonserv_cmd_kickban_async1(struct ClientSocket *client, struct Clie
                         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;
@@ -87,12 +107,16 @@ static void neonserv_cmd_kickban_async1(struct ClientSocket *client, struct Clie
                     putsock(client, "MODE %s +b %s", chan->name, nick);
                 }
                 kicked_users++;
-                putsock(client, "KICK %s %s :%s", chan->name, kickban_chanuser[i]->user->nick, reason);
+                putsock(client, "KICK %s %s :(%s) %s", chan->name, kickban_chanuser[i]->user->nick, user->nick, reason);
             }
         } else if(*nick == '*') {
             //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++;
@@ -110,7 +134,7 @@ static void neonserv_cmd_kickban_async1(struct ClientSocket *client, struct Clie
                     }
                     kicked_users++;
                     putsock(client, "MODE %s +b %s", chan->name, generate_banmask(cuser, usermask));
-                    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 {
@@ -123,13 +147,17 @@ static void neonserv_cmd_kickban_async1(struct ClientSocket *client, struct Clie
                 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, "MODE %s +b %s", chan->name, generate_banmask(cuser, usermask));
-            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)