dnscontrol/providers/adguardhome/auditrecords.go
2025-07-09 12:06:34 -04:00

49 lines
1.2 KiB
Go

package adguardhome
import (
"fmt"
"github.com/StackExchange/dnscontrol/v4/models"
"github.com/StackExchange/dnscontrol/v4/pkg/rejectif"
)
var supportedRTypes = map[string]struct{}{
"A": {},
"AAAA": {},
"CNAME": {},
"ALIAS": {},
"ADGUARDHOME_A_PASSTHROUGH": {},
"ADGUARDHOME_AAAA_PASSTHROUGH": {},
}
// AuditRecords returns a list of errors corresponding to the records
// that aren't supported by this provider. If all records are
// supported, an empty list is returned.
func AuditRecords(records []*models.RecordConfig) []error {
a := rejectif.Auditor{}
a.Add("ALIAS", rejectif.LabelNotApex)
a.Add("ADGUARDHOME_A_PASSTHROUGH", nonNullValue)
a.Add("ADGUARDHOME_AAAA_PASSTHROUGH", nonNullValue)
errors := []error{}
errors = append(errors, a.Audit(records)...)
for _, r := range records {
if _, ok := supportedRTypes[r.Type]; !ok {
errors = append(errors, fmt.Errorf("%s rtype is not supported", r.Type))
}
}
return errors
}
func nonNullValue(v *models.RecordConfig) error {
if len(v.GetTargetField()) != 0 {
return fmt.Errorf("%s rtype value should be empty", v.Type)
}
return nil
}