dnscontrol/providers/cloudns/auditrecords.go
Anton Yurchenko 875bb02c4e
CLOUDNS: ClouDNS NOT allow multiple TXT records with same name (#1098)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-03-21 14:13:41 -04:00

51 lines
1.2 KiB
Go

package cloudns
import (
"fmt"
"github.com/StackExchange/dnscontrol/v3/models"
"github.com/StackExchange/dnscontrol/v3/pkg/recordaudit"
)
// AuditRecords returns an error if any records are not
// supportable by this provider.
func AuditRecords(records []*models.RecordConfig) error {
if err := recordaudit.TxtNoBackticks(records); err != nil {
return err
}
// Still needed as of 2021-03-01
if err := recordaudit.TxtNotEmpty(records); err != nil {
return err
}
// Still needed as of 2021-03-01
if err := recordaudit.TxtNoTrailingSpace(records); err != nil {
return err
}
// Still needed as of 2021-03-01
if err := recordaudit.TxtNoDoubleQuotes(records); err != nil {
return err
}
// Still needed as of 2021-03-11
if err := txtNoMultipleStrings(records); err != nil {
return err
}
return nil
}
// ClouDNS NOT allow multiple TXT records with same name
// But allow values longer the 255
func txtNoMultipleStrings(records []*models.RecordConfig) error {
for _, rc := range records {
if rc.HasFormatIdenticalToTXT() { // TXT and similar:
if len(rc.TxtStrings) > 1 {
return fmt.Errorf("multiple strings in one txt")
}
}
}
return nil
}