*** VERSION 5.3.0 ***
[NeonServV5.git] / src / cmd_neonserv_kick.c
index afe1f044aff7696c93cfe5c9d99d65c2069bb838..18c3193e8fb0121a03a686af74aa34b26a5069df 100644 (file)
@@ -1,4 +1,4 @@
-/* cmd_neonserv_kick.c - NeonServ v5.0
+/* cmd_neonserv_kick.c - NeonServ v5.3
  * Copyright (C) 2011  Philipp Kreil (pk910)
  * 
  * This program is free software: you can redistribute it and/or modify
@@ -86,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;
@@ -100,12 +104,16 @@ static void neonserv_cmd_kick_async1(struct ClientSocket *client, struct ClientS
             }
             for(i = 0; i < kick_chanuser_pos; i++) {
                 kicked_users++;
-                putsock(client, "KICK %s %s :%s", chan->name, kick_chanuser[i]->user->nick, reason);
+                putsock(client, "KICK %s %s :(%s) %s", chan->name, kick_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++;
@@ -138,6 +146,10 @@ 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;