X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Fopertype.cpp;h=807a76d39abf09c890fa33c17358e1c1ea7651e1;hb=dce58b1611e275118d418bfb3b4402bd14d279dd;hp=dc9c0064f0197a09fc82d96395455263ef0b1a29;hpb=de25d946733f774e3a5b53a58438a9c92af0acbe;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/opertype.cpp b/src/modules/m_spanningtree/opertype.cpp index dc9c0064f..807a76d39 100644 --- a/src/modules/m_spanningtree/opertype.cpp +++ b/src/modules/m_spanningtree/opertype.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * InspIRCd: (C) 2002-2010 InspIRCd Development Team * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see @@ -12,50 +12,46 @@ */ #include "inspircd.h" -#include "xline.h" - -#include "treesocket.h" +#include "commands.h" #include "treeserver.h" #include "utils.h" -/* $ModDep: m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */ - - /** Because the core won't let users or even SERVERS set +o, * we use the OPERTYPE command to do this. */ -bool TreeSocket::OperType(const std::string &prefix, parameterlist ¶ms) +CmdResult CommandOpertype::Handle(const std::vector& params, User *u) { - if (params.size() != 1) - return true; + SpanningTreeUtilities* Utils = ((ModuleSpanningTree*)(Module*)creator)->Utils; std::string opertype = params[0]; - User* u = ServerInstance->FindNick(prefix); - if (u) + if (!IS_OPER(u)) + ServerInstance->Users->all_opers.push_back(u); + u->modes[UM_OPERATOR] = 1; + OperIndex::iterator iter = ServerInstance->Config->oper_blocks.find(" " + opertype); + if (iter != ServerInstance->Config->oper_blocks.end()) + u->oper = iter->second; + else { - if (!IS_OPER(u)) - ServerInstance->Users->all_opers.push_back(u); - u->modes[UM_OPERATOR] = 1; - u->oper.assign(opertype, 0, 512); - Utils->DoOneToAllButSender(u->uuid, "OPERTYPE", params, u->server); + u->oper = new OperInfo; + u->oper->name = opertype; + } - TreeServer* remoteserver = Utils->FindServer(u->server); - bool dosend = true; + TreeServer* remoteserver = Utils->FindServer(u->server); + bool dosend = true; - if (this->Utils->quiet_bursts) + if (Utils->quiet_bursts) + { + /* + * If quiet bursts are enabled, and server is bursting or silent uline (i.e. services), + * then do nothing. -- w00t + */ + if (remoteserver->bursting || ServerInstance->SilentULine(u->server)) { - /* - * If quiet bursts are enabled, and server is bursting or silent uline (i.e. services), - * then do nothing. -- w00t - */ - if (remoteserver->bursting || ServerInstance->SilentULine(u->server)) - { - dosend = false; - } + dosend = false; } - - if (dosend) - ServerInstance->SNO->WriteToSnoMask('O',"From %s: User %s (%s@%s) is now an IRC operator of type %s",u->server.c_str(), u->nick.c_str(),u->ident.c_str(), u->host.c_str(), irc::Spacify(opertype.c_str())); } - return true; + + if (dosend) + ServerInstance->SNO->WriteToSnoMask('O',"From %s: User %s (%s@%s) is now an IRC operator of type %s",u->server.c_str(), u->nick.c_str(),u->ident.c_str(), u->host.c_str(), irc::Spacify(opertype.c_str())); + return CMD_SUCCESS; }