diff options
Diffstat (limited to 'modules/commands')
| -rw-r--r-- | modules/commands/cs_enforce.cpp | 2 | ||||
| -rw-r--r-- | modules/commands/cs_set_autoop.cpp | 80 | ||||
| -rw-r--r-- | modules/commands/cs_sync.cpp | 2 | ||||
| -rw-r--r-- | modules/commands/cs_updown.cpp | 4 |
4 files changed, 84 insertions, 4 deletions
diff --git a/modules/commands/cs_enforce.cpp b/modules/commands/cs_enforce.cpp index 96031a96f..031b592c4 100644 --- a/modules/commands/cs_enforce.cpp +++ b/modules/commands/cs_enforce.cpp @@ -60,7 +60,7 @@ class CommandCSEnforce : public Command { UserContainer *uc = *it; - chan_set_correct_modes(uc->user, c, 0); + chan_set_correct_modes(uc->user, c, 0, false); } if (hadsecureops) diff --git a/modules/commands/cs_set_autoop.cpp b/modules/commands/cs_set_autoop.cpp new file mode 100644 index 000000000..ee0b0433e --- /dev/null +++ b/modules/commands/cs_set_autoop.cpp @@ -0,0 +1,80 @@ +/* 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 CommandCSSetAutoOp : public Command +{ + public: + CommandCSSetAutoOp(Module *creator, const Anope::string &cname = "chanserv/set/autoop") : Command(creator, cname, 2, 2) + { + this->SetDesc(_("Should services automatically give status to users")); + this->SetSyntax(_("\037channel\037 {ON | OFF}")); + } + + void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) anope_override + { + ChannelInfo *ci = cs_findchan(params[0]); + if (ci == NULL) + { + source.Reply(CHAN_X_NOT_REGISTERED, params[0].c_str()); + return; + } + + if (source.permission.empty() && !source.AccessFor(ci).HasPriv("SET")) + { + source.Reply(ACCESS_DENIED); + return; + } + + if (params[1].equals_ci("ON")) + { + ci->UnsetFlag(CI_NOAUTOOP); + source.Reply(_("Services will now automatically give modes to users in \2%s\2"), ci->name.c_str()); + } + else if (params[1].equals_ci("OFF")) + { + ci->SetFlag(CI_NOAUTOOP); + source.Reply(_("Services will no longer automatically give modes to users in \2%s\2"), ci->name.c_str()); + } + else + this->OnSyntaxError(source, "AUTOOP"); + } + + bool OnHelp(CommandSource &source, const Anope::string &) anope_override + { + this->SendSyntax(source); + source.Reply(" "); + source.Reply(_("Enables or disables %s's autoop feature for a\n" + "channel. When disabled, users who join the channel will\n" + "not automatically gain any status from %s"), Config->ChanServ.c_str(), + Config->ChanServ.c_str(), this->name.c_str()); + return true; + } +}; + + +class CSSetAutoOp : public Module +{ + CommandCSSetAutoOp commandcssetautoop; + + public: + CSSetAutoOp(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, CORE), + commandcssetautoop(this) + { + this->SetAuthor("Anope"); + + } +}; + +MODULE_INIT(CSSetAutoOp) diff --git a/modules/commands/cs_sync.cpp b/modules/commands/cs_sync.cpp index 549860c01..411ba6282 100644 --- a/modules/commands/cs_sync.cpp +++ b/modules/commands/cs_sync.cpp @@ -33,7 +33,7 @@ class CommandCSSync : public Command else { for (CUserList::iterator it = ci->c->users.begin(), it_end = ci->c->users.end(); it != it_end; ++it) - chan_set_correct_modes((*it)->user, ci->c, 1); + chan_set_correct_modes((*it)->user, ci->c, 1, false); source.Reply(_("All user modes on \002%s\002 have been synced."), ci->name.c_str()); } diff --git a/modules/commands/cs_updown.cpp b/modules/commands/cs_updown.cpp index 56841f5a9..4d84ff5f5 100644 --- a/modules/commands/cs_updown.cpp +++ b/modules/commands/cs_updown.cpp @@ -32,7 +32,7 @@ class CommandCSUp : public Command for (UChannelList::iterator it = u->chans.begin(); it != u->chans.end(); ++it) { Channel *c = (*it)->chan; - chan_set_correct_modes(u, c, 1); + chan_set_correct_modes(u, c, 1, false); } else { @@ -44,7 +44,7 @@ class CommandCSUp : public Command else if (!c->ci) source.Reply(CHAN_X_NOT_REGISTERED, channel.c_str()); else - chan_set_correct_modes(u, c, 1); + chan_set_correct_modes(u, c, 1, false); } } |
