diff options
| author | 2023-06-07 12:59:19 +0100 | |
|---|---|---|
| committer | 2023-06-07 12:59:35 +0100 | |
| commit | 78cd3898f5ca14a51ba1d98a746b3e1bc63d4fa5 (patch) | |
| tree | 81f13b19065b9b59898e955c0fdbd136d7322d15 /src/modules | |
| parent | Include <cloak:pathparts> as link data in cloak_sha256. (diff) | |
| download | inspircd++-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.cpp | 10 | ||||
| -rw-r--r-- | src/modules/m_cloak_account.cpp | 5 | ||||
| -rw-r--r-- | src/modules/m_cloak_nick.cpp | 2 |
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); } }; |
