]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/commands.cpp
Fixed remote squit
[user/henk/code/inspircd.git] / src / commands.cpp
index 8d1436f7a387ce7ee04f846ccfda0400376b7c0b..bd30e5573417bc1414fc79a81a6558943b061daf 100644 (file)
@@ -233,7 +233,7 @@ void handle_kick(char **parameters, int pcnt, userrec *user)
 
        if ((!u) || (!Ptr))
        {
-               WriteServ(user->fd,"401 %s %s :No suck nick/channel",user->nick, parameters[0]);
+               WriteServ(user->fd,"401 %s %s :No such nick/channel",user->nick, parameters[0]);
                return;
        }
        
@@ -405,7 +405,7 @@ void handle_kill(char **parameters, int pcnt, userrec *user)
        }
        else
        {
-               WriteServ(user->fd,"401 %s %s :No suck nick/channel",user->nick, parameters[0]);
+               WriteServ(user->fd,"401 %s %s :No such nick/channel",user->nick, parameters[0]);
        }
 }
 
@@ -519,7 +519,7 @@ void handle_topic(char **parameters, int pcnt, userrec *user)
                        }
                        else
                        {
-                               WriteServ(user->fd,"401 %s %s :No suck nick/channel",user->nick, parameters[0]);
+                               WriteServ(user->fd,"401 %s %s :No such nick/channel",user->nick, parameters[0]);
                        }
                }
                return;
@@ -569,7 +569,7 @@ void handle_topic(char **parameters, int pcnt, userrec *user)
                        }
                        else
                        {
-                               WriteServ(user->fd,"401 %s %s :No suck nick/channel",user->nick, parameters[0]);
+                               WriteServ(user->fd,"401 %s %s :No such nick/channel",user->nick, parameters[0]);
                        }
                }
        }
@@ -600,7 +600,7 @@ void handle_names(char **parameters, int pcnt, userrec *user)
        }
        else
        {
-               WriteServ(user->fd,"401 %s %s :No suck nick/channel",user->nick, parameters[0]);
+               WriteServ(user->fd,"401 %s %s :No such nick/channel",user->nick, parameters[0]);
        }
 }
 
@@ -648,7 +648,7 @@ void handle_privmsg(char **parameters, int pcnt, userrec *user)
                else
                {
                        /* no such nick/channel */
-                       WriteServ(user->fd,"401 %s %s :No suck nick/channel",user->nick, parameters[0]);
+                       WriteServ(user->fd,"401 %s %s :No such nick/channel",user->nick, parameters[0]);
                }
                return;
        }
@@ -688,7 +688,7 @@ void handle_privmsg(char **parameters, int pcnt, userrec *user)
        else
        {
                /* no such nick/channel */
-               WriteServ(user->fd,"401 %s %s :No suck nick/channel",user->nick, parameters[0]);
+               WriteServ(user->fd,"401 %s %s :No such nick/channel",user->nick, parameters[0]);
        }
 }
 
@@ -736,7 +736,7 @@ void handle_notice(char **parameters, int pcnt, userrec *user)
                else
                {
                        /* no such nick/channel */
-                       WriteServ(user->fd,"401 %s %s :No suck nick/channel",user->nick, parameters[0]);
+                       WriteServ(user->fd,"401 %s %s :No such nick/channel",user->nick, parameters[0]);
                }
                return;
        }
@@ -768,7 +768,7 @@ void handle_notice(char **parameters, int pcnt, userrec *user)
        else
        {
                /* no such nick/channel */
-               WriteServ(user->fd,"401 %s %s :No suck nick/channel",user->nick, parameters[0]);
+               WriteServ(user->fd,"401 %s %s :No such nick/channel",user->nick, parameters[0]);
        }
 }
 
