X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Fopertype.cpp;h=97a4de8c20ee5fc53f6534c691dd0c8ced78eaa7;hb=f1b04d0ef846713b38f9190a9f34a0c42bfa01cc;hp=86c637bbfb46715ca58837f09280ae76683fe17f;hpb=60f3d89d5907049a2627d134b652c675b052602b;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/opertype.cpp b/src/modules/m_spanningtree/opertype.cpp index 86c637bbf..97a4de8c2 100644 --- a/src/modules/m_spanningtree/opertype.cpp +++ b/src/modules/m_spanningtree/opertype.cpp @@ -1,64 +1,59 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ +/* + * InspIRCd -- Internet Relay Chat Daemon * - * InspIRCd: (C) 2002-2008 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits + * Copyright (C) 2010 Daniel De Graaf + * Copyright (C) 2008 Robin Burchell * - * This program is free but copyrighted software; see - * the file COPYING for details. + * This file is part of InspIRCd. InspIRCd is free software: you can + * redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation, version 2. * - * --------------------------------------------------- + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ -#include "inspircd.h" -#include "xline.h" - -#include "m_spanningtree/treesocket.h" -#include "m_spanningtree/treeserver.h" -#include "m_spanningtree/utils.h" - -/* $ModDep: m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */ +#include "inspircd.h" +#include "commands.h" +#include "treeserver.h" +#include "utils.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, std::deque ¶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 = this->Instance->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 (!u->IsModeSet('o')) - this->Instance->Users->all_opers.push_back(u); - u->modes[UM_OPERATOR] = 1; - strlcpy(u->oper,opertype.c_str(),NICKMAX-1); - Utils->DoOneToAllButSender(u->nick,"OPERTYPE",params,u->server); + u->oper = new OperInfo; + u->oper->name = opertype; + } + if (Utils->quiet_bursts) + { + /* + * If quiet bursts are enabled, and server is bursting or silent uline (i.e. services), + * then do nothing. -- w00t + */ TreeServer* remoteserver = Utils->FindServer(u->server); - bool dosend = true; - - if (this->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 || - this->Instance->SilentULine(this->Instance->FindServerNamePtr(u->server)) - ) - { - dosend = false; - } - } - - if (dosend) - this->Instance->SNO->WriteToSnoMask('o',"From %s: User %s (%s@%s) is now an IRC operator of type %s",u->server, u->nick,u->ident,u->host,irc::Spacify(opertype.c_str())); + if (remoteserver->bursting || ServerInstance->SilentULine(u->server)) + return CMD_SUCCESS; } - return true; + + 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; }