Ctrl K
ComunidadGuías…

adguardhome/legacy_rules.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package adguardhome

import (
	"fmt"
	"strings"

	"sigs.k8s.io/external-dns/endpoint"
)

func legacyRuleFormat() ruleFormat {
	return ruleFormat{
		formatRules: formatLegacyRules,
		needsMigration: func(rule string) bool {
			return strings.HasPrefix(rule, "! ")
		},
	}
}

func formatLegacyRules(endpoints []*endpoint.Endpoint, suffix string) ([]string, error) {
	rules := make([]string, 0, len(endpoints))
	domainSeen := make(map[string]struct{})
	domainsOrder := make([]string, 0)
	for _, e := range endpoints {
		rules = append(rules, endpointToString(e, suffix))
		if e.RecordType == endpoint.RecordTypeA {
			if _, ok := domainSeen[e.DNSName]; !ok {
				domainSeen[e.DNSName] = struct{}{}
				domainsOrder = append(domainsOrder, e.DNSName)
			}
		}
	}
	for _, d := range domainsOrder {
		rules = append(rules, artificialRuleToString(d, suffix))
	}
	return rules, nil
}

func artificialRuleToString(domain, suffix string) string {
	return fmt.Sprintf("@@||%s #%s", domain, suffix)
}