mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-17 06:09:53 +05:00
Adding DomainName and QueryName into DNSAgent variables
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
"log_level": 7, // control the level of messages logged (0-emerg to 7-debug)
|
||||
},
|
||||
|
||||
|
||||
"stor_db": {
|
||||
"db_password": "CGRateS.org",
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user