diff options
author | Adam <Adam@anope.org> | 2013-01-08 20:25:01 -0500 |
---|---|---|
committer | Adam <Adam@anope.org> | 2013-01-08 20:25:01 -0500 |
commit | 9931ec299446c3d9e149f91a953748350c38eba6 (patch) | |
tree | fb3969d5aeb2ce23a7d2cde9fd9e47841b125c4b /modules/commands/cs_modes.cpp | |
parent | 5f3dfc296041540960f372b010eea623bdd7d335 (diff) |
Use m_rewrite to rewrite op, deop, halfop, ... etc
Diffstat (limited to 'modules/commands/cs_modes.cpp')
-rw-r--r-- | modules/commands/cs_modes.cpp | 430 |
1 files changed, 0 insertions, 430 deletions
diff --git a/modules/commands/cs_modes.cpp b/modules/commands/cs_modes.cpp deleted file mode 100644 index 26783c531..000000000 --- a/modules/commands/cs_modes.cpp +++ /dev/null @@ -1,430 +0,0 @@ -/* ChanServ core functions - * - * (C) 2003-2012 Anope Team - * Contact us at team@anope.org - * - * Please read COPYING and README for further details. - * - * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - */ - -/*************************************************************************/ - -#include "module.h" - -class CommandModeBase : public Command -{ - void do_mode(CommandSource &source, Command *com, ChannelMode *cm, const Anope::string &chan, const Anope::string &nick, bool set, const Anope::string &level, const Anope::string &levelself) - { - User *u = source.GetUser(); - User *u2 = User::Find(nick, true); - Channel *c = Channel::Find(chan); - - if (!c) - { - source.Reply(CHAN_X_NOT_IN_USE, chan.c_str()); - return; - - } - - if (!u2) - { - source.Reply(NICK_X_NOT_IN_USE, nick.c_str()); - return; - } - - ChannelInfo *ci = c->ci; - if (!ci) - { - source.Reply(CHAN_X_NOT_REGISTERED, c->name.c_str()); - return; - } - - bool is_same = u == u2; - AccessGroup u_access = source.AccessFor(ci), u2_access = ci->AccessFor(u2); - - if (is_same ? !source.AccessFor(ci).HasPriv(levelself) : !source.AccessFor(ci).HasPriv(level)) - source.Reply(ACCESS_DENIED); - else if (!set && !is_same && ci->HasFlag(CI_PEACE) && u2_access >= u_access) - source.Reply(ACCESS_DENIED); - else if (!set && u2->IsProtected() && !is_same) - source.Reply(ACCESS_DENIED); - else if (!c->FindUser(u2)) - source.Reply(NICK_X_NOT_ON_CHAN, u2->nick.c_str(), c->name.c_str()); - else - { - if (set) - c->SetMode(NULL, cm, u2->GetUID()); - else - c->RemoveMode(NULL, cm, u2->GetUID()); - - Log(LOG_COMMAND, source, com, ci) << "for " << u2->nick; - } - } - - protected: - /** do_util: not a command, but does the job of others - * @param source The source of the command - * @param com The command calling this function - * @param cm A channel mode class - * @param chan The channel its being set on - * @param nick The nick the modes being set on - * @param set Is the mode being set or removed - * @param level The access level required to set this mode on someone else - * @param levelself The access level required to set this mode on yourself - */ - void do_util(CommandSource &source, Command *com, ChannelMode *cm, const Anope::string &chan, const Anope::string &nick, bool set, const Anope::string &level, const Anope::string &levelself) - { - User *u = source.GetUser(); - - if (chan.empty() && u) - for (User::ChanUserList::iterator it = u->chans.begin(); it != u->chans.end(); ++it) - do_mode(source, com, cm, (*it)->chan->name, u->nick, set, level, levelself); - else if (!chan.empty()) - do_mode(source, com, cm, chan, !nick.empty() ? nick : u->nick, set, level, levelself); - } - - public: - CommandModeBase(Module *creator, const Anope::string &cname) : Command(creator, cname, 0, 2) - { - this->SetSyntax(_("[\037channel\037] [\037nick\037]")); - } -}; - -class CommandCSOp : public CommandModeBase -{ - public: - CommandCSOp(Module *creator) : CommandModeBase(creator, "chanserv/op") - { - this->SetDesc(_("Gives Op status to a selected nick on a channel")); - } - - void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) anope_override - { - ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_OP); - - return do_util(source, this, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, "OPDEOP", "OPDEOPME"); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) anope_override - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Ops a selected nick on a channel. If nick is not given,\n" - "it will op you. If channel is not given, it will op you\n" - "on every channel.\n" - " \n" - "By default, limited to AOPs or those with level 5 access\n" - "and above on the channel.")); - return true; - } -}; - -class CommandCSDeOp : public CommandModeBase -{ - public: - CommandCSDeOp(Module *creator) : CommandModeBase(creator, "chanserv/deop") - { - this->SetDesc(_("Deops a selected nick on a channel")); - } - - void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) anope_override - { - ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_OP); - - return do_util(source, this, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, "OPDEOP", "OPDEOPME"); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) anope_override - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply("Deops a selected nick on a channel. If nick is not given,\n" - "it will deop you. If channel is not given, it will deop\n" - "you on every channel.\n" - " \n" - "By default, limited to AOPs or those with level 5 access\n" - "and above on the channel."); - return true; - } -}; - -class CommandCSVoice : public CommandModeBase -{ - public: - CommandCSVoice(Module *creator) : CommandModeBase(creator, "chanserv/voice") - { - this->SetDesc(_("Voices a selected nick on a channel")); - } - - void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) anope_override - { - ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_VOICE); - - return do_util(source, this, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, "VOICE", "VOICEME"); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) anope_override - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Voices a selected nick on a channel. If nick is not given,\n" - "it will voice you. If channel is not given, it will voice you\n" - "on every channel.\n" - " \n" - "By default, limited to AOPs or those with level 5 access\n" - "and above on the channel, or to VOPs or those with level 3\n" - "and above for self voicing.")); - return true; - } -}; - -class CommandCSDeVoice : public CommandModeBase -{ - public: - CommandCSDeVoice(Module *creator) : CommandModeBase(creator, "chanserv/devoice") - { - this->SetDesc(_("Devoices a selected nick on a channel")); - } - - void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) anope_override - { - ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_VOICE); - - return do_util(source, this, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, "VOICE", "VOICEME"); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) anope_override - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Devoices a selected nick on a channel. If nick is not given,\n" - "it will devoice you. If channel is not given, it will devoice\n" - "you on every channel.\n" - " \n" - "By default, limited to AOPs or those with level 5 access\n" - "and above on the channel, or to VOPs or those with level 3\n" - "and above for self devoicing.")); - return true; - } -}; - -class CommandCSHalfOp : public CommandModeBase -{ - public: - CommandCSHalfOp(Module *creator) : CommandModeBase(creator, "chanserv/halfop") - { - this->SetDesc(_("Halfops a selected nick on a channel")); - } - - void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) anope_override - { - ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_HALFOP); - - if (!cm) - return; - - return do_util(source, this, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, "HALFOP", "HALFOPME"); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) anope_override - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Halfops a selected nick on a channel. If nick is not given,\n" - "it will halfop you. If channel is not given, it will halfop\n" - "you on every channel.\n" - " \n" - "By default, limited to AOPs and those with level 5 access\n" - "and above on the channel, or to HOPs or those with level 4\n" - "and above for self halfopping.")); - return true; - } -}; - -class CommandCSDeHalfOp : public CommandModeBase -{ - public: - CommandCSDeHalfOp(Module *creator) : CommandModeBase(creator, "chanserv/dehalfop") - { - this->SetDesc(_("Dehalfops a selected nick on a channel")); - } - - void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) anope_override - { - ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_HALFOP); - - if (!cm) - return; - - return do_util(source, this, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, "HALFOP", "HALFOPME"); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) anope_override - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Dehalfops a selected nick on a channel. If nick is not given,\n" - "it will dehalfop you. If channel is not given, it will dehalfop\n" - "you on every channel.\n" - " \n" - "By default, limited to AOPs and those with level 5 access\n" - "and above on the channel, or to HOPs or those with level 4\n" - "and above for self dehalfopping.")); - return true; - } -}; - -class CommandCSProtect : public CommandModeBase -{ - public: - CommandCSProtect(Module *creator) : CommandModeBase(creator, "chanserv/protect") - { - this->SetDesc(_("Protects a selected nick on a channel")); - } - - void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) anope_override - { - ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_PROTECT); - - if (!cm) - return; - - return do_util(source, this, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, "PROTECT", "PROTECTME"); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) anope_override - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Protects a selected nick on a channel. If nick is not given,\n" - "it will protect you. If channel is not given, it will protect\n" - "you on every channel.\n" - " \n" - "By default, limited to the founder, or to SOPs or those with\n" - "level 10 and above on the channel for self protecting.")); - return true; - } -}; - -class CommandCSDeProtect : public CommandModeBase -{ - public: - CommandCSDeProtect(Module *creator) : CommandModeBase(creator, "chanserv/deprotect") - { - this->SetDesc(_("Deprotects a selected nick on a channel")); - } - - void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) anope_override - { - ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_PROTECT); - - if (!cm) - return; - - return do_util(source, this, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, "PROTECT", "PROTECTME"); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) anope_override - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Deprotects a selected nick on a channel. If nick is not given,\n" - "it will deprotect you. If channel is not given, it will deprotect\n" - "you on every channel.\n" - " \n" - "By default, limited to the founder, or to SOPs or those with\n" - "level 10 and above on the channel for self deprotecting.")); - return true; - } -}; - -class CommandCSOwner : public CommandModeBase -{ - public: - CommandCSOwner(Module *creator) : CommandModeBase(module, "chanserv/owner") - { - this->SetDesc(_("Gives you owner status on channel")); - } - - void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) anope_override - { - ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_OWNER); - - if (!cm) - return; - - return do_util(source, this, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, "OWNER", "OWNERME"); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) anope_override - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Gives the selected nick owner status on \002channel\002. If nick is not\n" - "given, it will give you owner. If channel is not given, it will\n" - "give you owner on every channel.\n" - " \n" - "Limited to those with founder access on the channel.")); - return true; - } -}; - -class CommandCSDeOwner : public CommandModeBase -{ - public: - CommandCSDeOwner(Module *creator) : CommandModeBase(creator, "chanserv/deowner") - { - this->SetDesc(_("Removes your owner status on a channel")); - } - - void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) anope_override - { - ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_OWNER); - - if (!cm) - return; - - return do_util(source, this, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, "OWNER", "OWNERME"); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) anope_override - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Removes owner status from the selected nick on \002channel\002. If nick\n" - "is not given, it will deowner you. If channel is not given, it will\n" - "deowner you on every channel.\n" - " \n" - "Limited to those with founder access on the channel.")); - return true; - } -}; - -class CSModes : public Module -{ - CommandCSOwner commandcsowner; - CommandCSDeOwner commandcsdeowner; - CommandCSProtect commandcsprotect; - CommandCSDeProtect commandcsdeprotect; - CommandCSOp commandcsop; - CommandCSDeOp commandcsdeop; - CommandCSHalfOp commandcshalfop; - CommandCSDeHalfOp commandcsdehalfop; - CommandCSVoice commandcsvoice; - CommandCSDeVoice commandcsdevoice; - - public: - CSModes(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, CORE), - commandcsowner(this), commandcsdeowner(this), commandcsprotect(this), commandcsdeprotect(this), - commandcsop(this), commandcsdeop(this), commandcshalfop(this), commandcsdehalfop(this), - commandcsvoice(this), commandcsdevoice(this) - { - this->SetAuthor("Anope"); - - - } -}; - -MODULE_INIT(CSModes) |