From 6bbf0b6255eeec823465b3bf0724bacf96cba210 Mon Sep 17 00:00:00 2001 From: DanB Date: Tue, 23 Apr 2019 17:41:14 +0200 Subject: [PATCH] Skel of dry run for DiameterAgent integration --- agents/dnsagent.go | 4 +++- agents/libdns.go | 6 ++++++ data/conf/samples/dnsagent/dryrun.json | 18 ++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 data/conf/samples/dnsagent/dryrun.json diff --git a/agents/dnsagent.go b/agents/dnsagent.go index f0ae80a04..93ed7818d 100644 --- a/agents/dnsagent.go +++ b/agents/dnsagent.go @@ -99,7 +99,9 @@ func (da *DNSAgent) handleMessage(w dns.ResponseWriter, req *dns.Msg) { reqVars[QueryType] = dns.TypeToString[req.Question[0].Qtype] rply := new(dns.Msg) rply.SetReply(req) - if req.Question[0].Qtype == dns.TypeNAPTR { + // message preprocesing + switch req.Question[0].Qtype { + case dns.TypeNAPTR: e164, err := e164FromNAPTR(req.Question[0].Name) if err != nil { utils.Logger.Warning( diff --git a/agents/libdns.go b/agents/libdns.go index b7d466be4..e08307ad2 100644 --- a/agents/libdns.go +++ b/agents/libdns.go @@ -171,6 +171,12 @@ func updateDNSMsgFromNM(msg *dns.Msg, nm *config.NavigableMap) (err error) { return } lastAnswer.(*dns.A).A = net.ParseIP(ip) + case dns.TypeNAPTR: + if rr, err := dns.NewRR(`IN NAPTR 100 10 "U" "E2U+sip" "!^.*$!sip:customer-service@example.com!" .`); err != nil { + return err + } else { + lastAnswer = rr + } } } diff --git a/data/conf/samples/dnsagent/dryrun.json b/data/conf/samples/dnsagent/dryrun.json new file mode 100644 index 000000000..661bc260c --- /dev/null +++ b/data/conf/samples/dnsagent/dryrun.json @@ -0,0 +1,18 @@ +{ + +"diameter_agent": { + "request_processors": [ + { + "id": "dryrun1", + "filters": ["*string:~*vars.QueryType:NAPTR", "*string:~*vars.E164Address:4986517174963"], + "flags": ["*dryrun"], + "request_fields":[ + {"tag": "TOR", "field_id": "ToR", "type": "*constant", "value": "*sms"}, + ], + "reply_fields":[ + ], + }, + ], +}, + +} \ No newline at end of file