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..c905650c 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) + } + newrdata = append(newrdata, 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,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] @@ -383,7 +401,6 @@ 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]) @@ -492,18 +509,34 @@ func ParseRData(rtype string, rdata []string) map[string]interface{} { 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 + 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)