From 008e67c1436467e92c4a2642f4c97534d28d49e4 Mon Sep 17 00:00:00 2001 From: DanB Date: Sat, 6 Apr 2019 11:15:24 +0200 Subject: [PATCH] DNSAgent proper reply to A DNS --- agents/dnsagent.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/agents/dnsagent.go b/agents/dnsagent.go index 7c91c88cb..e2e34c9e5 100644 --- a/agents/dnsagent.go +++ b/agents/dnsagent.go @@ -20,6 +20,7 @@ package agents import ( "fmt" + "net" "strings" "github.com/cgrates/cgrates/config" @@ -70,11 +71,25 @@ func (da *DNSAgent) ListenAndServe() error { // handleMessage is the entry point of all DNS requests // requests are reaching here asynchronously -func (da *DNSAgent) handleMessage(w dns.ResponseWriter, m *dns.Msg) { - fmt.Printf("got message: %+v\n", m) +func (da *DNSAgent) handleMessage(w dns.ResponseWriter, req *dns.Msg) { + fmt.Printf("got message: %+v\n", req) rply := new(dns.Msg) - rply.SetReply(m) - rply.Authoritative = true + rply.SetReply(req) + switch req.Question[0].Qtype { + case dns.TypeA: + rply.Authoritative = true + if req.Question[0].Name == "cgrates.org." { + rply.Answer = append(rply.Answer, + &dns.A{ + Hdr: dns.RR_Header{ + Name: req.Question[0].Name, + Rrtype: dns.TypeA, + Class: dns.ClassINET, + Ttl: 60}, + A: net.ParseIP("195.201.167.179")}, + ) + } + } fmt.Printf("send reply message: %+v\n", rply) w.WriteMsg(rply)