@@ -870,13 +870,13 @@ void handle_whois(char **parameters, int pcnt, userrec *user)
                }
                else
                {
-                       WriteServ(user->fd,"401 %s %s :No suck nick/channel",user->nick, parameters[0]);
+                       WriteServ(user->fd,"401 %s %s :No such nick/channel",user->nick, parameters[0]);
                }
        }
        else
        {
                /* no such nick/channel */
-               WriteServ(user->fd,"401 %s %s :No suck nick/channel",user->nick, parameters[0]);
+               WriteServ(user->fd,"401 %s %s :No such nick/channel",user->nick, parameters[0]);
        }
 }
 
@@ -1012,7 +1012,7 @@ void handle_who(char **parameters, int pcnt, userrec *user)
                        }
                        else
                        {
-                               WriteServ(user->fd,"401 %s %s :No suck nick/channel",user->nick, parameters[0]);
+                               WriteServ(user->fd,"401 %s %s :No such nick/channel",user->nick, parameters[0]);
                        }
                }
                else
@@ -1538,7 +1538,40 @@ void handle_squit(char **parameters, int pcnt, userrec *user)
        }
        else
        {
-               WriteServ(user->fd,"NOTICE :*** Remote SQUIT not supported yet.");
+               if (!strcasecmp(ServerName,parameters[0]))
+               {
+                       WriteServ(user->fd,"NOTICE %s :*** To take the local server out of the mesh, just use /SQUIT with no parameters instead.",user->nick);
+                       return;
+               }
+               bool have_this_server = false;
+                for (int j = 0; j < 32; j++)
+                {
+                        if (me[j] != NULL)
+                        {
+                                for (int x = 0; x < me[j]->connectors.size(); x++)
+                                {
+                                        if (!strcasecmp(me[j]->connectors[x].GetServerName().c_str(),parameters[0]))
+                                        {
+                                                // found a valid ircd_connector.
+                                               have_this_server = true;
+                                               break;
+                                        }
+                                }
+                        }
+                }
+               if (have_this_server)
+               {
+                       WriteOpers("SQUIT command issued by %s to remove %s from the mesh",user->nick,parameters[0]);
+                       WriteServ(user->fd,"NOTICE %s :*** Removing remote server %s.",user->nick,parameters[0]);
+                       char buffer[MAXBUF];
+                       snprintf(buffer,MAXBUF,"& %s",parameters[0]);
+                       NetSendToAll(buffer);
+                       DoSplit(parameters[0]);
+               }
+               else
+               {
+                       WriteServ(user->fd,"NOTICE %s :*** No such server exists in the mesh.",user->nick);
+               }
        }
 }
 
@@ -1756,7 +1789,7 @@ void handle_nick(char **parameters, int pcnt, userrec *user)
 
                WriteCommon(user,"NICK %s",parameters[0]);
                
-               // Q token must go to ALL servers!!!
+               // N token must go to ALL servers!!!
                char buffer[MAXBUF];
                snprintf(buffer,MAXBUF,"n %s %s",user->nick,parameters[0]);
                NetSendToAll(buffer);
@@ -2066,10 +2099,9 @@ void handle_n(char token,char* params,serverrec* source,serverrec* reply, char*
        char* newnick = strtok(NULL," ");
        
        userrec* user = Find(oldnick);
-       
+
        if (user)
        {
-               WriteCommon(user,"NICK %s",newnick);
                if (is_uline(tcp_host))
                {
                        int MOD_RESULT = 0;
@@ -2088,8 +2120,9 @@ void handle_n(char token,char* params,serverrec* source,serverrec* reply, char*
                        // broadcast this because its a services thingy
                        char buffer[MAXBUF];
                        snprintf(buffer,MAXBUF,"n %s %s",user->nick,newnick);
-                       NetSendToAll(buffer);
+                       NetSendToAllExcept(tcp_host,buffer);
                }
+               WriteCommon(user,"NICK %s",newnick);
                user = ReHashNick(user->nick, newnick);
                if (!user) return;
                if (!user->nick) return;