- if (parameters[2].length() < 64)
- webirc_hostname.set(user, parameters[2]);
- else
- webirc_hostname.unset(user);
+ bool host_ok = (parameters[2].length() <= ServerInstance->Config->Limits.MaxHost);
+ const std::string& newhost = (host_ok ? parameters[2] : parameters[3]);
+
+ if (notify)
+ ServerInstance->SNO->WriteGlobalSno('w', "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());
+
+ // Where the magic happens - change their IP
+ ChangeIP(user, parameters[3]);
+ // And follow this up by changing their host
+ user->host = user->dhost = newhost;