]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Made routing of NOTICE/PRIVMSG to users cleverer
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Fri, 2 Dec 2005 20:03:02 +0000 (20:03 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Fri, 2 Dec 2005 20:03:02 +0000 (20:03 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@2121 e03df62e-2008-0410-955e-edbf42e46eb7

src/modules/m_spanningtree.cpp

index da745dff5f101f8491b697249f3e2f7ef3d94799..d63075b7874d9a0d63eb153be18ad4c00dbb1ad7 100644 (file)
@@ -63,7 +63,7 @@ class TreeSocket;
 bool DoOneToOne(std::string prefix, std::string command, std::deque<std::string> params, std::string target);
 bool DoOneToAllButSender(std::string prefix, std::string command, std::deque<std::string> params, std::string omit);
 bool DoOneToMany(std::string prefix, std::string command, std::deque<std::string> params);
-bool DoOneToAllButSenderRaw(std::string data,std::string omit);
+bool DoOneToAllButSenderRaw(std::string data,std::string omit, std::string prefix,std::string command,std::deque<std::string> params);
 void ReadConfiguration(bool rebind);
 
 class TreeServer
@@ -1127,7 +1127,7 @@ class TreeSocket : public InspSocket
                                                        return true;
                                                }
                                        }
-                                       return DoOneToAllButSenderRaw(line,sourceserv);
+                                       return DoOneToAllButSenderRaw(line,sourceserv,prefix,command,params);
 
                                }
                                return true;
@@ -1179,8 +1179,29 @@ class TreeSocket : public InspSocket
        }
 };
 
-bool DoOneToAllButSenderRaw(std::string data,std::string omit)
+bool DoOneToAllButSenderRaw(std::string data,std::string omit,std::string prefix,std::string command,std::deque<std::string> params)
 {
+       if ((command == "NOTICE") || (command == "PRIVMSG"))
+       {
+               log(DEBUG,"*** Clever routing section for PRIVMSG/NOTICE");
+               if (params.size() >= 2)
+               {
+                       if (*(params[0].c_str()) != '#')
+                       {
+                               userrec* d = Srv->FindNick(params[0]);
+                               if (d)
+                               {
+                                       log(DEBUG,"*** Special one-to-one action for %s",d->nick);
+                                       std::deque<std::string> par;
+                                       par.clear();
+                                       par.push_back(params[0]);
+                                       par.push_back(":"+params[1]);
+                                       DoOneToOne(prefix,command,par,d->server);
+                                       return true;
+                               }
+                       }
+               }
+       }
        TreeServer* omitroute = BestRouteTo(omit);
        for (unsigned int x = 0; x < TreeRoot->ChildCount(); x++)
        {