From c0bc5bf7981e30229bdabfdf51a289635fe8be76 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sat, 16 Apr 2022 11:48:08 +0100 Subject: Add ListModeBase::CanonicalizeParam, fix cleaning extban masks. --- src/modules/m_autoop.cpp | 3 +-- src/modules/m_banexception.cpp | 13 ++++++++++++- src/modules/m_chanfilter.cpp | 2 +- src/modules/m_exemptchanops.cpp | 2 +- src/modules/m_inviteexception.cpp | 14 +++++++++++++- 5 files changed, 28 insertions(+), 6 deletions(-) (limited to 'src/modules') 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 = ":"; - 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 = ""; } + + 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 = ""; } 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 = ":"; } 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 = ""; } + + bool CanonicalizeParam(LocalUser* user, Channel* channel, std::string& parameter) override + { + if (!extbanmgr || !extbanmgr->Canonicalize(parameter)) + ModeParser::CleanMask(parameter); + return true; + } }; class ModuleInviteException final -- cgit v1.3.1-10-gc9f91