summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Powell <petpow@saberuk.com>2017-12-16 13:22:14 +0000
committerPeter Powell <petpow@saberuk.com>2017-12-20 20:50:59 +0000
commit5307c897a3516f7bb23dbb79747f1d9aa7b1f6e6 (patch)
tree357bbbf9e71ec5618b4494a4d9ebf475f7d6bb8a /src
parent2989c948e4a7df75e0ff66d33b5f00c64c7ae87a (diff)
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.
Diffstat (limited to 'src')
-rw-r--r--src/modules/m_cgiirc.cpp10
1 files changed, 3 insertions, 7 deletions
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;
}