X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Fmodules.cpp;h=c3594897acb3585f15133c1c13b7ea19e19f06e2;hb=5a5a061c48af830ca90b699993cac079a9311b08;hp=5e241d0dcc4d574f311562cd4d91763127c922aa;hpb=a3f89e772514aca9aa4615ebe1656010111fc455;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/modules.cpp b/src/modules/m_spanningtree/modules.cpp index 5e241d0dc..c3594897a 100644 --- a/src/modules/m_spanningtree/modules.cpp +++ b/src/modules/m_spanningtree/modules.cpp @@ -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 @@ -12,30 +12,21 @@ */ #include "inspircd.h" -#include "commands/cmd_whois.h" -#include "commands/cmd_stats.h" -#include "socket.h" -#include "wildcard.h" #include "xline.h" -#include "transport.h" -#include "socketengine.h" -#include "m_spanningtree/main.h" -#include "m_spanningtree/utils.h" -#include "m_spanningtree/treeserver.h" -#include "m_spanningtree/link.h" #include "m_spanningtree/treesocket.h" -#include "m_spanningtree/resolvers.h" -#include "m_spanningtree/handshaketimer.h" +#include "m_spanningtree/treeserver.h" +#include "m_spanningtree/utils.h" + +/* $ModDep: m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */ -/* $ModDep: m_spanningtree/timesynctimer.h m_spanningtree/resolvers.h m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/link.h m_spanningtree/treesocket.h */ bool TreeSocket::Modules(const std::string &prefix, std::deque ¶ms) { if (params.empty()) return true; - if (!this->Instance->MatchText(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]); @@ -47,45 +38,37 @@ bool TreeSocket::Modules(const std::string &prefix, std::deque &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 module_names = Instance->Modules->GetAllModuleNames(0); + std::vector 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," "); - strlcpy(modulename,module_names[i].c_str(),256); - if (*source->oper) + + if (IS_OPER(source)) { - snprintf(strbuf, MAXBUF, "::%s 900 %s :0x%08lx %d.%d.%d.%d %s (%s)",Instance->Config->ServerName,source->nick,(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 900 %s :%s",Instance->Config->ServerName,source->nick,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 901 %s :End of MODULES list", Instance->Config->ServerName, source->nick); + 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; }