summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Powell <petpow@saberuk.com>2019-09-23 11:49:26 +0100
committerPeter Powell <petpow@saberuk.com>2019-09-23 13:18:14 +0100
commita4305d8f3c3e613be839bdcd61a1d14c87fed5aa (patch)
tree16e01b6079f017c00d2bda2da0fcb759b98a5ea1
parentb64177d3fb4f113c4db3325575970964867f01cc (diff)
Add the server id to the Server class.
-rw-r--r--include/server.h24
-rw-r--r--include/users.h5
-rw-r--r--src/modules/m_spanningtree/commandbuilder.h2
-rw-r--r--src/modules/m_spanningtree/compat.cpp4
-rw-r--r--src/modules/m_spanningtree/main.cpp2
-rw-r--r--src/modules/m_spanningtree/num.cpp2
-rw-r--r--src/modules/m_spanningtree/override_map.cpp2
-rw-r--r--src/modules/m_spanningtree/pingtimer.cpp2
-rw-r--r--src/modules/m_spanningtree/postcommand.cpp2
-rw-r--r--src/modules/m_spanningtree/protocolinterface.cpp2
-rw-r--r--src/modules/m_spanningtree/server.cpp6
-rw-r--r--src/modules/m_spanningtree/treeserver.cpp36
-rw-r--r--src/modules/m_spanningtree/treeserver.h5
-rw-r--r--src/modules/m_spanningtree/uid.cpp2
14 files changed, 63 insertions, 33 deletions
diff --git a/include/server.h b/include/server.h
index d73c9673a..491754e13 100644
--- a/include/server.h
+++ b/include/server.h
@@ -22,6 +22,9 @@
class CoreExport Server : public classbase
{
protected:
+ /** The unique identifier for this server. */
+ const std::string id;
+
/** The name of this server
*/
const std::string name;
@@ -44,8 +47,25 @@ class CoreExport Server : public classbase
friend class ConfigReaderThread;
public:
- Server(const std::string& srvname, const std::string& srvdesc)
- : name(srvname), description(srvdesc), uline(false), silentuline(false) { }
+ Server(const std::string& srvid, const std::string& srvname, const std::string& srvdesc)
+ : id(srvid)
+ , name(srvname)
+ , description(srvdesc)
+ , uline(false)
+ , silentuline(false)
+ {
+ }
+
+ DEPRECATED_METHOD(Server(const std::string& srvname, const std::string& srvdesc))
+ : name(srvname)
+ , description(srvdesc)
+ , uline(false)
+ , silentuline(false)
+ {
+ }
+
+ /** Retrieves the unique identifier for this server (e.g. 36C). */
+ const std::string& GetId() const { return id; }
/**
* Returns the name of this server
diff --git a/include/users.h b/include/users.h
index 94a8af9a4..6b7e18953 100644
--- a/include/users.h
+++ b/include/users.h
@@ -885,13 +885,14 @@ class RemoteUser : public User
class CoreExport FakeUser : public User
{
public:
- FakeUser(const std::string& uid, Server* srv) : User(uid, srv, USERTYPE_SERVER)
+ FakeUser(const std::string& uid, Server* srv)
+ : User(uid, srv, USERTYPE_SERVER)
{
nick = srv->GetName();
}
FakeUser(const std::string& uid, const std::string& sname, const std::string& sdesc)
- : User(uid, new Server(sname, sdesc), USERTYPE_SERVER)
+ : User(uid, new Server(uid, sname, sdesc), USERTYPE_SERVER)
{
nick = sname;
}
diff --git a/src/modules/m_spanningtree/commandbuilder.h b/src/modules/m_spanningtree/commandbuilder.h
index f6cca9917..6374582c6 100644
--- a/src/modules/m_spanningtree/commandbuilder.h
+++ b/src/modules/m_spanningtree/commandbuilder.h
@@ -58,7 +58,7 @@ class CmdBuilder
: content(1, ':')
, tagsize(0)
{
- content.append(src->GetID());
+ content.append(src->GetId());
push(cmd);
FireEvent(src, cmd, tags);
}
diff --git a/src/modules/m_spanningtree/compat.cpp b/src/modules/m_spanningtree/compat.cpp
index 0d50b4325..270aad954 100644
--- a/src/modules/m_spanningtree/compat.cpp
+++ b/src/modules/m_spanningtree/compat.cpp
@@ -381,7 +381,7 @@ bool TreeSocket::PreProcessOldProtocolMessage(User*& who, std::string& cmd, Comm
return false;
}
- params[0] = server->GetID();
+ params[0] = server->GetId();
}
}
else if ((cmd == "GLINE") || (cmd == "KLINE") || (cmd == "ELINE") || (cmd == "ZLINE") || (cmd == "QLINE"))
@@ -564,7 +564,7 @@ bool TreeSocket::PreProcessOldProtocolMessage(User*& who, std::string& cmd, Comm
// Second parameter becomes the target uuid
params[0].swap(params[1]);
// Replace first param (now the PUSH payload, not needed) with the source sid
- params[0] = numericsource->GetID();
+ params[0] = numericsource->GetId();
params.push_back(InspIRCd::Format("%03u", numeric_number));
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp
index 43417bc3c..2848ce940 100644
--- a/src/modules/m_spanningtree/main.cpp
+++ b/src/modules/m_spanningtree/main.cpp
@@ -804,7 +804,7 @@ ModuleSpanningTree::~ModuleSpanningTree()
{
ServerInstance->PI = &ServerInstance->DefaultProtocolInterface;
- Server* newsrv = new Server(ServerInstance->Config->ServerName, ServerInstance->Config->ServerDesc);
+ Server* newsrv = new Server(ServerInstance->Config->GetSID(), ServerInstance->Config->ServerName, ServerInstance->Config->ServerDesc);
SetLocalUsersServer(newsrv);
delete Utils;
diff --git a/src/modules/m_spanningtree/num.cpp b/src/modules/m_spanningtree/num.cpp
index 564b808fd..23290421b 100644
--- a/src/modules/m_spanningtree/num.cpp
+++ b/src/modules/m_spanningtree/num.cpp
@@ -51,7 +51,7 @@ CommandNum::Builder::Builder(SpanningTree::RemoteUser* target, const Numeric::Nu
: CmdBuilder("NUM")
{
TreeServer* const server = (numeric.GetServer() ? (static_cast<TreeServer*>(numeric.GetServer())) : Utils->TreeRoot);
- push(server->GetID()).push(target->uuid).push(InspIRCd::Format("%03u", numeric.GetNumeric()));
+ push(server->GetId()).push(target->uuid).push(InspIRCd::Format("%03u", numeric.GetNumeric()));
const CommandBase::Params& params = numeric.GetParams();
if (!params.empty())
{
diff --git a/src/modules/m_spanningtree/override_map.cpp b/src/modules/m_spanningtree/override_map.cpp
index 735bc7148..2f22f89a4 100644
--- a/src/modules/m_spanningtree/override_map.cpp
+++ b/src/modules/m_spanningtree/override_map.cpp
@@ -76,7 +76,7 @@ static std::vector<std::string> GetMap(User* user, TreeServer* current, unsigned
std::string buffer = current->GetName();
if (user->IsOper())
{
- buffer += " (" + current->GetID();
+ buffer += " (" + current->GetId();
const std::string& cur_vers = current->GetRawVersion();
if (!cur_vers.empty())
diff --git a/src/modules/m_spanningtree/pingtimer.cpp b/src/modules/m_spanningtree/pingtimer.cpp
index 1c96259bf..baa799d00 100644
--- a/src/modules/m_spanningtree/pingtimer.cpp
+++ b/src/modules/m_spanningtree/pingtimer.cpp
@@ -36,7 +36,7 @@ PingTimer::State PingTimer::TickInternal()
if (state == PS_SENDPING)
{
// Last ping was answered, send next ping
- server->GetSocket()->WriteLine(CmdBuilder("PING").push(server->GetID()));
+ server->GetSocket()->WriteLine(CmdBuilder("PING").push(server->GetId()));
LastPingMsec = ServerInstance->Time() * 1000 + (ServerInstance->Time_ns() / 1000000);
// Warn next unless warnings are disabled. If they are, jump straight to timeout.
if (Utils->PingWarnTime)
diff --git a/src/modules/m_spanningtree/postcommand.cpp b/src/modules/m_spanningtree/postcommand.cpp
index 10cbbce82..ed962653e 100644
--- a/src/modules/m_spanningtree/postcommand.cpp
+++ b/src/modules/m_spanningtree/postcommand.cpp
@@ -64,7 +64,7 @@ void SpanningTreeUtilities::RouteCommand(TreeServer* origin, CommandBase* thiscm
if (encap)
{
- params.push(sdest->GetID());
+ params.push(sdest->GetId());
params.push(command);
}
}
diff --git a/src/modules/m_spanningtree/protocolinterface.cpp b/src/modules/m_spanningtree/protocolinterface.cpp
index 9fe93a389..28b2c8f16 100644
--- a/src/modules/m_spanningtree/protocolinterface.cpp
+++ b/src/modules/m_spanningtree/protocolinterface.cpp
@@ -65,7 +65,7 @@ bool SpanningTreeProtocolInterface::SendEncapsulatedData(const std::string& targ
return false;
// Use the SID of the target in the message instead of the server name
- encap.push(server->GetID()).push(cmd).insert(params).Unicast(server->ServerUser);
+ encap.push(server->GetId()).push(cmd).insert(params).Unicast(server->ServerUser);
}
return true;
diff --git a/src/modules/m_spanningtree/server.cpp b/src/modules/m_spanningtree/server.cpp
index 92ba69eda..41ea365e0 100644
--- a/src/modules/m_spanningtree/server.cpp
+++ b/src/modules/m_spanningtree/server.cpp
@@ -188,8 +188,8 @@ bool TreeSocket::CheckDuplicate(const std::string& sname, const std::string& sid
if (CheckDupe)
{
- this->SendError("Server ID "+CheckDupe->GetID()+" already exists on server "+CheckDupe->GetName()+"! You may want to specify the server ID for the server manually with <server:id> so they do not conflict.");
- ServerInstance->SNO->WriteToSnoMask('l', "Server connection from \002"+sname+"\002 denied, server ID '"+CheckDupe->GetID()+
+ this->SendError("Server ID "+CheckDupe->GetId()+" already exists on server "+CheckDupe->GetName()+"! You may want to specify the server ID for the server manually with <server:id> so they do not conflict.");
+ ServerInstance->SNO->WriteToSnoMask('l', "Server connection from \002"+sname+"\002 denied, server ID '"+CheckDupe->GetId()+
"' already exists on server "+CheckDupe->GetName());
return false;
}
@@ -228,7 +228,7 @@ CommandServer::Builder::Builder(TreeServer* server)
: CmdBuilder(server->GetParent(), "SERVER")
{
push(server->GetName());
- push(server->GetID());
+ push(server->GetId());
if (server->IsBursting())
push_property("burst", ConvToStr(server->StartBurst));
push_property("hidden", ConvToStr(server->Hidden));
diff --git a/src/modules/m_spanningtree/treeserver.cpp b/src/modules/m_spanningtree/treeserver.cpp
index 952899962..2b143269c 100644
--- a/src/modules/m_spanningtree/treeserver.cpp
+++ b/src/modules/m_spanningtree/treeserver.cpp
@@ -32,16 +32,22 @@
* no socket associated with it. Its version string is our own local version.
*/
TreeServer::TreeServer()
- : Server(ServerInstance->Config->ServerName, ServerInstance->Config->ServerDesc)
+ : Server(ServerInstance->Config->GetSID(), ServerInstance->Config->ServerName, ServerInstance->Config->ServerDesc)
, Parent(NULL), Route(NULL)
, VersionString(ServerInstance->GetVersionString())
, fullversion(ServerInstance->GetVersionString(true))
, rawversion(INSPIRCD_VERSION)
- , Socket(NULL), sid(ServerInstance->Config->GetSID()), behind_bursting(0), isdead(false)
+ , Socket(NULL)
+ , behind_bursting(0)
+ , isdead(false)
, pingtimer(this)
, ServerUser(ServerInstance->FakeClient)
- , age(ServerInstance->Time()), UserCount(ServerInstance->Users.LocalUserCount())
- , OperCount(0), rtt(0), StartBurst(0), Hidden(false)
+ , age(ServerInstance->Time())
+ , UserCount(ServerInstance->Users.LocalUserCount())
+ , OperCount(0)
+ , rtt(0)
+ , StartBurst(0)
+ , Hidden(false)
{
AddHashEntry();
}
@@ -51,11 +57,19 @@ TreeServer::TreeServer()
* the ping timer for the server.
*/
TreeServer::TreeServer(const std::string& Name, const std::string& Desc, const std::string& id, TreeServer* Above, TreeSocket* Sock, bool Hide)
- : Server(Name, Desc)
- , Parent(Above), Socket(Sock), sid(id), behind_bursting(Parent->behind_bursting), isdead(false)
+ : Server(id, Name, Desc)
+ , Parent(Above)
+ , Socket(Sock)
+ , behind_bursting(Parent->behind_bursting)
+ , isdead(false)
, pingtimer(this)
, ServerUser(new FakeUser(id, this))
- , age(ServerInstance->Time()), UserCount(0), OperCount(0), rtt(0), StartBurst(0), Hidden(Hide)
+ , age(ServerInstance->Time())
+ , UserCount(0)
+ , OperCount(0)
+ , rtt(0)
+ , StartBurst(0)
+ , Hidden(Hide)
{
ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "New server %s behind_bursting %u", GetName().c_str(), behind_bursting);
CheckULine();
@@ -128,7 +142,7 @@ void TreeServer::BeginBurst(uint64_t startms)
if ((!startms) || (startms > now))
startms = now;
this->StartBurst = startms;
- ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "Server %s started bursting at time %s behind_bursting %u", sid.c_str(), ConvToStr(startms).c_str(), behind_bursting);
+ ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "Server %s started bursting at time %s behind_bursting %u", GetId().c_str(), ConvToStr(startms).c_str(), behind_bursting);
}
void TreeServer::FinishBurstInternal()
@@ -166,7 +180,7 @@ void TreeServer::SQuitChild(TreeServer* server, const std::string& reason)
{
// Server split from us, generate a SQUIT message and broadcast it
ServerInstance->SNO->WriteGlobalSno('l', "Server \002" + server->GetName() + "\002 split: " + reason);
- CmdBuilder("SQUIT").push(server->GetID()).push_last(reason).Broadcast();
+ CmdBuilder("SQUIT").push(server->GetId()).push_last(reason).Broadcast();
}
else
{
@@ -258,7 +272,7 @@ void TreeServer::CheckULine()
void TreeServer::AddHashEntry()
{
Utils->serverlist[GetName()] = this;
- Utils->sidlist[sid] = this;
+ Utils->sidlist[GetId()] = this;
}
CullResult TreeServer::cull()
@@ -288,6 +302,6 @@ TreeServer::~TreeServer()
void TreeServer::RemoveHash()
{
- Utils->sidlist.erase(sid);
+ Utils->sidlist.erase(GetId());
Utils->serverlist.erase(GetName());
}
diff --git a/src/modules/m_spanningtree/treeserver.h b/src/modules/m_spanningtree/treeserver.h
index ffe0373d2..90841d0b4 100644
--- a/src/modules/m_spanningtree/treeserver.h
+++ b/src/modules/m_spanningtree/treeserver.h
@@ -51,7 +51,6 @@ class TreeServer : public Server
std::string rawversion;
TreeSocket* Socket; /* Socket used to communicate with this server */
- std::string sid; /* Server ID */
/** Counter counting how many servers are bursting in front of this server, including
* this server. Set to parents' value on construction then it is increased if the
@@ -194,10 +193,6 @@ class TreeServer : public Server
*/
const ChildServers& GetChildren() const { return Children; }
- /** Get server ID
- */
- const std::string& GetID() const { return sid; }
-
/** Marks a server as having finished bursting and performs appropriate actions.
*/
void FinishBurst();
diff --git a/src/modules/m_spanningtree/uid.cpp b/src/modules/m_spanningtree/uid.cpp
index bf99fb445..3ce7c904b 100644
--- a/src/modules/m_spanningtree/uid.cpp
+++ b/src/modules/m_spanningtree/uid.cpp
@@ -38,7 +38,7 @@ CmdResult CommandUID::HandleServer(TreeServer* remoteserver, CommandBase::Params
const std::string& modestr = params[8];
// Check if the length of the uuid is correct and confirm the sid portion of the uuid matches the sid of the server introducing the user
- if (params[0].length() != UIDGenerator::UUID_LENGTH || params[0].compare(0, 3, remoteserver->GetID()))
+ if (params[0].length() != UIDGenerator::UUID_LENGTH || params[0].compare(0, 3, remoteserver->GetId()))
throw ProtocolException("Bogus UUID");
// Sanity check on mode string: must begin with '+'
if (modestr[0] != '+')