diff --git a/providers/desec/convert.go b/providers/desec/convert.go index 34674af33..654bdc7bf 100644 --- a/providers/desec/convert.go +++ b/providers/desec/convert.go @@ -4,6 +4,7 @@ package desec import ( "fmt" + "strings" "github.com/StackExchange/dnscontrol/v3/models" "github.com/StackExchange/dnscontrol/v3/pkg/printer" @@ -24,7 +25,10 @@ func nativeToRecords(n resourceRecord, origin string) (rcs []*models.RecordConfi } rc.SetLabel(n.Subname, origin) switch rtype := n.Type; rtype { - default: // "A", "AAAA", "CAA", "NS", "CNAME", "MX", "PTR", "SRV", "TXT" + case "TXT": + rc.SetTargetTXT(value) + rc.TxtNormalize("multistring") + default: // "A", "AAAA", "CAA", "NS", "CNAME", "MX", "PTR", "SRV" if err := rc.PopulateFromString(rtype, value, origin); err != nil { panic(fmt.Errorf("unparsable record received from deSEC: %w", err)) } @@ -58,6 +62,9 @@ func recordsToNative(rcs []*models.RecordConfig, origin string) []resourceRecord Subname: label, Records: []string{r.GetTargetCombined()}, } + if r.Type == "TXT" { + zr.Records = []string{strings.Join(r.TxtStrings, "")} + } zrs = append(zrs, zr) //keys[key] = &zr // This didn't work. keys[key] = &zrs[len(zrs)-1] // This does work. I don't know why. diff --git a/providers/desec/desecProvider.go b/providers/desec/desecProvider.go index cafa2a89d..1aeff83fd 100644 --- a/providers/desec/desecProvider.go +++ b/providers/desec/desecProvider.go @@ -48,6 +48,7 @@ var features = providers.DocumentationNotes{ providers.CanUsePTR: providers.Can(), providers.CanGetZones: providers.Can(), providers.CanAutoDNSSEC: providers.Cannot(), + providers.CanUseTXTMulti: providers.Can(), } var defaultNameServerNames = []string{