From b455a9dc6e3d1cccca2c8f2beb5c3c7c71021fe4 Mon Sep 17 00:00:00 2001 From: Daniel Muehlbachler-Pietrzykowski Date: Thu, 9 Nov 2023 07:58:07 +0100 Subject: [PATCH] feat: support all external-dns records; fix #12 --- internal/adguard/provider.go | 3 ++- internal/adguard/provider_test.go | 13 +++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/internal/adguard/provider.go b/internal/adguard/provider.go index 5dc4d95..c40d5a8 100644 --- a/internal/adguard/provider.go +++ b/internal/adguard/provider.go @@ -178,7 +178,8 @@ func (p *Provider) Records(ctx context.Context) ([]*endpoint.Endpoint, error) { } func endpointSupported(e *endpoint.Endpoint) bool { - return e.RecordType == endpoint.RecordTypeA || e.RecordType == endpoint.RecordTypeTXT || e.RecordType == endpoint.RecordTypeAAAA || e.RecordType == endpoint.RecordTypeCNAME + // Adguard does not have any restriction, and we can allow all upstream/external-dns ones + return e.RecordType == endpoint.RecordTypeA || e.RecordType == endpoint.RecordTypeTXT || e.RecordType == endpoint.RecordTypeAAAA || e.RecordType == endpoint.RecordTypeCNAME || e.RecordType == endpoint.RecordTypeSRV || e.RecordType == endpoint.RecordTypeNS || e.RecordType == endpoint.RecordTypePTR || e.RecordType == endpoint.RecordTypeMX } func deserializeToEndpoint(rule string) (*endpoint.Endpoint, error) { diff --git a/internal/adguard/provider_test.go b/internal/adguard/provider_test.go index 017c773..f676b96 100644 --- a/internal/adguard/provider_test.go +++ b/internal/adguard/provider_test.go @@ -97,21 +97,26 @@ func TestEndpointSupported(t *testing.T) { { name: "SRV record", endpoint: endpoint.NewEndpoint("domain.com", endpoint.RecordTypeSRV, "rsv"), - valid: false, + valid: true, }, { name: "NS record", endpoint: endpoint.NewEndpoint("domain.com", endpoint.RecordTypeNS, "1.1.1.1"), - valid: false, + valid: true, }, { name: "PTR record", endpoint: endpoint.NewEndpoint("1.1.1.1", endpoint.RecordTypePTR, "domain.com"), - valid: false, + valid: true, }, { name: "MX record", endpoint: endpoint.NewEndpoint("1.1.1.1", endpoint.RecordTypeMX, "10 mail.domain.com."), + valid: true, + }, + { + name: "SOA record", + endpoint: endpoint.NewEndpoint("1.1.1.1", "SOA", "invalid record"), valid: false, }, } @@ -594,7 +599,7 @@ func TestApplyChanges(t *testing.T) { Create: []*endpoint.Endpoint{ { DNSName: "domain.com", - RecordType: endpoint.RecordTypeSRV, + RecordType: "SOA", Targets: []string{ "srv", },