From 0c78ad71d32e4062827f2ebac927bdbf43c091ba Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 12 Nov 2016 18:55:26 -0500 Subject: m_cloaking: fix host/ip comparisons #1249 --- src/modules/m_cloaking.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/modules/m_cloaking.cpp') diff --git a/src/modules/m_cloaking.cpp b/src/modules/m_cloaking.cpp index 105d68833..1bf99f919 100644 --- a/src/modules/m_cloaking.cpp +++ b/src/modules/m_cloaking.cpp @@ -493,11 +493,14 @@ class ModuleCloaking : public Module { std::string chost; + irc::sockets::sockaddrs hostip; + bool host_is_ip = irc::sockets::aptosa(host, ip.port(), hostip) && hostip == ip; + switch (mode) { case MODE_COMPAT_HOST: { - if (ipstr != host) + if (!host_is_ip) { std::string tail = LastTwoDomainParts(host); @@ -520,7 +523,7 @@ class ModuleCloaking : public Module break; case MODE_HALF_CLOAK: { - if (ipstr != host) + if (!host_is_ip) chost = prefix + SegmentCloak(host, 1, 6) + LastTwoDomainParts(host); if (chost.empty() || chost.length() > 50) chost = SegmentIP(ip, false); -- cgit v1.2.3 From 692865acd58c9a475db1fdf4d419188325cd2182 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 7 Sep 2016 16:08:28 -0400 Subject: m_cloaking: don't apply cloak to already cloaked users during registration This can happen if services set a vhost during registration (like with SASL) --- src/modules/m_cloaking.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/modules/m_cloaking.cpp') diff --git a/src/modules/m_cloaking.cpp b/src/modules/m_cloaking.cpp index 1bf99f919..f4cfdb54f 100644 --- a/src/modules/m_cloaking.cpp +++ b/src/modules/m_cloaking.cpp @@ -96,6 +96,10 @@ class CloakUser : public ModeHandler if (adding) { + // assume this is more correct + if (user->registered != REG_ALL && user->host != user->dhost) + return MODEACTION_DENY; + std::string* cloak = ext.get(user); if (!cloak) -- cgit v1.2.3