cs_set_securefounder.cpp

Go to the documentation of this file.
00001 /* ChanServ core functions
00002  *
00003  * (C) 2003-2012 Anope Team
00004  * Contact us at team@anope.org
00005  *
00006  * Please read COPYING and README for further details.
00007  *
00008  * Based on the original code of Epona by Lara.
00009  * Based on the original code of Services by Andy Church.
00010  */
00011 
00012 /*************************************************************************/
00013 
00014 #include "module.h"
00015 
00016 class CommandCSSetSecureFounder : public Command
00017 {
00018  public:
00019         CommandCSSetSecureFounder(Module *creator, const Anope::string &cname = "chanserv/set/securefounder") : Command(creator, cname, 2, 2)
00020         {
00021                 this->SetDesc(_("Stricter control of channel founder status"));
00022                 this->SetSyntax(_("\037channel\037 {ON | OFF}"));
00023         }
00024 
00025         void Execute(CommandSource &source, const std::vector<Anope::string> &params) anope_override
00026         {
00027                 ChannelInfo *ci = ChannelInfo::Find(params[0]);
00028                 if (ci == NULL)
00029                 {
00030                         source.Reply(CHAN_X_NOT_REGISTERED, params[0].c_str());
00031                         return;
00032                 }
00033 
00034                 EventReturn MOD_RESULT;
00035                 FOREACH_RESULT(I_OnSetChannelOption, OnSetChannelOption(source, this, ci, params[1]));
00036                 if (MOD_RESULT == EVENT_STOP)
00037                         return;
00038 
00039                 if (MOD_RESULT != EVENT_ALLOW && source.permission.empty() && !source.AccessFor(ci).HasPriv("SET"))
00040                 {
00041                         source.Reply(ACCESS_DENIED);
00042                         return;
00043                 }
00044 
00045                 if (params[1].equals_ci("ON"))
00046                 {
00047                         ci->SetFlag(CI_SECUREFOUNDER);
00048                         source.Reply(_("Secure founder option for %s is now \002on\002."), ci->name.c_str());
00049                 }
00050                 else if (params[1].equals_ci("OFF"))
00051                 {
00052                         ci->UnsetFlag(CI_SECUREFOUNDER);
00053                         source.Reply(_("Secure founder option for %s is now \002off\002."), ci->name.c_str());
00054                 }
00055                 else
00056                         this->OnSyntaxError(source, "SECUREFOUNDER");
00057 
00058                 return;
00059         }
00060 
00061         bool OnHelp(CommandSource &source, const Anope::string &) anope_override
00062         {
00063                 this->SendSyntax(source);
00064                 source.Reply(" ");
00065                 source.Reply(_("Enables or disables the \002secure founder\002 option for a channel.\n"
00066                         "When \002secure founder\002 is set, only the real founder will be\n"
00067                         "able to drop the channel, change its founder and its successor,\n"
00068                         "and not those who have founder level access through\n"
00069                         "the access/qop command."));
00070                 return true;
00071         }
00072 };
00073 
00074 class CSSetSecureFounder : public Module
00075 {
00076         CommandCSSetSecureFounder commandcssetsecurefounder;
00077 
00078  public:
00079         CSSetSecureFounder(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, CORE),
00080                 commandcssetsecurefounder(this)
00081         {
00082                 this->SetAuthor("Anope");
00083 
00084         }
00085 };
00086 
00087 MODULE_INIT(CSSetSecureFounder)