]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/modules.cpp
Quiet bursts for uplinks, suggested by HiroP, thanks!
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / modules.cpp
index 71cd930415b0b1730ac17ab261fba0cb6ce7a2cd..c3594897acb3585f15133c1c13b7ea19e19f06e2 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2008 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
  * See: http://www.inspircd.org/wiki/index.php/Credits
  *
  * This program is free but copyrighted software; see
@@ -26,7 +26,7 @@ bool TreeSocket::Modules(const std::string &prefix, std::deque<std::string> &par
        if (params.empty())
                return true;
 
-       if (!InspIRCd::Match(this->Instance->Config->ServerName, params[0]))
+       if (!InspIRCd::Match(this->ServerInstance->Config->ServerName, params[0]))
        {
                /* Pass it on, not for us */
                Utils->DoOneToOne(prefix, "MODULES", params, params[0]);
@@ -38,45 +38,37 @@ bool TreeSocket::Modules(const std::string &prefix, std::deque<std::string> &par
        par.push_back(prefix);
        par.push_back("");
 
-       User* source = this->Instance->FindNick(prefix);
+       User* source = this->ServerInstance->FindNick(prefix);
        if (!source)
                return true;
 
-       std::vector<std::string> module_names = Instance->Modules->GetAllModuleNames(0);
+       std::vector<std::string> module_names = ServerInstance->Modules->GetAllModuleNames(0);
 
        for (unsigned int i = 0; i < module_names.size(); i++)
        {
-               Module* m = Instance->Modules->Find(module_names[i]);
+               Module* m = ServerInstance->Modules->Find(module_names[i]);
                Version V = m->GetVersion();
-               char modulename[MAXBUF];
-               char flagstate[MAXBUF];
-               *flagstate = 0;
-               if (V.Flags & VF_STATIC)
-                       strlcat(flagstate,", static",MAXBUF);
-               if (V.Flags & VF_VENDOR)
-                       strlcat(flagstate,", vendor",MAXBUF);
-               if (V.Flags & VF_COMMON)
-                       strlcat(flagstate,", common",MAXBUF);
-               if (V.Flags & VF_SERVICEPROVIDER)
-                       strlcat(flagstate,", service provider",MAXBUF);
-               if (!flagstate[0])
-                       strcpy(flagstate,"  <no flags>");
-               strlcpy(modulename,module_names[i].c_str(),256);
+
                if (IS_OPER(source))
                {
-                       snprintf(strbuf, MAXBUF, "::%s 702 %s :0x%08lx %d.%d.%d.%d %s (%s)",Instance->Config->ServerName,source->nick.c_str(),(unsigned long)m,
-                                       V.Major,V.Minor,V.Revision,V.Build,ServerConfig::CleanFilename(modulename),flagstate+2);
+                        std::string flags("Svsc");
+                       int pos = 0;
+                       for (int mult = 1; mult <= VF_SERVICEPROVIDER; mult *= 2, ++pos)
+                               if (!(V.Flags & mult))
+                                       flags[pos] = '-';
+
+                       snprintf(strbuf, MAXBUF, "::%s 702 %s :0x%08lx %s %s :%s", ServerInstance->Config->ServerName, source->nick.c_str(),(unsigned long)m, module_names[i].c_str(), flags.c_str(), V.version.c_str());
                }
                else
                {
-                       snprintf(strbuf, MAXBUF, "::%s 702 %s :%s",Instance->Config->ServerName,source->nick.c_str(),ServerConfig::CleanFilename(modulename));
+                       snprintf(strbuf, MAXBUF, "::%s 702 %s :%s", ServerInstance->Config->ServerName, source->nick.c_str(), module_names[i].c_str());
                }
                par[1] = strbuf;
-               Utils->DoOneToOne(Instance->Config->GetSID(), "PUSH", par, source->server);
+               Utils->DoOneToOne(ServerInstance->Config->GetSID(), "PUSH", par, source->server);
        }
-       snprintf(strbuf, MAXBUF, "::%s 703 %s :End of MODULES list", Instance->Config->ServerName, source->nick.c_str());
+       snprintf(strbuf, MAXBUF, "::%s 703 %s :End of MODULES list", ServerInstance->Config->ServerName, source->nick.c_str());
        par[1] = strbuf;
-       Utils->DoOneToOne(Instance->Config->GetSID(), "PUSH", par, source->server);
+       Utils->DoOneToOne(ServerInstance->Config->GetSID(), "PUSH", par, source->server);
        return true;
 }