- cmd.realhost.set(user, user->host);
- cmd.realip.set(user, user->GetIPString());
- user->host.assign(user->password, 0, 64);
- user->dhost.assign(user->password, 0, 64);
- user->InvalidateCache();
-
- bool valid = false;
- ServerInstance->Users->RemoveCloneCounts(user);
- valid = user->SetClientIP(user->password.c_str());
- ServerInstance->Users->AddLocalClone(user);
- ServerInstance->Users->AddGlobalClone(user);
- user->CheckClass();
-
- if (valid)
- {
- /* We were given a IP in the password, we don't do DNS so they get this is as their host as well. */
- if(NotifyOpers)
- ServerInstance->SNO->WriteGlobalSno('a', "Connecting user %s detected as using CGI:IRC (%s), changing real host to %s from PASS", user->nick.c_str(), user->host.c_str(), user->password.c_str());
- }
- else
- {
- /* We got as resolved hostname in the password. */
- try
- {
-
- bool cached;
- CGIResolver* r = new CGIResolver(this, ServerInstance, NotifyOpers, user->password, false, user, user->GetFd(), "PASS", cached);
- ServerInstance->AddResolver(r, cached);
- }
- catch (...)
- {
- if (NotifyOpers)
- ServerInstance->SNO->WriteToSnoMask('a', "Connecting user %s detected as using CGI:IRC (%s), but I could not resolve their hostname!", user->nick.c_str(), user->host.c_str());
- }
- }
-