CLOUDFLAREAPI: Prevent web UI from displaying warnings about TXT records

This commit is contained in:
Tom Limoncelli 2025-10-27 16:41:27 -04:00
parent 6ef0648778
commit 1ca48e2bd6
4 changed files with 12 additions and 6 deletions

View file

@ -84,6 +84,8 @@ func TestTxtEncode(t *testing.T) {
data []string
expected string
}{
{[]string{"simple"}, `"simple"`},
{[]string{`"quoted"`}, `"\"quoted\""`},
{[]string{}, `""`},
{[]string{``}, `""`},
{[]string{`foo`}, `"foo"`},

View file

@ -11,9 +11,7 @@ import (
func AuditRecords(records []*models.RecordConfig) []error {
a := rejectif.Auditor{}
a.Add("TXT", rejectif.TxtHasTrailingSpace) // Last verified 2022-06-18
a.Add("TXT", rejectif.TxtIsEmpty) // Last verified 2022-06-18
a.Add("TXT", rejectif.TxtIsEmpty) // Last verified 2024-10-27
return a.Audit(records)
}

View file

@ -18,6 +18,7 @@ import (
"github.com/StackExchange/dnscontrol/v4/pkg/diff2"
"github.com/StackExchange/dnscontrol/v4/pkg/printer"
"github.com/StackExchange/dnscontrol/v4/pkg/transform"
"github.com/StackExchange/dnscontrol/v4/pkg/txtutil"
"github.com/StackExchange/dnscontrol/v4/pkg/zonecache"
"github.com/StackExchange/dnscontrol/v4/providers"
"github.com/StackExchange/dnscontrol/v4/providers/cloudflare/rtypes/cfsingleredirect"
@ -871,7 +872,11 @@ func (c *cloudflareProvider) nativeToRecord(domain string, cr cloudflare.DNSReco
return nil, fmt.Errorf("unparsable SRV record received from cloudflare: %w", err)
}
case "TXT":
err := rc.SetTargetTXT(cr.Content)
s, err := txtutil.ParseQuoted(cr.Content)
if err != nil {
return rc, err
}
err = rc.SetTargetTXT(s)
return rc, err
default:
if err := rc.PopulateFromString(rType, cr.Content, domain); err != nil {

View file

@ -10,6 +10,7 @@ import (
"golang.org/x/net/idna"
"github.com/StackExchange/dnscontrol/v4/models"
"github.com/StackExchange/dnscontrol/v4/pkg/txtutil"
"github.com/StackExchange/dnscontrol/v4/providers/cloudflare/rtypes/cfsingleredirect"
)
@ -154,7 +155,7 @@ func (c *cloudflareProvider) createRecDiff2(rec *models.RecordConfig, domainID s
prio = fmt.Sprintf(" %d ", rec.MxPreference)
}
if rec.Type == "TXT" {
content = rec.GetTargetTXTJoined()
content = txtutil.EncodeQuoted(rec.GetTargetTXTJoined())
}
if rec.Type == "DS" {
content = fmt.Sprintf("%d %d %d %s", rec.DsKeyTag, rec.DsAlgorithm, rec.DsDigestType, rec.DsDigest)
@ -229,7 +230,7 @@ func (c *cloudflareProvider) modifyRecord(domainID, recID string, proxied bool,
TTL: int(rec.TTL),
}
if rec.Type == "TXT" {
r.Content = rec.GetTargetTXTJoined()
r.Content = txtutil.EncodeQuoted(rec.GetTargetTXTJoined())
}
if rec.Type == "SRV" {
r.Data = cfSrvData(rec)