From 3f99d777f4374575f00aa6362efb6d21042c51aa Mon Sep 17 00:00:00 2001 From: Tanmoy Sarkar <57363826+tanmoysrt@users.noreply.github.com> Date: Thu, 23 Nov 2023 02:38:22 +0530 Subject: [PATCH] chore: added support for all type of dns record --- main.go | 23 ++++++++++++----------- quickdns_resolver.go | 2 ++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/main.go b/main.go index 8158844..5c9ac54 100644 --- a/main.go +++ b/main.go @@ -10,23 +10,14 @@ import ( func parseQuery(m *dns.Msg, qdns *QuickDNSResolver) { for _, q := range m.Question { - println(q.Name, q.Qtype) + println("Query: ", q.Name, q.Qtype, q.Qclass) switch q.Qtype { case dns.TypeNone: fallthrough case dns.TypeANY: fallthrough case dns.TypeNS: - fallthrough - case dns.TypeA: { - isQDNS, ip := qdns.ResolveARecord(q.Name) - if isQDNS { - rr, err := dns.NewRR(fmt.Sprintf("%s A %s", q.Name, ip)) - if err == nil { - m.Answer = append(m.Answer, rr) - } - } // ns1.swiftwave.xyz and ns2.swiftwave.xyz rr, err := dns.NewRR(fmt.Sprintf("%s NS ns1.swiftwave.xyz", q.Name)) if err == nil { @@ -37,6 +28,16 @@ func parseQuery(m *dns.Msg, qdns *QuickDNSResolver) { m.Answer = append(m.Answer, rr) } } + case dns.TypeA: + { + isQDNS, ip := qdns.ResolveARecord(q.Name) + if isQDNS { + rr, err := dns.NewRR(fmt.Sprintf("%s A %s", q.Name, ip)) + if err == nil { + m.Answer = append(m.Answer, rr) + } + } + } } } } @@ -59,7 +60,7 @@ func main() { panic(err) } // attach request handler func - dns.HandleFunc("swiftwave.xyz", func(w dns.ResponseWriter, m *dns.Msg) { + dns.HandleFunc(".", func(w dns.ResponseWriter, m *dns.Msg) { handleDnsRequest(w, m, qdns) }) // start server diff --git a/quickdns_resolver.go b/quickdns_resolver.go index 6d2e31e..f99b33c 100644 --- a/quickdns_resolver.go +++ b/quickdns_resolver.go @@ -3,6 +3,7 @@ package main import ( "fmt" "regexp" + "strings" ) /** @@ -31,6 +32,7 @@ func NewQuickDNSResolver() (*QuickDNSResolver, error) { // Returns true if the domain name is in the format ip-3-56-23-12.swiftwave.xyz // Also returns the IP address func (q *QuickDNSResolver) ResolveARecord(domain string) (bool, string) { + domain = strings.ToLower(domain) if matches := q.Regex.FindStringSubmatch(domain); len(matches) == 5 { ip := fmt.Sprintf("%s.%s.%s.%s", matches[1], matches[2], matches[3], matches[4]) return true, ip