mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-12-09 13:46:07 +08:00
49 lines
1.2 KiB
Go
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
|
|
}
|