try fixing dns issue with random.snode

pull/236/head
Jeff Becker 5 years ago
parent 279983019c
commit c1e4e715bb
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -45,6 +45,7 @@ namespace llarp
{
if(msg.questions.size() == 0)
return false;
// always hook ptr for ranges we own
if(msg.questions[0].qtype == dns::qTypePTR)
{
huint32_t ip;
@ -52,8 +53,10 @@ namespace llarp
return false;
return m_OurRange.Contains(ip);
}
else if(msg.questions[0].qtype == dns::qTypeA)
else if(msg.questions[0].qtype == dns::qTypeA
|| msg.questions[0].qtype == dns.qTypeCNAME)
{
// hook for forward dns or cname when using snode tld
return msg.questions[0].qname.find(".snode.")
== (msg.questions[0].qname.size() - 7);
}
@ -88,6 +91,20 @@ namespace llarp
msg.AddNXReply();
}
}
else if(msg.questions[0].qtype == dns::qTypeCNAME)
{
if(msg.questions[0].qname == "random.snode"
|| msg.questions[0].qname == "random.snode.")
{
RouterID random;
if(Router()->GetRandomGoodRouter(random))
msg.AddCNAMEReply(random.ToString(), 1);
else
msg.AddNXReply();
}
else
msg.AddNXReply();
}
else if(msg.questions[0].qtype == dns::qTypeA)
{
// forward dns for snode

@ -202,7 +202,10 @@ namespace llarp
return false;
}
std::string qname = msg.questions[0].qname;
if(msg.questions[0].qtype == 15)
if(msg.questions[0].qtype == dns::qTypeCNAME)
{
}
else if(msg.questions[0].qtype == dns::qTypeMX)
{
// mx record
llarp::service::Address addr;
@ -212,7 +215,21 @@ namespace llarp
msg.AddNXReply();
reply(msg);
}
else if(msg.questions[0].qtype == 1)
else if(msg.questions[0].qtype == dns::qTypeCNAME)
{
if(msg.questions[0].qname == "random.snode"
|| msg.questions[0].qname == "random.snode.")
{
RouterID random;
if(Router()->GetRandomGoodRouter(random))
msg.AddCNAMEReply(random.ToString(), 1);
else
msg.AddNXReply();
}
else
msg.AddNXReply();
}
else if(msg.questions[0].qtype == dns::qTypeA)
{
// forward dns
llarp::service::Address addr;
@ -252,7 +269,7 @@ namespace llarp
reply(msg);
}
else if(msg.questions[0].qtype == 12)
else if(msg.questions[0].qtype == dns::qTypePTR)
{
// reverse dns
huint32_t ip = {0};
@ -298,6 +315,7 @@ namespace llarp
// always hook mx records
if(msg.questions[0].qtype == llarp::dns::qTypeMX)
return true;
// always hook random.snode
if(msg.questions[0].qname == "random.snode"
|| msg.questions[0].qname == "random.snode.")
return true;
@ -307,6 +325,7 @@ namespace llarp
// always hook .snode
if(addr.FromString(msg.questions[0].qname, ".snode"))
return true;
// hook any ranges we own
if(msg.questions[0].qtype == llarp::dns::qTypePTR)
{
huint32_t ip = {0};

Loading…
Cancel
Save