Skip to content

Commit

Permalink
correct rdata parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
edglynes committed Apr 8, 2020
1 parent cc2ac05 commit 7f3aa1d
Showing 1 changed file with 53 additions and 13 deletions.
66 changes: 53 additions & 13 deletions configdns-v2/record_lookup.go
Original file line number Diff line number Diff line change
Expand Up @@ -326,22 +326,39 @@ func ParseRData(rtype string, rdata []string) map[string]interface{} {
fieldMap["flags"], _ = strconv.Atoi(parts[0])
fieldMap["protocol"], _ = strconv.Atoi(parts[1])
fieldMap["algorithm"], _ = strconv.Atoi(parts[2])
fieldMap["key"] = parts[3]
key := parts[3]
// key can have whitespace
if len(parts) > 4 {
i := 4
for i < len(parts) {
key += " " + parts[i]
}
}
fieldMap["key"] = key
break
}

case "DS":
for _, rcontent := range rdata {
parts := strings.Split(rcontent, " ")
fieldMap["keytag"], _ = strconv.Atoi(parts[0])
fieldMap["digest_type"], _ = strconv.Atoi(parts[1])
fieldMap["algorithm"], _ = strconv.Atoi(parts[2])
fieldMap["digest"] = parts[3]
fieldMap["digest_type"], _ = strconv.Atoi(parts[2])
fieldMap["algorithm"], _ = strconv.Atoi(parts[1])
dig := parts[3]
// digest can have whitespace
if len(parts) > 4 {
i := 4
for i < len(parts) {
dig += " " + parts[i]
}
}
fieldMap["digest"] = dig
break
}

case "HINFO":
for _, rcontent := range rdata {
rcontent = strings.ReplaceAll(rcontent, "\"", "\\\"")
parts := strings.Split(rcontent, " ")
fieldMap["hardware"] = parts[0]
fieldMap["software"] = parts[1]
Expand All @@ -366,21 +383,22 @@ func ParseRData(rtype string, rdata []string) map[string]interface{} {

case "NAPTR":
for _, rcontent := range rdata {
rcontent = strings.ReplaceAll(rcontent, "\"", "\\\"")
parts := strings.Split(rcontent, " ")
fieldMap["order"], _ = strconv.Atoi(parts[0])
fieldMap["preference"], _ = strconv.Atoi(parts[1])
fieldMap["flagsnaptr"] = parts[2]
fieldMap["regexp"] = parts[3]
fieldMap["replacement"] = parts[4]
fieldMap["service"] = parts[5]
fieldMap["service"] = parts[3]
fieldMap["regexp"] = parts[4]
fieldMap["replacement"] = parts[5]
break
}

case "NSEC3":
for _, rcontent := range rdata {
parts := strings.Split(rcontent, " ")
fieldMap["flags"], _ = strconv.Atoi(parts[0])
fieldMap["algorithm"], _ = strconv.Atoi(parts[1])
fieldMap["flags"], _ = strconv.Atoi(parts[1])
fieldMap["algorithm"], _ = strconv.Atoi(parts[0])
fieldMap["iterations"], _ = strconv.Atoi(parts[2])
fieldMap["salt"] = parts[3]
fieldMap["next_hashed_owner_name"] = parts[4]
Expand All @@ -391,8 +409,8 @@ func ParseRData(rtype string, rdata []string) map[string]interface{} {
case "NSEC3PARAM":
for _, rcontent := range rdata {
parts := strings.Split(rcontent, " ")
fieldMap["flags"], _ = strconv.Atoi(parts[0])
fieldMap["algorithm"], _ = strconv.Atoi(parts[1])
fieldMap["flags"], _ = strconv.Atoi(parts[1])
fieldMap["algorithm"], _ = strconv.Atoi(parts[0])
fieldMap["iterations"], _ = strconv.Atoi(parts[2])
fieldMap["salt"] = parts[3]
break
Expand All @@ -415,9 +433,17 @@ func ParseRData(rtype string, rdata []string) map[string]interface{} {
fieldMap["original_ttl"], _ = strconv.Atoi(parts[3])
fieldMap["expiration"] = parts[4]
fieldMap["inception"] = parts[5]
fieldMap["signature"] = parts[6]
fieldMap["signer"] = parts[7]
fieldMap["keytag"], _ = strconv.Atoi(parts[8])
fieldMap["keytag"], _ = strconv.Atoi(parts[6])
sig := parts[8]
// sig can have whitespace
if len(parts) > 9 {
i := 9
for i < len(parts) {
sig += " " + parts[i]
}
}
fieldMap["signature"] = sig
break
}

Expand Down Expand Up @@ -464,6 +490,20 @@ func ParseRData(rtype string, rdata []string) map[string]interface{} {
fieldMap["answer_type"] = parts[0]
fieldMap["dns_name"] = parts[1]

case "SPF":
for _, rcontent := range rdata {
rcontent = strings.ReplaceAll(rcontent, "\"", "\\\"")
newrdata = append(newrdata, rcontent)
}
fieldMap["target"] = newrdata

case "TXT":
for _, rcontent := range rdata {
rcontent = strings.ReplaceAll(rcontent, "\"", "\\\"")
newrdata = append(newrdata, rcontent)
}
fieldMap["target"] = newrdata

default:
for _, rcontent := range rdata {
newrdata = append(newrdata, rcontent)
Expand Down

0 comments on commit 7f3aa1d

Please sign in to comment.