X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Fserver.cpp;h=69cae001c6f13f20ff2d4cb0116b7b84984c34f8;hb=a8b146419b2aae36da25b7202292528efd3158a9;hp=fcd326974c84130525b208e997cec12212f9aac0;hpb=b14ebbccf08ec34a73e1ba271e67da80d9fe805c;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/server.cpp b/src/modules/m_spanningtree/server.cpp index fcd326974..69cae001c 100644 --- a/src/modules/m_spanningtree/server.cpp +++ b/src/modules/m_spanningtree/server.cpp @@ -31,18 +31,14 @@ * Some server somewhere in the network introducing another server. * -- w */ -CmdResult CommandServer::Handle(User* user, std::vector& params) +CmdResult CommandServer::HandleServer(TreeServer* ParentOfThis, std::vector& params) { std::string servername = params[0]; // password is not used for a remote server // hopcount is not used (ever) std::string sid = params[3]; std::string description = params[4]; - TreeServer* ParentOfThis = Utils->FindServer(user->server); - TreeSocket* socket = ParentOfThis->GetRoute()->GetSocket(); - - if (!IS_SERVER(user)) - return CMD_FAILURE; + TreeSocket* socket = ParentOfThis->GetSocket(); if (!InspIRCd::IsSID(sid)) { @@ -67,7 +63,7 @@ CmdResult CommandServer::Handle(User* user, std::vector& params) Link* lnk = Utils->FindLink(servername); - TreeServer *Node = new TreeServer(servername, description, sid, ParentOfThis,NULL, lnk ? lnk->Hidden : false); + TreeServer* Node = new TreeServer(servername, description, sid, ParentOfThis, ParentOfThis->GetSocket(), lnk ? lnk->Hidden : false); ParentOfThis->AddChild(Node); ServerInstance->SNO->WriteToSnoMask('L', "Server \002"+ParentOfThis->GetName()+"\002 introduced server \002"+servername+"\002 ("+description+")"); @@ -146,11 +142,8 @@ bool TreeSocket::Outbound_Reply_Server(parameterlist ¶ms) Utils->TreeRoot->AddChild(MyRoot); this->DoBurst(MyRoot); - params[4] = ":" + params[4]; - - /* IMPORTANT: Take password/hmac hash OUT of here before we broadcast the introduction! */ - params[1] = "*"; - Utils->DoOneToAllButSender(ServerInstance->Config->GetSID(),"SERVER",params,sname); + // This will send a * in place of the password/hmac + CommandServer::Builder(MyRoot).Forward(MyRoot); return true; } @@ -252,3 +245,11 @@ bool TreeSocket::Inbound_Server(parameterlist ¶ms) return false; } +CommandServer::Builder::Builder(TreeServer* server) + : CmdBuilder(server->GetParent()->GetID(), "SERVER") +{ + push(server->GetName()); + push_raw(" * 0 "); + push_raw(server->GetID()); + push_last(server->GetDesc()); +}