aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/m_shun.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2020-09-27 03:26:38 +0100
committerGravatar Sadie Powell2020-09-27 11:37:22 +0100
commite79d4ec07dfb7ecb8b54926906bd2c53a8061e37 (patch)
tree478dfb3172365ff5d3d42368608f47ca12726510 /src/modules/m_shun.cpp
parentRefactor the shun module slightly. (diff)
downloadinspircd++-e79d4ec07dfb7ecb8b54926906bd2c53a8061e37.tar.gz
inspircd++-e79d4ec07dfb7ecb8b54926906bd2c53a8061e37.tar.bz2
inspircd++-e79d4ec07dfb7ecb8b54926906bd2c53a8061e37.zip
Make shun block client-only tags by default.
Diffstat (limited to 'src/modules/m_shun.cpp')
-rw-r--r--src/modules/m_shun.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/modules/m_shun.cpp b/src/modules/m_shun.cpp
index 4e7d979d1..6be91ce67 100644
--- a/src/modules/m_shun.cpp
+++ b/src/modules/m_shun.cpp
@@ -156,6 +156,7 @@ class ModuleShun : public Module, public Stats::EventListener
ShunFactory shun;
insp::flat_set<std::string, irc::insensitive_swo> enabledcommands;
bool affectopers;
+ bool allowtags;
bool notifyuser;
bool IsShunned(LocalUser* user)
@@ -215,6 +216,7 @@ class ModuleShun : public Module, public Stats::EventListener
enabledcommands.insert(enabledcmd);
affectopers = tag->getBool("affectopers", false);
+ allowtags = tag->getBool("allowtags");
notifyuser = tag->getBool("notifyuser", true);
}
@@ -230,6 +232,18 @@ class ModuleShun : public Module, public Stats::EventListener
return MOD_RES_DENY;
}
+ if (!allowtags)
+ {
+ // Remove all client tags.
+ ClientProtocol::TagMap& tags = parameters.GetTags();
+ for (ClientProtocol::TagMap::iterator tag = tags.begin(); tag != tags.end(); )
+ {
+ if (tag->first[0] == '+')
+ tag = tags.erase(tag);
+ else
+ tag++;
+ }
+ }
if (command == "QUIT")
{
/* Allow QUIT but dont show any quit message */