From 5307c897a3516f7bb23dbb79747f1d9aa7b1f6e6 Mon Sep 17 00:00:00 2001 From: Peter Powell Date: Sat, 16 Dec 2017 13:22:14 +0000 Subject: Always store something in the cgiirc hostname extension. This is used by modules like m_sasl to send the cgiirc hostname to services so it should contain something valid. Closes #1438. --- src/modules/m_cgiirc.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'src/modules') diff --git a/src/modules/m_cgiirc.cpp b/src/modules/m_cgiirc.cpp index 9e1a546d6..6c94449b1 100644 --- a/src/modules/m_cgiirc.cpp +++ b/src/modules/m_cgiirc.cpp @@ -99,18 +99,14 @@ class CommandWebirc : public Command realhost.set(user, user->host); realip.set(user, user->GetIPString()); - bool host_ok = (parameters[2].length() < 64) && (parameters[2].find_first_not_of("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-") == std::string::npos); + // Check if we're happy with the provided hostname. If it's problematic then use the IP instead. + bool host_ok = (parameters[2].length() < 64) && (parameters[2].find_first_not_of("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.:-") == std::string::npos); const std::string& newhost = (host_ok ? parameters[2] : parameters[3]); if (notify) ServerInstance->SNO->WriteGlobalSno('a', "Connecting user %s detected as using CGI:IRC (%s), changing real host to %s from %s", user->nick.c_str(), user->host.c_str(), newhost.c_str(), user->host.c_str()); - // Check if we're happy with the provided hostname. If it's problematic then make sure we won't set a host later, just the IP - if (host_ok) - webirc_hostname.set(user, parameters[2]); - else - webirc_hostname.unset(user); - + webirc_hostname.set(user, newhost); webirc_ip.set(user, parameters[3]); return CMD_SUCCESS; } -- cgit v1.2.3