]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Read uline state in spanningtree; remove ConfigReader::ulines
authorAttila Molnar <attilamolnar@hush.com>
Wed, 8 Jan 2014 11:41:01 +0000 (12:41 +0100)
committerAttila Molnar <attilamolnar@hush.com>
Wed, 8 Jan 2014 11:41:01 +0000 (12:41 +0100)
include/configreader.h
src/commands/cmd_stats.cpp
src/configreader.cpp
src/modules/m_spanningtree/override_stats.cpp
src/modules/m_spanningtree/treeserver.cpp

index 46b8c5365f5396c051020cc78cdc47b226b43c75..e8c439933cef7fc7bf926b61b2b1038800303c74 100644 (file)
@@ -474,10 +474,6 @@ class CoreExport ServerConfig
         */
        std::string CustomVersion;
 
-       /** List of u-lined servers
-        */
-       std::map<irc::string, bool> ulines;
-
        /** If set to true, provide syntax hints for unknown commands
         */
        bool SyntaxHints;
index 5aa608f1403ebb2a08ef4bd5d8074b1687fb043e..411e9d5e1aaa01a7213c2ece98e600e407193b67 100644 (file)
@@ -149,15 +149,6 @@ void CommandStats::DoStats(char statschar, User* user, string_list &results)
                }
                break;
 
-               case 'U':
-               {
-                       for(std::map<irc::string, bool>::iterator i = ServerInstance->Config->ulines.begin(); i != ServerInstance->Config->ulines.end(); ++i)
-                       {
-                               results.push_back(sn+" 248 "+user->nick+" U "+std::string(i->first.c_str()));
-                       }
-               }
-               break;
-
                case 'P':
                {
                        unsigned int idx = 0;
index b1cc746df06e93821369fde5edd795cf7f753bb3..2320a44b1f570ef4597cdedb7c838bee419f2f43 100644 (file)
@@ -444,19 +444,6 @@ void ServerConfig::Fill()
                else
                        ServerInstance->SE->Close(socktest);
        }
-       ConfigTagList tags = ConfTags("uline");
-       for(ConfigIter i = tags.first; i != tags.second; ++i)
-       {
-               ConfigTag* tag = i->second;
-               std::string server;
-               if (!tag->readString("server", server))
-                       throw CoreException("<uline> tag missing server at " + tag->getTagLocation());
-
-               if (ServerName == server)
-                       throw CoreException("Servers should not uline themselves (at " + tag->getTagLocation() + ")");
-
-               ulines[assign(server)] = tag->getBool("silent");
-       }
 
        ReadXLine(this, "badip", "ipmask", ServerInstance->XLines->GetFactory("Z"));
        ReadXLine(this, "badnick", "nick", ServerInstance->XLines->GetFactory("Q"));
index 9762ecf4e3b9c202180e58e4883b1df6998a312c..bdfc6ef43f9c03dcc6b8033448d252c81e037e62 100644 (file)
@@ -37,6 +37,17 @@ ModResult ModuleSpanningTree::OnStats(char statschar, User* user, string_list &r
                }
                return MOD_RES_DENY;
        }
+       else if (statschar == 'U')
+       {
+               ConfigTagList tags = ServerInstance->Config->ConfTags("uline");
+               for (ConfigIter i = tags.first; i != tags.second; ++i)
+               {
+                       std::string name = i->second->getString("server");
+                       if (!name.empty())
+                               results.push_back(ServerInstance->Config->ServerName+" 248 "+user->nick+" U "+name);
+               }
+               return MOD_RES_DENY;
+       }
        return MOD_RES_PASSTHRU;
 }
 
index ecde1726148c40f1735c639345ed41f4eb77db6c..b51c21db65dacd3ef80d2e8bae6ad8833222bf25 100644 (file)
@@ -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;
+               }
        }
 }