diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-02-20 22:25:56 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-02-20 22:25:56 +0000 |
commit | ec731e80784ec1940faefdd6dc72339c60c2b7ce (patch) | |
tree | 53f75713444b3d8f42c3b353366c63f7d2c2b262 /src/modules/m_spanningtree.cpp | |
parent | a3912ad8aa274fca0b1a21d5b4f7427484046f20 (diff) |
Propogation of remote kicks (testy test)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@3266 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_spanningtree.cpp')
-rw-r--r-- | src/modules/m_spanningtree.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/modules/m_spanningtree.cpp b/src/modules/m_spanningtree.cpp index 9397b6b59..33e5e5031 100644 --- a/src/modules/m_spanningtree.cpp +++ b/src/modules/m_spanningtree.cpp @@ -2345,6 +2345,24 @@ class TreeSocket : public InspSocket { return this->Time(prefix,params); } + else if (command == "KICK") + { + std::string sourceserv = this->myhost; + if (params.size() == 3) + { + userrec* user = Srv->FindNick(params[1]); + chanrec* chan = Srv->FindChannel(params[0]); + if (user && chan) + { + server_kick_channel(user,chan,(char*)params[2].c_str(),false); + } + } + if (this->InboundServerName != "") + { + sourceserv = this->InboundServerName; + } + return DoOneToAllButSenderRaw(line,sourceserv,prefix,command,params); + } else if (command == "SVSJOIN") { if (prefix == "") @@ -2757,7 +2775,7 @@ class ModuleSpanningTree : public Module } for (unsigned int q = 0; q < Current->ChildCount(); q++) { - if ((HideULines) && (Srv->IsUlined(Current->GetChild(q)))) + if ((HideULines) && (Srv->IsUlined(Current->GetChild(q)->GetName()))) { if (*user->oper) { @@ -3466,6 +3484,14 @@ class ModuleSpanningTree : public Module params.push_back(":"+reason); DoOneToMany(source->nick,"KICK",params); } + else if (!source) + { + std::deque<std::string> params; + params.push_back(chan->name); + params.push_back(user->nick); + params.push_back(":"+reason); + DoOneToMany(Srv->GetServerName(),"KICK",params); + } } virtual void OnRemoteKill(userrec* source, userrec* dest, std::string reason) |