diff options
| author | 2023-06-06 00:57:07 +0100 | |
|---|---|---|
| committer | 2023-06-06 01:02:14 +0100 | |
| commit | acc9f5228f686ea816db38d8ecb1925adc053984 (patch) | |
| tree | 3cdb53b7740689be56493f1929a03e6137ee4d09 /src | |
| parent | Merge branch 'insp3' into master. (diff) | |
Allow secondary cloak methods to be used on link synchronisation.
If a server has a conditional cloak method (e.g. account) as the
primary cloak method it doesn't make sense to use it for link
consistency. With this change a secondary cloak method can request
that it is used instead of the primary if the primary does not
mark itself as link sensitive.
Diffstat (limited to 'src')
| -rw-r--r-- | src/modules/m_cloak.cpp | 16 | ||||
| -rw-r--r-- | src/modules/m_cloak_md5.cpp | 6 | ||||
| -rw-r--r-- | src/modules/m_cloak_sha256.cpp | 5 |
3 files changed, 26 insertions, 1 deletions
diff --git a/src/modules/m_cloak.cpp b/src/modules/m_cloak.cpp index e94a3a33d..6b4dddad3 100644 --- a/src/modules/m_cloak.cpp +++ b/src/modules/m_cloak.cpp @@ -321,7 +321,21 @@ public: if (cloakmethods.empty()) return; - auto& cloakmethod = cloakmethods.front(); + Cloak::MethodPtr cloakmethod; + for (const auto& method : cloakmethods) + { + if (method->IsLinkSensitive()) + { + // This cloak method really wants to be the link method so prefer it. + cloakmethod = method; + break; + } + } + + // If no methods are link sensitive we just use the first. + if (!cloakmethod) + cloakmethod = cloakmethods.front(); + cloakmethod->GetLinkData(data, compatdata); data["method"] = cloakmethod->GetName(); diff --git a/src/modules/m_cloak_md5.cpp b/src/modules/m_cloak_md5.cpp index f09a651b4..286ea6a50 100644 --- a/src/modules/m_cloak_md5.cpp +++ b/src/modules/m_cloak_md5.cpp @@ -227,6 +227,12 @@ struct CloakInfo final compatdata = GetCompatLinkData(); } + bool IsLinkSensitive() const override + { + // This method always wants to be at the front. + return true; + } + std::string GenCloak(const irc::sockets::sockaddrs& ip, const std::string& ipstr, const std::string& host) { std::string chost; diff --git a/src/modules/m_cloak_sha256.cpp b/src/modules/m_cloak_sha256.cpp index 92e3ca964..cabb19748 100644 --- a/src/modules/m_cloak_sha256.cpp +++ b/src/modules/m_cloak_sha256.cpp @@ -263,7 +263,12 @@ public: #else data["using-psl"] = "no"; #endif + } + bool IsLinkSensitive() const override + { + // This method always wants to be at the front. + return true; } }; |
