Merge pull request #275 from majestrate/staging

disable CNAME RR for random.snode A record lookups
pull/259/head
Jeff 6 years ago committed by GitHub
commit 44d84f0da7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -256,6 +256,8 @@ namespace llarp
if(question.qtype != qTypeAAAA) if(question.qtype != qTypeAAAA)
{ {
hdr_fields |= flags_RCODENameError; hdr_fields |= flags_RCODENameError;
if(question.qtype == qTypeA)
{
answers.emplace_back(); answers.emplace_back();
auto& nx = answers.back(); auto& nx = answers.back();
nx.rr_name = question.qname; nx.rr_name = question.qname;
@ -267,6 +269,7 @@ namespace llarp
} }
} }
} }
}
} // namespace dns } // namespace dns
} // namespace llarp } // namespace llarp

@ -199,7 +199,7 @@ namespace llarp
TunEndpoint::HandleHookedDNSMessage( TunEndpoint::HandleHookedDNSMessage(
dns::Message &&msg, std::function< void(dns::Message) > reply) dns::Message &&msg, std::function< void(dns::Message) > reply)
{ {
//llarp::LogInfo("Tun.HandleHookedDNSMessage ", msg.questions[0].qname); // llarp::LogInfo("Tun.HandleHookedDNSMessage ", msg.questions[0].qname);
if(msg.questions.size() != 1) if(msg.questions.size() != 1)
{ {
llarp::LogWarn("bad number of dns questions: ", msg.questions.size()); llarp::LogWarn("bad number of dns questions: ", msg.questions.size());
@ -244,6 +244,7 @@ namespace llarp
} }
else else
msg.AddNXReply(); msg.AddNXReply();
reply(msg);
} }
else if(msg.questions[0].qtype == dns::qTypeA) else if(msg.questions[0].qtype == dns::qTypeA)
{ {
@ -252,10 +253,7 @@ namespace llarp
if(msg.questions[0].qname == "random.snode" if(msg.questions[0].qname == "random.snode"
|| msg.questions[0].qname == "random.snode.") || msg.questions[0].qname == "random.snode.")
{ {
RouterID random; // don't reply to A queries, applications MUST use CNAME queries
if(Router()->GetRandomGoodRouter(random))
msg.AddCNAMEReply(random.ToString(), 1);
else
msg.AddNXReply(); msg.AddNXReply();
} }
else if(msg.questions[0].qname == "localhost.loki" else if(msg.questions[0].qname == "localhost.loki"
@ -297,7 +295,7 @@ namespace llarp
// TODO: add hook to EnsurePathToSNode // TODO: add hook to EnsurePathToSNode
EnsurePathToSNode(addr.as_array()); EnsurePathToSNode(addr.as_array());
huint32_t ip = ObtainIPForAddr(addr, true); huint32_t ip = ObtainIPForAddr(addr, true);
if (ip.h) if(ip.h)
msg.AddINReply(ip); msg.AddINReply(ip);
else else
{ {
@ -357,7 +355,7 @@ namespace llarp
// always hook mx records // always hook mx records
if(msg.questions[0].qtype == llarp::dns::qTypeMX) if(msg.questions[0].qtype == llarp::dns::qTypeMX)
return true; return true;
// hook random.snode for CNAME // hook random.snode
if(msg.questions[0].qname == "random.snode" if(msg.questions[0].qname == "random.snode"
|| msg.questions[0].qname == "random.snode.") || msg.questions[0].qname == "random.snode.")
return true; return true;

Loading…
Cancel
Save