X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Fmodules.cpp;h=c3594897acb3585f15133c1c13b7ea19e19f06e2;hb=5a5a061c48af830ca90b699993cac079a9311b08;hp=71cd930415b0b1730ac17ab261fba0cb6ce7a2cd;hpb=a1a7b96a8c994eb09a3d071f3daf28252b8c188b;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/modules.cpp b/src/modules/m_spanningtree/modules.cpp index 71cd93041..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 @@ -26,7 +26,7 @@ bool TreeSocket::Modules(const std::string &prefix, std::deque &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 &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 (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; }