aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Sadie Powell2023-06-07 12:59:19 +0100
committerGravatar Sadie Powell2023-06-07 12:59:35 +0100
commit78cd3898f5ca14a51ba1d98a746b3e1bc63d4fa5 (patch)
tree81f13b19065b9b59898e955c0fdbd136d7322d15 /src/modules
parentInclude <cloak:pathparts> as link data in cloak_sha256. (diff)
downloadinspircd++-78cd3898f5ca14a51ba1d98a746b3e1bc63d4fa5.tar.gz
inspircd++-78cd3898f5ca14a51ba1d98a746b3e1bc63d4fa5.tar.bz2
inspircd++-78cd3898f5ca14a51ba1d98a746b3e1bc63d4fa5.zip
Only regenerate cloaks if a cloak of that type exists.
This prevents unnecessary recloaking which may result in spam.
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/m_cloak.cpp10
-rw-r--r--src/modules/m_cloak_account.cpp5
-rw-r--r--src/modules/m_cloak_nick.cpp2
3 files changed, 15 insertions, 2 deletions
diff --git a/src/modules/m_cloak.cpp b/src/modules/m_cloak.cpp
index 6b4dddad3..4101029b7 100644
--- a/src/modules/m_cloak.cpp
+++ b/src/modules/m_cloak.cpp
@@ -136,6 +136,16 @@ public:
return cloaks->empty() ? nullptr : cloaks;
}
+ bool IsActiveCloak(const Cloak::Engine& engine) override
+ {
+ for (const auto& cloakmethod : cloakmethods)
+ {
+ if (cloakmethod->IsProvidedBy(engine))
+ return true;
+ }
+ return false;
+ }
+
void ResetCloaks(LocalUser* user, bool resetdisplay) override
{
const std::string oldcloak = GetFrontCloak(user);
diff --git a/src/modules/m_cloak_account.cpp b/src/modules/m_cloak_account.cpp
index 76180fb3f..554e49c11 100644
--- a/src/modules/m_cloak_account.cpp
+++ b/src/modules/m_cloak_account.cpp
@@ -183,7 +183,10 @@ public:
void OnAccountChange(User* user, const std::string& newaccount) override
{
LocalUser* luser = IS_LOCAL(user);
- if (luser && cloakapi)
+ if (!luser || !cloakapi)
+ return;
+
+ if (cloakapi->IsActiveCloak(accountcloak) || cloakapi->IsActiveCloak(accountidcloak))
cloakapi->ResetCloaks(luser, true);
}
};
diff --git a/src/modules/m_cloak_nick.cpp b/src/modules/m_cloak_nick.cpp
index c3a0a22a0..0028f67f0 100644
--- a/src/modules/m_cloak_nick.cpp
+++ b/src/modules/m_cloak_nick.cpp
@@ -135,7 +135,7 @@ public:
void OnUserPostNick(User* user, const std::string& oldnick) override
{
LocalUser* luser = IS_LOCAL(user);
- if (luser && cloakapi)
+ if (luser && cloakapi && cloakapi->IsActiveCloak(nickcloak))
cloakapi->ResetCloaks(luser, true);
}
};