From bf55468c956e3ab0457e7cdd433b5d428d43cb52 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Wed, 11 Jun 2025 14:36:10 +0200 Subject: [PATCH] New domain filtering method: domain contains --- internal/service/analyzer.go | 14 ++++++++------ services/dkim.go | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/internal/service/analyzer.go b/internal/service/analyzer.go index 5d0cc2cc..585ad672 100644 --- a/internal/service/analyzer.go +++ b/internal/service/analyzer.go @@ -56,6 +56,7 @@ func (p *recordPool) SearchRR(arrs ...AnalyzerRecordFilter) (rrs []happydns.Reco rdtype := rhdr.Rrtype if strings.HasPrefix(rhdr.Name, arr.Prefix) && strings.HasSuffix(rhdr.Name, arr.SubdomainsOf) && + strings.Contains(rhdr.Name, arr.DomainContains) && (arr.Domain == "" || rhdr.Name == arr.Domain || rhdr.Name == strings.TrimSuffix(arr.Domain, ".")) && (arr.Type == 0 || rdtype == arr.Type) && (arr.Ttl == 0 || rhdr.Ttl == arr.Ttl) && @@ -133,12 +134,13 @@ func (sa *serviceAccumulator) addService(rr happydns.Record, domain string, svc // AnalyzerRecordFilter specifies criteria for matching DNS records. // Zero-value fields are treated as wildcards (match anything). type AnalyzerRecordFilter struct { - Prefix string - Domain string - SubdomainsOf string - Contains string - Type uint16 - Ttl uint32 + Prefix string + Domain string + SubdomainsOf string + DomainContains string + Contains string + Type uint16 + Ttl uint32 } // Analyzer holds the state for zone analysis. It is composed of a recordPool diff --git a/services/dkim.go b/services/dkim.go index 795ad1a7..272cc094 100644 --- a/services/dkim.go +++ b/services/dkim.go @@ -164,7 +164,7 @@ func (s *DKIMRedirection) GetRecords(domain string, ttl uint32, origin string) ( } func dkim_analyze(a *svc.Analyzer) (err error) { - for _, record := range a.SearchRR(svc.AnalyzerRecordFilter{Type: dns.TypeTXT}) { + for _, record := range a.SearchRR(svc.AnalyzerRecordFilter{Type: dns.TypeTXT, DomainContains: "._domainkey."}) { dkidx := strings.Index(record.Header().Name, "._domainkey.") if dkidx <= 0 { continue