From 8324492a8920918118afd078f5fd2814e9418387 Mon Sep 17 00:00:00 2001 From: Ed Lynes Date: Fri, 10 Apr 2020 16:59:34 -0400 Subject: [PATCH 1/2] import related refactoring --- configdns-v2/record.go | 16 ++++++++++++ configdns-v2/record_lookup.go | 48 ++++++++++++++++++++++++++++++++--- 2 files changed, 60 insertions(+), 4 deletions(-) diff --git a/configdns-v2/record.go b/configdns-v2/record.go index 4a363d50..e721a633 100644 --- a/configdns-v2/record.go +++ b/configdns-v2/record.go @@ -2,6 +2,7 @@ package dnsv2 import ( "github.com/akamai/AkamaiOPEN-edgegrid-golang/client-v1" + edge "github.com/akamai/AkamaiOPEN-edgegrid-golang/edgegrid" "sync" ) @@ -90,6 +91,9 @@ func (record *RecordBody) Save(zone string) error { if err != nil { return err } + + edge.PrintHttpRequest(req, true) + res, err := client.Do(Config, req) // Network error @@ -101,6 +105,8 @@ func (record *RecordBody) Save(zone string) error { } } + edge.PrintHttpResponse(res, true) + // API error if client.IsError(res) { err := client.NewAPIError(res) @@ -128,6 +134,9 @@ func (record *RecordBody) Update(zone string) error { if err != nil { return err } + + edge.PrintHttpRequest(req, true) + res, err := client.Do(Config, req) // Network error @@ -139,6 +148,8 @@ func (record *RecordBody) Update(zone string) error { } } + edge.PrintHttpResponse(res, true) + // API error if client.IsError(res) { err := client.NewAPIError(res) @@ -165,6 +176,9 @@ func (record *RecordBody) Delete(zone string) error { if err != nil { return err } + + edge.PrintHttpRequest(req, true) + res, err := client.Do(Config, req) // Network error @@ -176,6 +190,8 @@ func (record *RecordBody) Delete(zone string) error { } } + edge.PrintHttpResponse(res, true) + // API error if client.IsError(res) { err := client.NewAPIError(res) diff --git a/configdns-v2/record_lookup.go b/configdns-v2/record_lookup.go index 113ec282..8c73b1d9 100644 --- a/configdns-v2/record_lookup.go +++ b/configdns-v2/record_lookup.go @@ -301,6 +301,24 @@ func GetRdata(zone string, name string, record_type string) ([]string, error) { return rdata, nil } +func ProcessRdata(rdata []string, rtype string) []string { + + newrdata := make([]string, 0, len(rdata)) + for _, i := range rdata { + str := i + if rtype == "AAAA" { + addr := net.ParseIP(str) + result := FullIPv6(addr) + str = result + } else if rtype == "LOC" { + str = PadCoordinates(str) + } + rdata = append(rdata, str) + } + return newrdata + +} + // Utility method to parse RData in context of type. Return map of fields and values func ParseRData(rtype string, rdata []string) map[string]interface{} { @@ -309,6 +327,7 @@ func ParseRData(rtype string, rdata []string) map[string]interface{} { return fieldMap } newrdata := make([]string, 0, len(rdata)) + fieldMap["target"] = newrdata switch rtype { case "AFSDB": @@ -358,7 +377,7 @@ func ParseRData(rtype string, rdata []string) map[string]interface{} { case "HINFO": for _, rcontent := range rdata { - rcontent = strings.ReplaceAll(rcontent, "\"", "\\\"") + //rcontent = strings.ReplaceAll(rcontent, "\"", "\\\"") parts := strings.Split(rcontent, " ") fieldMap["hardware"] = parts[0] fieldMap["software"] = parts[1] @@ -383,12 +402,14 @@ 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"] = strings.Trim(parts[2], "\"") fieldMap["flagsnaptr"] = parts[2] + //fieldMap["service"] = strings.Trim(parts[3], "\"") fieldMap["service"] = parts[3] + //fieldMap["regexp"] = strings.Trim(parts[4], "\"") fieldMap["regexp"] = parts[4] fieldMap["replacement"] = parts[5] break @@ -492,18 +513,37 @@ func ParseRData(rtype string, rdata []string) map[string]interface{} { case "SPF": for _, rcontent := range rdata { - rcontent = strings.ReplaceAll(rcontent, "\"", "\\\"") + //newrdata = append(newrdata, strings.Trim(rcontent, "\"")) newrdata = append(newrdata, rcontent) } fieldMap["target"] = newrdata case "TXT": for _, rcontent := range rdata { - rcontent = strings.ReplaceAll(rcontent, "\"", "\\\"") + //rcontent = strings.Trim(rcontent, "\"") + //rcontent = strings.ReplaceAll(rcontent, "\"", "\\\"") newrdata = append(newrdata, rcontent) } fieldMap["target"] = newrdata + case "AAAA": + for _, i := range rdata { + str := i + addr := net.ParseIP(str) + result := FullIPv6(addr) + str = result + newrdata = append(newrdata, str) + } + fieldMap["target"] = newrdata + + case "LOC": + for _, i := range rdata { + str := i + str = PadCoordinates(str) + newrdata = append(newrdata, str) + } + fieldMap["target"] = newrdata + default: for _, rcontent := range rdata { newrdata = append(newrdata, rcontent) From cb7db7fb2a6786839cc7395e6e4fb61daa6be70b Mon Sep 17 00:00:00 2001 From: Ed Lynes Date: Mon, 13 Apr 2020 13:24:08 -0400 Subject: [PATCH 2/2] Corrected logic in Parse and Process RData --- configdns-v2/record_lookup.go | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/configdns-v2/record_lookup.go b/configdns-v2/record_lookup.go index 8c73b1d9..c905650c 100644 --- a/configdns-v2/record_lookup.go +++ b/configdns-v2/record_lookup.go @@ -313,7 +313,7 @@ func ProcessRdata(rdata []string, rtype string) []string { } else if rtype == "LOC" { str = PadCoordinates(str) } - rdata = append(rdata, str) + newrdata = append(newrdata, str) } return newrdata @@ -377,7 +377,6 @@ func ParseRData(rtype string, rdata []string) map[string]interface{} { case "HINFO": for _, rcontent := range rdata { - //rcontent = strings.ReplaceAll(rcontent, "\"", "\\\"") parts := strings.Split(rcontent, " ") fieldMap["hardware"] = parts[0] fieldMap["software"] = parts[1] @@ -405,11 +404,8 @@ func ParseRData(rtype string, rdata []string) map[string]interface{} { parts := strings.Split(rcontent, " ") fieldMap["order"], _ = strconv.Atoi(parts[0]) fieldMap["preference"], _ = strconv.Atoi(parts[1]) - //fieldMap["flagsnaptr"] = strings.Trim(parts[2], "\"") fieldMap["flagsnaptr"] = parts[2] - //fieldMap["service"] = strings.Trim(parts[3], "\"") fieldMap["service"] = parts[3] - //fieldMap["regexp"] = strings.Trim(parts[4], "\"") fieldMap["regexp"] = parts[4] fieldMap["replacement"] = parts[5] break @@ -513,15 +509,12 @@ func ParseRData(rtype string, rdata []string) map[string]interface{} { case "SPF": for _, rcontent := range rdata { - //newrdata = append(newrdata, strings.Trim(rcontent, "\"")) newrdata = append(newrdata, rcontent) } fieldMap["target"] = newrdata case "TXT": for _, rcontent := range rdata { - //rcontent = strings.Trim(rcontent, "\"") - //rcontent = strings.ReplaceAll(rcontent, "\"", "\\\"") newrdata = append(newrdata, rcontent) } fieldMap["target"] = newrdata