Adding DomainName and QueryName into DNSAgent variables

This commit is contained in:
DanB
2019-07-10 18:12:25 +02:00
parent 0ed30ff0ea
commit 7e77f1fa35
4 changed files with 30 additions and 1 deletions

View File

@@ -80,6 +80,7 @@ func (da *DNSAgent) handleMessage(w dns.ResponseWriter, req *dns.Msg) {
// message preprocesing
switch req.Question[0].Qtype {
case dns.TypeNAPTR:
reqVars[QueryName] = req.Question[0].Name
e164, err := e164FromNAPTR(req.Question[0].Name)
if err != nil {
utils.Logger.Warning(
@@ -90,6 +91,8 @@ func (da *DNSAgent) handleMessage(w dns.ResponseWriter, req *dns.Msg) {
return
}
reqVars[E164Address] = e164
reqVars[DomainName] = domainNameFromNAPTR(req.Question[0].Name)
}
cgrRplyNM := config.NewNavigableMap(nil)
rplyNM := config.NewNavigableMap(nil) // share it among different processors

View File

@@ -32,11 +32,13 @@ import (
const (
QueryType = "QueryType"
E164Address = "E164Address"
QueryName = "QueryName"
DomainName = "DomainName"
)
// e164FromNAPTR extracts the E164 address out of a NAPTR name record
func e164FromNAPTR(name string) (e164 string, err error) {
i := strings.Index(name, ".e164.arpa")
i := strings.Index(name, ".e164.")
if i == -1 {
return "", errors.New("unknown format")
}
@@ -45,6 +47,17 @@ func e164FromNAPTR(name string) (e164 string, err error) {
return
}
// domainNameFromNAPTR extracts the domain part out of a NAPTR name record
func domainNameFromNAPTR(name string) (dName string) {
i := strings.Index(name, ".e164.")
if i == -1 {
dName = name
} else {
dName = name[i:]
}
return strings.Trim(dName, ".")
}
// newDADataProvider constructs a DataProvider for a diameter message
func newDNSDataProvider(req *dns.Msg,
w dns.ResponseWriter) config.DataProvider {

View File

@@ -35,6 +35,18 @@ func TestE164FromNAPTR(t *testing.T) {
}
}
func TestDomainNameFromNAPTR(t *testing.T) {
if dName := domainNameFromNAPTR("8.7.6.5.4.3.2.1.0.1.6.e164.arpa."); dName != "e164.arpa" {
t.Errorf("received: <%s>", dName)
}
if dName := domainNameFromNAPTR("8.7.6.5.4.3.2.1.0.1.6.e164.itsyscom.com."); dName != "e164.itsyscom.com" {
t.Errorf("received: <%s>", dName)
}
if dName := domainNameFromNAPTR("8.7.6.5.4.3.2.1.0.1.6.itsyscom.com."); dName != "8.7.6.5.4.3.2.1.0.1.6.itsyscom.com" {
t.Errorf("received: <%s>", dName)
}
}
func TestAppendDNSAnswerTypeNAPTR(t *testing.T) {
m := new(dns.Msg)
m.SetQuestion("3.6.9.4.7.1.7.1.5.6.8.9.4.e164.arpa.", dns.TypeNAPTR)

View File

@@ -11,6 +11,7 @@
"log_level": 7, // control the level of messages logged (0-emerg to 7-debug)
},
"stor_db": {
"db_password": "CGRateS.org",
},