]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/override_stats.cpp
Merge insp20
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / override_stats.cpp
index 83691c1513b03939819035b38756c3c4b19f11bb..14b3f5ef74b10a6936eb26d9859d4eb6c78421db 100644 (file)
  */
 
 
-/* $ModDesc: Provides a spanning tree server link protocol */
-
 #include "inspircd.h"
-#include "socket.h"
 
 #include "main.h"
 #include "utils.h"
-#include "treeserver.h"
 #include "link.h"
-#include "treesocket.h"
 
 ModResult ModuleSpanningTree::OnStats(char statschar, User* user, string_list &results)
 {
        if ((statschar == 'c') || (statschar == 'n'))
        {
-               for (unsigned int i = 0; i < Utils->LinkBlocks.size(); i++)
+               for (std::vector<reference<Link> >::iterator i = Utils->LinkBlocks.begin(); i != Utils->LinkBlocks.end(); ++i)
                {
-                       results.push_back(std::string(ServerInstance->Config->ServerName)+" 213 "+user->nick+" "+statschar+" *@"+(Utils->LinkBlocks[i]->HiddenFromStats ? "<hidden>" : Utils->LinkBlocks[i]->IPAddr)+" * "+Utils->LinkBlocks[i]->Name.c_str()+" "+ConvToStr(Utils->LinkBlocks[i]->Port)+" "+(Utils->LinkBlocks[i]->Hook.empty() ? "plaintext" : Utils->LinkBlocks[i]->Hook));
+                       Link* L = *i;
+                       results.push_back("213 "+user->nick+" "+statschar+" *@"+(L->HiddenFromStats ? "<hidden>" : L->IPAddr)+" * "+(*i)->Name.c_str()+" "+ConvToStr(L->Port)+" "+(L->Hook.empty() ? "plaintext" : L->Hook));
                        if (statschar == 'c')
-                               results.push_back(std::string(ServerInstance->Config->ServerName)+" 244 "+user->nick+" H * * "+Utils->LinkBlocks[i]->Name.c_str());
+                               results.push_back("244 "+user->nick+" H * * "+L->Name.c_str());
+               }
+               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("248 "+user->nick+" U "+name);
                }
                return MOD_RES_DENY;
        }
        return MOD_RES_PASSTHRU;
 }
-