summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/conf/modules.conf.example13
-rw-r--r--src/modules/m_redirect.cpp28
2 files changed, 7 insertions, 34 deletions
diff --git a/docs/conf/modules.conf.example b/docs/conf/modules.conf.example
index b2d759ff8..e5fbab7e0 100644
--- a/docs/conf/modules.conf.example
+++ b/docs/conf/modules.conf.example
@@ -1517,17 +1517,10 @@
#<randquote file="quotes.txt">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
-# Redirect module: Adds channel redirection mode +L. #
-# Optional: <redirect:antiredirect> to add usermode +L to stop forced #
-# redirection and instead print an error. #
-# #
-# Note: You can not update this with a simple rehash, it requires #
-# reloading the module for it to take effect. #
-# This also breaks linking to servers that do not have the option. #
-# This defaults to false for the 2.0 version, it will be enabled in #
-# all the future versions. #
+# Redirect module: Adds channel mode +L which redirects users to #
+# another channel when the channel has reached its user limit and #
+# user mode +L which stops redirection. #
#<module name="redirect">
-#<redirect antiredirect="true">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Regular expression provider for glob or wildcard (?/*) matching.
diff --git a/src/modules/m_redirect.cpp b/src/modules/m_redirect.cpp
index 479dd6d0f..b3dc6e94d 100644
--- a/src/modules/m_redirect.cpp
+++ b/src/modules/m_redirect.cpp
@@ -72,39 +72,20 @@ class Redirect : public ParamMode<Redirect, LocalStringExt>
}
};
-/** Handles usermode +L to stop forced redirection and print an error.
-*/
-class AntiRedirect : public SimpleUserModeHandler
-{
- public:
- AntiRedirect(Module* Creator) : SimpleUserModeHandler(Creator, "antiredirect", 'L')
- {
- if (!ServerInstance->Config->ConfValue("redirect")->getBool("antiredirect"))
- DisableAutoRegister();
- }
-};
-
class ModuleRedirect : public Module
{
Redirect re;
- AntiRedirect re_u;
+ SimpleUserModeHandler antiredirectmode;
ChanModeReference limitmode;
- bool UseUsermode;
public:
ModuleRedirect()
: re(this)
- , re_u(this)
+ , antiredirectmode(this, "antiredirect", 'L')
, limitmode(this, "limit")
{
}
- void init() CXX11_OVERRIDE
- {
- /* Setting this here so it isn't changable by rehasing the config later. */
- UseUsermode = ServerInstance->Config->ConfValue("redirect")->getBool("antiredirect");
- }
-
ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) CXX11_OVERRIDE
{
if (chan)
@@ -122,9 +103,8 @@ class ModuleRedirect : public Module
user->WriteNumeric(470, cname, '*', "You may not join this channel. A redirect is set, but you may not be redirected as it is a circular loop.");
return MOD_RES_DENY;
}
- /* We check the bool value here to make sure we have it enabled, if we don't then
- usermode +L might be assigned to something else. */
- if (UseUsermode && user->IsModeSet(re_u))
+
+ if (user->IsModeSet(antiredirectmode))
{
user->WriteNumeric(470, cname, channel, "Force redirection stopped.");
return MOD_RES_DENY;