X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_alias.cpp;h=cd53c9f9733cc45ea17cdc6be70375af3de1e0eb;hb=551d687ec6d7ce44be35fae0dd7345fe73c4f63a;hp=c7f0da690ed8b9eb80cae4378f3b0afc51c91163;hpb=9ee588b23fd915255d2cea0c537e6938297dbe5b;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_alias.cpp b/src/modules/m_alias.cpp index c7f0da690..cd53c9f97 100644 --- a/src/modules/m_alias.cpp +++ b/src/modules/m_alias.cpp @@ -1,16 +1,25 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ +/* + * InspIRCd -- Internet Relay Chat Daemon * - * InspIRCd: (C) 2002-2010 InspIRCd Development Team - * See: http://wiki.inspircd.org/Credits + * Copyright (C) 2009 Daniel De Graaf + * Copyright (C) 2005, 2009 Robin Burchell + * Copyright (C) 2004-2007, 2009 Craig Edwards + * Copyright (C) 2007 Dennis Friis * - * 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" /* $ModDesc: Provides aliases of commands. */ @@ -50,14 +59,12 @@ class Alias class ModuleAlias : public Module { - private: - char fprefix; /* We cant use a map, there may be multiple aliases with the same name. * We can, however, use a fancy invention: the multimap. Maps a key to one or more values. * -- w00t - */ + */ std::multimap Aliases; /* whether or not +B users are allowed to use fantasy commands */ @@ -65,11 +72,9 @@ class ModuleAlias : public Module virtual void ReadAliases() { - ConfigReader MyConf; - - AllowBots = MyConf.ReadFlag("fantasy", "allowbots", "no", 0); - - std::string fpre = MyConf.ReadValue("fantasy","prefix",0); + ConfigTag* fantasy = ServerInstance->Config->ConfValue("fantasy"); + AllowBots = fantasy->getBool("allowbots", false); + std::string fpre = fantasy->getString("prefix", "!"); fprefix = fpre.empty() ? '!' : fpre[0]; Aliases.clear(); @@ -78,12 +83,13 @@ class ModuleAlias : public Module { ConfigTag* tag = i->second; Alias a; - a.AliasedCommand = tag->getString("text").c_str(); + std::string aliastext = tag->getString("text"); + a.AliasedCommand = aliastext.c_str(); tag->readString("replace", a.ReplaceFormat, true); a.RequiredNick = tag->getString("requires"); a.ULineOnly = tag->getBool("uline"); - a.ChannelCommand = tag->getBool("channelcommand", "no"); - a.UserCommand = tag->getBool("usercommand", "yes"); + a.ChannelCommand = tag->getBool("channelcommand", false); + a.UserCommand = tag->getBool("usercommand", true); a.OperOnly = tag->getBool("operonly"); a.format = tag->getString("format"); a.CaseSensitive = tag->getBool("matchcase"); @@ -92,17 +98,11 @@ class ModuleAlias : public Module } public: - - ModuleAlias() + void init() { ReadAliases(); - ServerInstance->Modules->Attach(I_OnPreCommand, this); - ServerInstance->Modules->Attach(I_OnRehash, this); - ServerInstance->Modules->Attach(I_OnUserMessage, this); - } - - virtual ~ModuleAlias() - { + Implementation eventlist[] = { I_OnPreCommand, I_OnRehash, I_OnUserMessage }; + ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation)); } virtual Version GetVersion() @@ -263,7 +263,7 @@ class ModuleAlias : public Module } } - if ((a->OperOnly) && (!IS_OPER(user))) + if ((a->OperOnly) && (!user->IsOper())) return 0; if (!a->RequiredNick.empty()) @@ -271,7 +271,7 @@ class ModuleAlias : public Module u = ServerInstance->FindNick(a->RequiredNick); if (!u) { - user->WriteNumeric(401, ""+std::string(user->nick)+" "+a->RequiredNick+" :is currently unavailable. Please try again later."); + user->WriteNumeric(401, ""+user->nick+" "+a->RequiredNick+" :is currently unavailable. Please try again later."); return 1; } } @@ -280,7 +280,7 @@ class ModuleAlias : public Module if (!ServerInstance->ULine(u->server)) { ServerInstance->SNO->WriteToSnoMask('a', "NOTICE -- Service "+a->RequiredNick+" required by alias "+std::string(a->AliasedCommand.c_str())+" is not on a u-lined server, possibly underhanded antics detected!"); - user->WriteNumeric(401, ""+std::string(user->nick)+" "+a->RequiredNick+" :is an imposter! Please inform an IRC operator as soon as possible."); + user->WriteNumeric(401, ""+user->nick+" "+a->RequiredNick+" :is an imposter! Please inform an IRC operator as soon as possible."); return 1; } }