prevent strange users from kicking/banning their selves (and crying about it ......
authorpk910 <philipp@zoelle1.de>
Mon, 17 Oct 2011 13:39:01 +0000 (15:39 +0200)
committerpk910 <philipp@zoelle1.de>
Mon, 17 Oct 2011 14:06:47 +0000 (16:06 +0200)
src/bot_NeonServ.c
src/cmd_neonserv_addban.c
src/cmd_neonserv_ban.c
src/cmd_neonserv_kick.c
src/cmd_neonserv_kickban.c

index f81228eb0735933e771b72131b99b1c7bd1d51e9..362d999101469ef22663feccae7442cffda3d27c 100644 (file)
@@ -57,6 +57,7 @@ static const struct default_language_entry msgtab[] = {
     {"NS_NO_ACCESS", "You lack sufficient access to use this command."},
     {"NS_USER_PROTECTED", "Sorry, $b%s$b is protected."}, /* {ARGS: "TestUser"} */
     {"NS_SERVICE_IMMUNE", "$b%s$b may not be kicked, killed, banned, or deopped."}, /* {ARGS: "TestUser"} */
+       {"NS_YOU_PROTECTED", "You may not kick or ban yourself."},
     {"NS_TABLE_NONE", "   None"},
     {"NS_TABLE_COUNT", "Found $b%d$b matches."}, /* {ARGS: 5} */
     {"NS_BAN_ALREADY_ADDED", "$b%s$b is already banned in %s."}, /* {ARGS: "*!*@moeeep.*", "#TestChan"} */
index 49bf014853cdb98da733bece8f0ef2f2124d1421..a35c9333fe1e991b43c513c96d2ab0890fea2ffc 100644 (file)
@@ -74,6 +74,10 @@ static void neonserv_cmd_addban_async1(struct ClientSocket *client, struct Clien
                 reply(textclient, user, "NS_SERVICE_IMMUNE", chanuser->user->nick);
                 return;
             }
+            if(cuser == user || ((cuser->flags & USERFLAG_ISAUTHED) && !stricmp(user->auth, cuser->auth))) {
+                reply(textclient, user, "NS_YOU_PROTECTED");
+                return;
+            }
             if(isUserProtected(chan, cuser, user)) {
                 reply(textclient, user, "NS_USER_PROTECTED", cuser->nick);
                 return;
index 232b679cdf9cdafffb4f4792ea90b6e3f0c9ea30..7dec14d14f7186209f5ba120717acfd1b1bff276 100644 (file)
@@ -81,6 +81,11 @@ static void neonserv_cmd_ban_async1(struct ClientSocket *client, struct ClientSo
                     skip = 1;
                     break;
                 }
+                if(cuser == user || ((cuser->flags & USERFLAG_ISAUTHED) && !stricmp(user->auth, cuser->auth))) {
+                    reply(textclient, user, "NS_YOU_PROTECTED");
+                    skip = 1;
+                    break;
+                }
                 if(isUserProtected(chan, cuser, user)) {
                     reply(textclient, user, "NS_USER_PROTECTED", cuser->nick);
                     skip = 1;
index c0d73f99f42edc33102eef7842f6253a99765004..536141402b38467c9de39b47dd37d8ebe10e0036 100644 (file)
@@ -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;
@@ -106,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++;
@@ -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;
index 9d750c07037b793abc8f546ba94977a406d6462c..d71c3a736c6dbeed493f3c7420fed2b36d729ed6 100644 (file)
@@ -86,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;
@@ -109,6 +113,10 @@ static void neonserv_cmd_kickban_async1(struct ClientSocket *client, struct Clie
             //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++;
@@ -139,6 +147,10 @@ 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;