diff options
Diffstat (limited to 'modules')
-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 | ||||
-rw-r--r-- | modules/extra/m_statusupdate.cpp | 2 | ||||
-rw-r--r-- | modules/protocol/bahamut.cpp | 4 | ||||
-rw-r--r-- | modules/protocol/inspircd-ts6.h | 2 | ||||
-rw-r--r-- | modules/protocol/inspircd11.cpp | 2 | ||||
-rw-r--r-- | modules/protocol/plexus.cpp | 2 | ||||
-rw-r--r-- | modules/protocol/ratbox.cpp | 2 | ||||
-rw-r--r-- | modules/protocol/unreal.cpp | 2 | ||||
-rw-r--r-- | modules/pseudoclients/nickserv.cpp | 4 |
12 files changed, 94 insertions, 14 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); } } diff --git a/modules/extra/m_statusupdate.cpp b/modules/extra/m_statusupdate.cpp index 3c6e60246..7cbd9c7be 100644 --- a/modules/extra/m_statusupdate.cpp +++ b/modules/extra/m_statusupdate.cpp @@ -43,7 +43,7 @@ class StatusUpdate : public Module for (int i = 0; !modeInfo[i].priv.empty(); ++i) if (!access->HasPriv(modeInfo[i].priv)) ci->c->RemoveMode(NULL, modeInfo[i].name, user->nick); - chan_set_correct_modes(user, ci->c, 1); + chan_set_correct_modes(user, ci->c, 1, false); } } } diff --git a/modules/protocol/bahamut.cpp b/modules/protocol/bahamut.cpp index 2e6e0eff2..73955149d 100644 --- a/modules/protocol/bahamut.cpp +++ b/modules/protocol/bahamut.cpp @@ -423,7 +423,7 @@ class BahamutIRCdMessage : public IRCdMessage c->JoinUser(u); /* Now set whatever modes this user is allowed to have on the channel */ - chan_set_correct_modes(u, c, 1); + chan_set_correct_modes(u, c, 1, true); /* Check to see if modules want the user to join, if they do * check to see if they are allowed to join (CheckKick will kick/ban them) @@ -479,7 +479,7 @@ class BahamutIRCdMessage : public IRCdMessage c->SetModeInternal(NULL, *it, buf); /* Now set whatever modes this user is allowed to have on the channel */ - chan_set_correct_modes(u, c, 1); + chan_set_correct_modes(u, c, 1, true); /* Check to see if modules want the user to join, if they do * check to see if they are allowed to join (CheckKick will kick/ban them) diff --git a/modules/protocol/inspircd-ts6.h b/modules/protocol/inspircd-ts6.h index c35b05f58..80cc4973b 100644 --- a/modules/protocol/inspircd-ts6.h +++ b/modules/protocol/inspircd-ts6.h @@ -471,7 +471,7 @@ class InspircdIRCdMessage : public IRCdMessage c->SetModeInternal(NULL, *it, buf); /* Now set whatever modes this user is allowed to have on the channel */ - chan_set_correct_modes(u, c, 1); + chan_set_correct_modes(u, c, 1, true); /* Check to see if modules want the user to join, if they do * check to see if they are allowed to join (CheckKick will kick/ban them) diff --git a/modules/protocol/inspircd11.cpp b/modules/protocol/inspircd11.cpp index 8aea24430..7470d61aa 100644 --- a/modules/protocol/inspircd11.cpp +++ b/modules/protocol/inspircd11.cpp @@ -722,7 +722,7 @@ class InspircdIRCdMessage : public IRCdMessage c->SetModeInternal(NULL, *it, buf); /* Now set whatever modes this user is allowed to have on the channel */ - chan_set_correct_modes(u, c, 1); + chan_set_correct_modes(u, c, 1, true); /* Check to see if modules want the user to join, if they do * check to see if they are allowed to join (CheckKick will kick/ban them) diff --git a/modules/protocol/plexus.cpp b/modules/protocol/plexus.cpp index 542589f50..5debfa5dc 100644 --- a/modules/protocol/plexus.cpp +++ b/modules/protocol/plexus.cpp @@ -412,7 +412,7 @@ class PlexusIRCdMessage : public IRCdMessage c->SetModeInternal(NULL, *it, buf); /* Now set whatever modes this user is allowed to have on the channel */ - chan_set_correct_modes(u, c, 1); + chan_set_correct_modes(u, c, 1, true); /* Check to see if modules want the user to join, if they do * check to see if they are allowed to join (CheckKick will kick/ban them) diff --git a/modules/protocol/ratbox.cpp b/modules/protocol/ratbox.cpp index adf9a8d0c..1054c0b8c 100644 --- a/modules/protocol/ratbox.cpp +++ b/modules/protocol/ratbox.cpp @@ -385,7 +385,7 @@ class RatboxIRCdMessage : public IRCdMessage c->SetModeInternal(NULL, *it, buf); /* Now set whatever modes this user is allowed to have on the channel */ - chan_set_correct_modes(u, c, 1); + chan_set_correct_modes(u, c, 1, true); /* Check to see if modules want the user to join, if they do * check to see if they are allowed to join (CheckKick will kick/ban them) diff --git a/modules/protocol/unreal.cpp b/modules/protocol/unreal.cpp index 9b6bf73ce..51e960fc0 100644 --- a/modules/protocol/unreal.cpp +++ b/modules/protocol/unreal.cpp @@ -935,7 +935,7 @@ class Unreal32IRCdMessage : public IRCdMessage c->SetModeInternal(NULL, *it, buf); /* Now set whatever modes this user is allowed to have on the channel */ - chan_set_correct_modes(u, c, 1); + chan_set_correct_modes(u, c, 1, true); /* Check to see if modules want the user to join, if they do * check to see if they are allowed to join (CheckKick will kick/ban them) diff --git a/modules/pseudoclients/nickserv.cpp b/modules/pseudoclients/nickserv.cpp index 6307434de..86b525950 100644 --- a/modules/pseudoclients/nickserv.cpp +++ b/modules/pseudoclients/nickserv.cpp @@ -250,7 +250,7 @@ class NickServCore : public Module ChannelContainer *cc = *it; Channel *c = cc->chan; if (c) - chan_set_correct_modes(u, c, 1); + chan_set_correct_modes(u, c, 1, true); } if (Config->NSForceEmail && u->Account()->email.empty()) @@ -286,7 +286,7 @@ class NickServCore : public Module ChannelContainer *cc = *it; Channel *c = cc->chan; if (c) - chan_set_correct_modes(u, c, 1); + chan_set_correct_modes(u, c, 1, false); } } |