aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Sadie Powell2022-04-16 11:48:08 +0100
committerGravatar Sadie Powell2022-04-16 12:01:59 +0100
commitc0bc5bf7981e30229bdabfdf51a289635fe8be76 (patch)
tree9ccf09d595b797e4dcffe0c43c0ad7eb70260f39 /src/modules
parentAdd a class that wraps a dynamic reference to the extban manager. (diff)
downloadinspircd++-c0bc5bf7981e30229bdabfdf51a289635fe8be76.tar.gz
inspircd++-c0bc5bf7981e30229bdabfdf51a289635fe8be76.tar.bz2
inspircd++-c0bc5bf7981e30229bdabfdf51a289635fe8be76.zip
Add ListModeBase::CanonicalizeParam, fix cleaning extban masks.
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/m_autoop.cpp3
-rw-r--r--src/modules/m_banexception.cpp13
-rw-r--r--src/modules/m_chanfilter.cpp2
-rw-r--r--src/modules/m_exemptchanops.cpp2
-rw-r--r--src/modules/m_inviteexception.cpp14
5 files changed, 28 insertions, 6 deletions
diff --git a/src/modules/m_autoop.cpp b/src/modules/m_autoop.cpp
index ee287e3d6..23b4b9c0d 100644
--- a/src/modules/m_autoop.cpp
+++ b/src/modules/m_autoop.cpp
@@ -36,11 +36,10 @@ class AutoOpList final
{
public:
AutoOpList(Module* Creator)
- : ListModeBase(Creator, "autoop", 'w', RPL_ACCESSLIST, RPL_ENDOFACCESSLIST, true)
+ : ListModeBase(Creator, "autoop", 'w', RPL_ACCESSLIST, RPL_ENDOFACCESSLIST)
{
ranktoset = ranktounset = OP_VALUE;
syntax = "<prefix>:<mask>";
- tidy = false;
}
PrefixMode* FindMode(const std::string& mid)
diff --git a/src/modules/m_banexception.cpp b/src/modules/m_banexception.cpp
index b81a67b5a..b975ab7c9 100644
--- a/src/modules/m_banexception.cpp
+++ b/src/modules/m_banexception.cpp
@@ -39,12 +39,23 @@ enum
class BanException final
: public ListModeBase
{
+private:
+ ExtBan::ManagerRef extbanmgr;
+
public:
BanException(Module* Creator)
- : ListModeBase(Creator, "banexception", 'e', RPL_EXCEPTLIST, RPL_ENDOFEXCEPTLIST, true)
+ : ListModeBase(Creator, "banexception", 'e', RPL_EXCEPTLIST, RPL_ENDOFEXCEPTLIST)
+ , extbanmgr(Creator)
{
syntax = "<mask>";
}
+
+ bool CanonicalizeParam(LocalUser* user, Channel* channel, std::string& parameter) override
+ {
+ if (!extbanmgr || !extbanmgr->Canonicalize(parameter))
+ ModeParser::CleanMask(parameter);
+ return true;
+ }
};
class ModuleBanException final
diff --git a/src/modules/m_chanfilter.cpp b/src/modules/m_chanfilter.cpp
index bf5a2e1ab..c399be68a 100644
--- a/src/modules/m_chanfilter.cpp
+++ b/src/modules/m_chanfilter.cpp
@@ -42,7 +42,7 @@ public:
unsigned long maxlen;
ChanFilter(Module* Creator)
- : ListModeBase(Creator, "filter", 'g', RPL_SPAMFILTER, RPL_ENDOFSPAMFILTER, false)
+ : ListModeBase(Creator, "filter", 'g', RPL_SPAMFILTER, RPL_ENDOFSPAMFILTER)
{
syntax = "<pattern>";
}
diff --git a/src/modules/m_exemptchanops.cpp b/src/modules/m_exemptchanops.cpp
index 9fa9fa92f..89c1688fc 100644
--- a/src/modules/m_exemptchanops.cpp
+++ b/src/modules/m_exemptchanops.cpp
@@ -36,7 +36,7 @@ class ExemptChanOps final
{
public:
ExemptChanOps(Module* Creator)
- : ListModeBase(Creator, "exemptchanops", 'X', RPL_EXEMPTIONLIST, RPL_ENDOFEXEMPTIONLIST, false)
+ : ListModeBase(Creator, "exemptchanops", 'X', RPL_EXEMPTIONLIST, RPL_ENDOFEXEMPTIONLIST)
{
syntax = "<restriction>:<prefix>";
}
diff --git a/src/modules/m_inviteexception.cpp b/src/modules/m_inviteexception.cpp
index 565bb4bf9..8db100230 100644
--- a/src/modules/m_inviteexception.cpp
+++ b/src/modules/m_inviteexception.cpp
@@ -24,6 +24,7 @@
#include "inspircd.h"
#include "listmode.h"
+#include "modules/extban.h"
#include "modules/isupport.h"
enum
@@ -36,12 +37,23 @@ enum
class InviteException final
: public ListModeBase
{
+private:
+ ExtBan::ManagerRef extbanmgr;
+
public:
InviteException(Module* Creator)
- : ListModeBase(Creator, "invex", 'I', RPL_INVEXLIST, RPL_ENDOFINVEXLIST, true)
+ : ListModeBase(Creator, "invex", 'I', RPL_INVEXLIST, RPL_ENDOFINVEXLIST)
+ , extbanmgr(Creator)
{
syntax = "<mask>";
}
+
+ bool CanonicalizeParam(LocalUser* user, Channel* channel, std::string& parameter) override
+ {
+ if (!extbanmgr || !extbanmgr->Canonicalize(parameter))
+ ModeParser::CleanMask(parameter);
+ return true;
+ }
};
class ModuleInviteException final