- gateway.set(user, parameters[1]);
- realhost.set(user, user->host);
- realip.set(user, user->GetIPString());
-
- // 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
- bool host_ok = (parameters[2].length() <= ServerInstance->Config->Limits.MaxHost) && (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('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;
- user->InvalidateCache();
-
- return CMD_SUCCESS;