X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcoremods%2Fcore_dns.cpp;h=8532179fbc995c4b9b4a65d75775fdd4be3d5dc1;hb=d2b94541fc95de18c25bf1b017c20d45cffb9f76;hp=7ee406a24540f5c97ff9c4b454f5fd587d9801f6;hpb=e97ee390cf1a3f5e897aed85d62e29a34c4632f9;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/coremods/core_dns.cpp b/src/coremods/core_dns.cpp index 7ee406a24..8532179fb 100644 --- a/src/coremods/core_dns.cpp +++ b/src/coremods/core_dns.cpp @@ -36,15 +36,10 @@ namespace DNS using namespace DNS; -/** A full packet sent or recieved to/from the nameserver +/** A full packet sent or received to/from the nameserver */ class Packet : public Query { - static bool IsValidName(const std::string& name) - { - return (name.find_first_not_of("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-") == std::string::npos); - } - void PackName(unsigned char* output, unsigned short output_size, unsigned short& pos, const std::string& name) { if (pos + name.length() + 2 > output_size) @@ -195,7 +190,7 @@ class Packet : public Query case QUERY_PTR: { record.rdata = this->UnpackName(input, input_size, pos); - if (!IsValidName(record.rdata)) + if (!InspIRCd::IsHost(record.rdata)) throw Exception("Invalid name"); // XXX: Causes the request to time out break; @@ -442,7 +437,7 @@ class MyManager : public Manager, public Timer, public EventHandler } } - void Process(DNS::Request* req) + void Process(DNS::Request* req) CXX11_OVERRIDE { if ((unloading) || (req->creator->dying)) throw Exception("Module is being unloaded"); @@ -502,20 +497,20 @@ class MyManager : public Manager, public Timer, public EventHandler // Update name in the original request so question checking works for PTR queries req->question.name = p.question.name; - if (SocketEngine::SendTo(this, buffer, len, 0, &this->myserver.sa, this->myserver.sa_size()) != len) + if (SocketEngine::SendTo(this, buffer, len, 0, this->myserver) != len) throw Exception("DNS: Unable to send query"); // Add timer for timeout ServerInstance->Timers.AddTimer(req); } - void RemoveRequest(DNS::Request* req) + void RemoveRequest(DNS::Request* req) CXX11_OVERRIDE { if (requests[req->id] == req) requests[req->id] = NULL; } - std::string GetErrorStr(Error e) + std::string GetErrorStr(Error e) CXX11_OVERRIDE { switch (e) { @@ -664,7 +659,7 @@ class MyManager : public Manager, public Timer, public EventHandler delete request; } - bool Tick(time_t now) + bool Tick(time_t now) CXX11_OVERRIDE { ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "cache: purging DNS cache"); @@ -693,7 +688,7 @@ class MyManager : public Manager, public Timer, public EventHandler irc::sockets::aptosa(dnsserver, DNS::PORT, myserver); /* Initialize mastersocket */ - int s = socket(myserver.sa.sa_family, SOCK_DGRAM, 0); + int s = socket(myserver.family(), SOCK_DGRAM, 0); this->SetFd(s); /* Have we got a socket? */ @@ -706,9 +701,9 @@ class MyManager : public Manager, public Timer, public EventHandler if (sourceaddr.empty()) { // set a sourceaddr for irc::sockets::aptosa() based on the servers af type - if (myserver.sa.sa_family == AF_INET) + if (myserver.family() == AF_INET) sourceaddr = "0.0.0.0"; - else if (myserver.sa.sa_family == AF_INET6) + else if (myserver.family() == AF_INET6) sourceaddr = "::"; } irc::sockets::aptosa(sourceaddr, sourceport, bindto); @@ -727,7 +722,7 @@ class MyManager : public Manager, public Timer, public EventHandler this->SetFd(-1); } - if (bindto.sa.sa_family != myserver.sa.sa_family) + if (bindto.family() != myserver.family()) ServerInstance->Logs->Log(MODNAME, LOG_SPARSE, "Nameserver address family differs from source address family - hostnames might not resolve"); } else @@ -817,7 +812,7 @@ class ModuleDNS : public Module ConfigTag* tag = ServerInstance->Config->ConfValue("dns"); DNSServer = tag->getString("server"); SourceIP = tag->getString("sourceip"); - SourcePort = tag->getInt("sourceport", 0, 0, 65535); + SourcePort = tag->getUInt("sourceport", 0, 0, UINT16_MAX); if (DNSServer.empty()) FindDNSServer(); @@ -826,7 +821,7 @@ class ModuleDNS : public Module this->manager.Rehash(DNSServer, SourceIP, SourcePort); } - void OnUnloadModule(Module* mod) + void OnUnloadModule(Module* mod) CXX11_OVERRIDE { for (unsigned int i = 0; i <= MAX_REQUEST_ID; ++i) { @@ -845,9 +840,9 @@ class ModuleDNS : public Module } } - Version GetVersion() + Version GetVersion() CXX11_OVERRIDE { - return Version("DNS support", VF_CORE|VF_VENDOR); + return Version("Provides support for DNS lookups", VF_CORE|VF_VENDOR); } };