*/
const bool fwd;
- const DNS::ResourceRecord* FindAnswerOfType(const DNS::Query* response, DNS::QueryType qtype)
- {
- for (std::vector<DNS::ResourceRecord>::const_iterator it = response->answers.begin(); it != response->answers.end(); ++it)
- {
- const DNS::ResourceRecord& rr = *it;
-
- if (rr.type == qtype)
- {
- return &rr;
- }
- }
-
- return NULL;
- }
-
public:
/** Create a resolver.
* @param mgr DNS Manager
* if a previous result has already come back.
* @param r The finished query
*/
- void OnLookupComplete(const DNS::Query* r)
+ void OnLookupComplete(const DNS::Query* r) CXX11_OVERRIDE
{
LocalUser* bound_user = (LocalUser*)ServerInstance->FindUUID(uuid);
if (!bound_user)
return;
}
- const DNS::ResourceRecord* ans_record = FindAnswerOfType(r, this->type);
+ const DNS::ResourceRecord* ans_record = r->FindAnswerOfType(this->question.type);
if (ans_record == NULL)
{
- ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "DNS result for %s: no record of type %d", uuid.c_str(), this->type);
+ OnError(r);
return;
}
hostname->insert(0, "0");
bound_user->WriteNotice("*** Found your hostname (" + *hostname + (r->cached ? ") -- cached" : ")"));
- bound_user->host.assign(*hostname, 0, ServerInstance->Config->Limits.MaxHost);
- bound_user->dhost = bound_user->host;
-
- /* Invalidate cache */
- bound_user->InvalidateCache();
+ bound_user->ChangeRealHost(hostname->substr(0, ServerInstance->Config->Limits.MaxHost), true);
}
else
{
/** Called on failed lookup
* @param query The errored query
*/
- void OnError(const DNS::Query* query)
+ void OnError(const DNS::Query* query) CXX11_OVERRIDE
{
LocalUser* bound_user = (LocalUser*)ServerInstance->FindUUID(uuid);
if (bound_user)
ph = &ptrHosts;
}
- void OnUserInit(LocalUser *user)
+ void OnSetUserIP(LocalUser* user) CXX11_OVERRIDE
{
if (!DNS || !user->MyClass->resolvehostnames)
{
}
}
- ModResult OnCheckReady(LocalUser* user)
+ ModResult OnCheckReady(LocalUser* user) CXX11_OVERRIDE
{
return this->dnsLookup.get(user) ? MOD_RES_DENY : MOD_RES_PASSTHRU;
}
- Version GetVersion()
+ Version GetVersion() CXX11_OVERRIDE
{
return Version("Provides support for DNS lookups on connecting clients", VF_CORE|VF_VENDOR);
}