cs_set_secure.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 CommandCSSetSecure : public Command
00017 {
00018  public:
00019         CommandCSSetSecure(Module *creator, const Anope::string &cname = "chanserv/set/secure") : Command(creator, cname, 2, 2)
00020         {
00021                 this->SetDesc(_("Activate security features"));
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_SECURE);
00048                         source.Reply(_("Secure 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_SECURE);
00053                         source.Reply(_("Secure option for %s is now \002off\002."), ci->name.c_str());
00054                 }
00055                 else
00056                         this->OnSyntaxError(source, "SECURE");
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 security features for a\n"
00066                         "channel. When \002%s\002 is set, only users who have\n"
00067                         "registered their nicknames and IDENTIFY'd\n"
00068                         "with their password will be given access to the channel\n"
00069                         "as controlled by the access list."), this->name.c_str());
00070                 return true;
00071         }
00072 };
00073 
00074 class CSSetSecure : public Module
00075 {
00076         CommandCSSetSecure commandcssetsecure;
00077 
00078  public:
00079         CSSetSecure(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, CORE),
00080                 commandcssetsecure(this)
00081         {
00082                 this->SetAuthor("Anope");
00083 
00084         }
00085 };
00086 
00087 MODULE_INIT(CSSetSecure)