mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-01-17 21:07:49 +08:00
42 lines
945 B
Go
42 lines
945 B
Go
|
package namedotcom
|
||
|
|
||
|
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 := MaxLengthNDC(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
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// MaxLengthNDC returns and error if the sum of the strings
|
||
|
// are longer than permitted by DigitalOcean. Sadly their
|
||
|
// length limit is undocumented. This seems to work.
|
||
|
func MaxLengthNDC(records []*models.RecordConfig) error {
|
||
|
for _, rc := range records {
|
||
|
|
||
|
if rc.HasFormatIdenticalToTXT() { // TXT and similar:
|
||
|
if len(rc.GetTargetField()) > 512 {
|
||
|
return fmt.Errorf("encoded txt too long")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
return nil
|
||
|
}
|