]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/treeserver.cpp
Make the maximum hostname length configurable in the config.
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / treeserver.cpp
index 34b71e07fb82deb403c7a4d4e8eeafa97b00fd8f..b51c21db65dacd3ef80d2e8bae6ad8833222bf25 100644 (file)
@@ -33,8 +33,8 @@
  * no socket associated with it. Its version string is our own local version.
  */
 TreeServer::TreeServer()
-       : Server(ServerInstance->Config->ServerName)
-       , Parent(NULL), Route(NULL), ServerDesc(ServerInstance->Config->ServerDesc)
+       : Server(ServerInstance->Config->ServerName, ServerInstance->Config->ServerDesc)
+       , Parent(NULL), Route(NULL)
        , VersionString(ServerInstance->GetVersionString()), Socket(NULL), sid(ServerInstance->Config->GetSID()), ServerUser(ServerInstance->FakeClient)
        , age(ServerInstance->Time()), Warned(false), bursting(false), UserCount(0), OperCount(0), rtt(0), StartBurst(0), Hidden(false)
 {
@@ -46,8 +46,8 @@ TreeServer::TreeServer()
  * its ping counters so that it will be pinged one minute from now.
  */
 TreeServer::TreeServer(const std::string& Name, const std::string& Desc, const std::string& id, TreeServer* Above, TreeSocket* Sock, bool Hide)
-       : Server(Name)
-       , Parent(Above), ServerDesc(Desc), Socket(Sock), sid(id), ServerUser(new FakeUser(id, this))
+       : Server(Name, Desc)
+       , Parent(Above), Socket(Sock), sid(id), ServerUser(new FakeUser(id, this))
        , age(ServerInstance->Time()), Warned(false), bursting(true), UserCount(0), OperCount(0), rtt(0), Hidden(Hide)
 {
        CheckULine();
@@ -160,11 +160,24 @@ int TreeServer::QuitUsers(const std::string &reason)
 void TreeServer::CheckULine()
 {
        uline = silentuline = false;
-       std::map<irc::string, bool>::iterator it = ServerInstance->Config->ulines.find(GetName().c_str());
-       if (it != ServerInstance->Config->ulines.end())
+
+       ConfigTagList tags = ServerInstance->Config->ConfTags("uline");
+       for (ConfigIter i = tags.first; i != tags.second; ++i)
        {
-               uline = true;
-               silentuline = it->second;
+               ConfigTag* tag = i->second;
+               std::string server = tag->getString("server");
+               if (!strcasecmp(server.c_str(), GetName().c_str()))
+               {
+                       if (this->IsRoot())
+                       {
+                               ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, "Servers should not uline themselves (at " + tag->getTagLocation() + ")");
+                               return;
+                       }
+
+                       uline = true;
+                       silentuline = tag->getBool("silent");
+                       break;
+               }
        }
 }
 
@@ -186,11 +199,6 @@ TreeServer* TreeServer::GetRoute()
        return Route;
 }
 
-const std::string& TreeServer::GetDesc()
-{
-       return ServerDesc;
-}
-
 const std::string& TreeServer::GetVersion()
 {
        return VersionString;