diff options
Diffstat (limited to 'modules/core/cs_modes.cpp')
-rw-r--r-- | modules/core/cs_modes.cpp | 431 |
1 files changed, 0 insertions, 431 deletions
diff --git a/modules/core/cs_modes.cpp b/modules/core/cs_modes.cpp deleted file mode 100644 index cee2f9460..000000000 --- a/modules/core/cs_modes.cpp +++ /dev/null @@ -1,431 +0,0 @@ -/* ChanServ core functions - * - * (C) 2003-2011 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, ChannelAccess level, ChannelAccess levelself, ChannelInfoFlag notice) - { - User *u = source.u; - User *u2 = finduser(nick); - Channel *c = findchan(chan); - ChannelInfo *ci = c ? c->ci : NULL; - - bool is_same = u == u2; - - AccessGroup u_access = ci ? ci->AccessFor(u) : AccessGroup(), u2_access = ci && u2 ? ci->AccessFor(u2) : AccessGroup(); - - if (!c) - source.Reply(CHAN_X_NOT_IN_USE, chan.c_str()); - else if (!ci) - source.Reply(CHAN_X_NOT_REGISTERED, chan.c_str()); - else if (!u2) - source.Reply(NICK_X_NOT_IN_USE, nick.c_str()); - else if (is_same ? !ci->HasPriv(u, levelself) : !ci->HasPriv(u, 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->nick); - else - c->RemoveMode(NULL, cm, u2->nick); - - Log(LOG_COMMAND, u, com, ci) << "for " << u2->nick; - if (notice && ci->HasFlag(notice)) - ircdproto->SendMessage(ci->WhoSends(), c->name, "%s command used for %s by %s", com->name.c_str(), u2->nick.c_str(), u->nick.c_str()); - } - } - - 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 acecss level required to set this mode on someone else - * @param levelself The access level required to set this mode on yourself - * @param notice Flag required on a channel to send a notice - */ - void do_util(CommandSource &source, Command *com, ChannelMode *cm, const Anope::string &chan, const Anope::string &nick, bool set, ChannelAccess level, ChannelAccess levelself, ChannelInfoFlag notice) - { - User *u = source.u; - - if (chan.empty()) - for (UChannelList::iterator it = u->chans.begin(); it != u->chans.end(); ++it) - do_mode(source, com, cm, (*it)->chan->name, u->nick, set, level, levelself, notice); - else - do_mode(source, com, cm, chan, !nick.empty() ? nick : u->nick, set, level, levelself, notice); - - return; - } - - public: - CommandModeBase(Module *creator, const Anope::string &cname) : Command(creator, cname, 0, 2) - { - this->SetSyntax(_("[\037#channel\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) - { - ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_OP); - - return do_util(source, this, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, CA_OPDEOP, CA_OPDEOPME, CI_OPNOTICE); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - 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) - { - ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_OP); - - return do_util(source, this, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, CA_OPDEOP, CA_OPDEOPME, CI_OPNOTICE); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - 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) - { - ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_VOICE); - - return do_util(source, this, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, CA_VOICE, CA_VOICEME, CI_BEGIN); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - 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) - { - ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_VOICE); - - return do_util(source, this, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, CA_VOICE, CA_VOICEME, CI_BEGIN); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - 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) - { - 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, CA_HALFOP, CA_HALFOPME, CI_BEGIN); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - 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")); - 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) - { - 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, CA_HALFOP, CA_HALFOPME, CI_BEGIN); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - 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) - { - 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, CA_PROTECT, CA_PROTECTME, CI_BEGIN); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - 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) - { - 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, CA_PROTECT, CA_PROTECTME, CI_BEGIN); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - 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")); - 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) - { - 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, CA_OWNER, CA_OWNERME, CI_BEGIN); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - 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) - { - 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, CA_OWNER, CA_OWNERME, CI_BEGIN); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - 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"); - - ModuleManager::RegisterService(&commandcsop); - ModuleManager::RegisterService(&commandcsdeop); - ModuleManager::RegisterService(&commandcsvoice); - ModuleManager::RegisterService(&commandcsdevoice); - - ModuleManager::RegisterService(&commandcsowner); - ModuleManager::RegisterService(&commandcsdeowner); - ModuleManager::RegisterService(&commandcsprotect); - ModuleManager::RegisterService(&commandcsdeprotect); - ModuleManager::RegisterService(&commandcshalfop); - ModuleManager::RegisterService(&commandcsdehalfop); - } -}; - -MODULE_INIT(CSModes) |