From 28474155b917f360c2feaec42401900aeddcdb12 Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Wed, 20 Mar 2019 12:40:28 -0400 Subject: [PATCH] implement localhost.loki on tun --- llarp/handlers/exit.cpp | 20 ++++++++++++++++++-- llarp/handlers/exit.hpp | 2 +- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/llarp/handlers/exit.cpp b/llarp/handlers/exit.cpp index 6b6f8e004..635ab7533 100644 --- a/llarp/handlers/exit.cpp +++ b/llarp/handlers/exit.cpp @@ -73,8 +73,11 @@ namespace llarp || 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); + if(msg.questions[0].qname.find(".snode.") + == (msg.questions[0].qname.size() - 7)) + return true; + return msg.questions[0].qname == "localhost.loki" + || msg.questions[0].qname == "localhost.loki."; } else return false; @@ -118,11 +121,24 @@ namespace llarp else msg.AddNXReply(); } + else if(msg.questions[0].qname == "localhost.loki" + || msg.questions[0].qname == "localhost.loki.") + { + RouterID us = m_Router->pubkey(); + msg.AddAReply(us.ToString(), 1); + } else msg.AddNXReply(); } else if(msg.questions[0].qtype == dns::qTypeA) { + if(msg.questions[0].qname == "localhost.loki." + || msg.questions[0].qname == "localhost.loki") + { + msg.AddINReply(GetIfAddr()); + reply(msg); + return true; + } // forward dns for snode RouterID r; if(r.FromString(msg.questions[0].qname)) diff --git a/llarp/handlers/exit.hpp b/llarp/handlers/exit.hpp index fcc9d57e9..c7ed04058 100644 --- a/llarp/handlers/exit.hpp +++ b/llarp/handlers/exit.hpp @@ -126,7 +126,7 @@ namespace llarp KickIdentOffExit(const PubKey& pk); AbstractRouter* m_Router; - dns::Proxy m_Resolver; + service::dns::Proxy m_Resolver; bool m_ShouldInitTun; std::string m_Name; bool m_PermitExit;