From 4794c01c6f4aff3a280dfd084cac66fcee77534d Mon Sep 17 00:00:00 2001 From: "s.kharlamov" Date: Sun, 8 Oct 2023 22:48:48 +0000 Subject: [PATCH 1/8] Allow multiple RFC2136 zones --- docs/tutorials/rfc2136.md | 4 ++ pkg/apis/externaldns/types.go | 6 +-- provider/rfc2136/rfc2136.go | 86 ++++++++++++++++++++------------ provider/rfc2136/rfc2136_test.go | 2 +- 4 files changed, 61 insertions(+), 37 deletions(-) diff --git a/docs/tutorials/rfc2136.md b/docs/tutorials/rfc2136.md index 144179c08..447a4be11 100644 --- a/docs/tutorials/rfc2136.md +++ b/docs/tutorials/rfc2136.md @@ -227,6 +227,7 @@ spec: - --rfc2136-host=192.168.0.1 - --rfc2136-port=53 - --rfc2136-zone=k8s.example.org + - --rfc2136-zone=k8s.your-zone.org - --rfc2136-tsig-secret=96Ah/a2g0/nLeFGK+d/0tzQcccf9hCEIy34PoXX2Qg8= - --rfc2136-tsig-secret-alg=hmac-sha256 - --rfc2136-tsig-keyname=externaldns-key @@ -269,6 +270,7 @@ spec: - --rfc2136-host=192.168.0.1 - --rfc2136-port=53 - --rfc2136-zone=k8s.example.org + - --rfc2136-zone=k8s.your-zone.org - --rfc2136-tsig-secret=96Ah/a2g0/nLeFGK+d/0tzQcccf9hCEIy34PoXX2Qg8= - --rfc2136-tsig-secret-alg=hmac-sha256 - --rfc2136-tsig-keyname=externaldns-key @@ -299,6 +301,7 @@ You'll want to configure `external-dns` similarly to the following: - --rfc2136-host=192.168.0.1 - --rfc2136-port=53 - --rfc2136-zone=k8s.example.org + - --rfc2136-zone=k8s.your-zone.org - --rfc2136-insecure - --rfc2136-tsig-axfr # needed to enable zone transfers, which is required for deletion of records. ... @@ -384,6 +387,7 @@ You'll want to configure `external-dns` similarly to the following: - --rfc2136-host=dns-host.yourdomain.com - --rfc2136-port=53 - --rfc2136-zone=your-zone.com + - --rfc2136-zone=your-secondary-zone.com - --rfc2136-kerberos-username=your-domain-account - --rfc2136-kerberos-password=your-domain-password - --rfc2136-kerberos-realm=your-domain.com diff --git a/pkg/apis/externaldns/types.go b/pkg/apis/externaldns/types.go index 8287f1edc..89d6d88ef 100644 --- a/pkg/apis/externaldns/types.go +++ b/pkg/apis/externaldns/types.go @@ -175,7 +175,7 @@ type Config struct { ResolveServiceLoadBalancerHostname bool RFC2136Host string RFC2136Port int - RFC2136Zone string + RFC2136Zone []string RFC2136Insecure bool RFC2136GSSTSIG bool RFC2136KerberosRealm string @@ -330,7 +330,7 @@ var defaultConfig = &Config{ CFPassword: "", RFC2136Host: "", RFC2136Port: 0, - RFC2136Zone: "", + RFC2136Zone: []string{}, RFC2136Insecure: false, RFC2136GSSTSIG: false, RFC2136KerberosRealm: "", @@ -558,7 +558,7 @@ func (cfg *Config) ParseFlags(args []string) error { // Flags related to RFC2136 provider app.Flag("rfc2136-host", "When using the RFC2136 provider, specify the host of the DNS server").Default(defaultConfig.RFC2136Host).StringVar(&cfg.RFC2136Host) app.Flag("rfc2136-port", "When using the RFC2136 provider, specify the port of the DNS server").Default(strconv.Itoa(defaultConfig.RFC2136Port)).IntVar(&cfg.RFC2136Port) - app.Flag("rfc2136-zone", "When using the RFC2136 provider, specify the zone entry of the DNS server to use").Default(defaultConfig.RFC2136Zone).StringVar(&cfg.RFC2136Zone) + app.Flag("rfc2136-zone", "When using the RFC2136 provider, specify zone entries of the DNS server to use").StringsVar(&cfg.RFC2136Zone) app.Flag("rfc2136-insecure", "When using the RFC2136 provider, specify whether to attach TSIG or not (default: false, requires --rfc2136-tsig-keyname and rfc2136-tsig-secret)").Default(strconv.FormatBool(defaultConfig.RFC2136Insecure)).BoolVar(&cfg.RFC2136Insecure) app.Flag("rfc2136-tsig-keyname", "When using the RFC2136 provider, specify the TSIG key to attached to DNS messages (required when --rfc2136-insecure=false)").Default(defaultConfig.RFC2136TSIGKeyName).StringVar(&cfg.RFC2136TSIGKeyName) app.Flag("rfc2136-tsig-secret", "When using the RFC2136 provider, specify the TSIG (base64) value to attached to DNS messages (required when --rfc2136-insecure=false)").Default(defaultConfig.RFC2136TSIGSecret).StringVar(&cfg.RFC2136TSIGSecret) diff --git a/provider/rfc2136/rfc2136.go b/provider/rfc2136/rfc2136.go index 27da01c69..e33d42c4c 100644 --- a/provider/rfc2136/rfc2136.go +++ b/provider/rfc2136/rfc2136.go @@ -20,6 +20,7 @@ import ( "context" "fmt" "net" + "sort" "strconv" "strings" "time" @@ -45,7 +46,7 @@ const ( type rfc2136Provider struct { provider.BaseProvider nameserver string - zoneName string + zoneName []string tsigKeyName string tsigSecret string tsigSecretAlg string @@ -81,19 +82,15 @@ type rfc2136Actions interface { } // NewRfc2136Provider is a factory function for OpenStack rfc2136 providers -func NewRfc2136Provider(host string, port int, zoneName string, insecure bool, keyName string, secret string, secretAlg string, axfr bool, domainFilter endpoint.DomainFilter, dryRun bool, minTTL time.Duration, gssTsig bool, krb5Username string, krb5Password string, krb5Realm string, batchChangeSize int, actions rfc2136Actions) (provider.Provider, error) { +func NewRfc2136Provider(host string, port int, zoneName []string, insecure bool, keyName string, secret string, secretAlg string, axfr bool, domainFilter endpoint.DomainFilter, dryRun bool, minTTL time.Duration, gssTsig bool, krb5Username string, krb5Password string, krb5Realm string, batchChangeSize int, actions rfc2136Actions) (provider.Provider, error) { secretAlgChecked, ok := tsigAlgs[secretAlg] if !ok && !insecure && !gssTsig { return nil, errors.Errorf("%s is not supported TSIG algorithm", secretAlg) } - if krb5Realm == "" { - krb5Realm = strings.ToUpper(zoneName) - } - r := &rfc2136Provider{ nameserver: net.JoinHostPort(host, strconv.Itoa(port)), - zoneName: dns.Fqdn(zoneName), + zoneName: zoneName, insecure: insecure, gssTsig: gssTsig, krb5Username: krb5Username, @@ -209,30 +206,32 @@ func (r rfc2136Provider) List() ([]dns.RR, error) { return make([]dns.RR, 0), nil } - log.Debugf("Fetching records for '%s'", r.zoneName) - - m := new(dns.Msg) - m.SetAxfr(r.zoneName) - if !r.insecure && !r.gssTsig { - m.SetTsig(r.tsigKeyName, r.tsigSecretAlg, clockSkew, time.Now().Unix()) - } - - env, err := r.actions.IncomeTransfer(m, r.nameserver) - if err != nil { - return nil, fmt.Errorf("failed to fetch records via AXFR: %v", err) - } - records := make([]dns.RR, 0) - for e := range env { - if e.Error != nil { - if e.Error == dns.ErrSoa { - log.Error("AXFR error: unexpected response received from the server") - } else { - log.Errorf("AXFR error: %v", e.Error) - } - continue + for _, zone := range r.zoneName { + log.Debugf("Fetching records for '%s'", zone) + + m := new(dns.Msg) + m.SetAxfr(dns.Fqdn(zone)) + if !r.insecure && !r.gssTsig { + m.SetTsig(r.tsigKeyName, r.tsigSecretAlg, clockSkew, time.Now().Unix()) + } + + env, err := r.actions.IncomeTransfer(m, r.nameserver) + if err != nil { + return nil, fmt.Errorf("failed to fetch records via AXFR: %v", err) + } + + for e := range env { + if e.Error != nil { + if e.Error == dns.ErrSoa { + log.Error("AXFR error: unexpected response received from the server") + } else { + log.Errorf("AXFR error: %v", e.Error) + } + continue + } + records = append(records, e.RR...) } - records = append(records, e.RR...) } return records, nil @@ -248,14 +247,14 @@ func (r rfc2136Provider) ApplyChanges(ctx context.Context, changes *plan.Changes log.Debugf("Processing batch %d of create changes", c) m := new(dns.Msg) - m.SetUpdate(r.zoneName) - for _, ep := range chunk { if !r.domainFilter.Match(ep.DNSName) { log.Debugf("Skipping record %s because it was filtered out by the specified --domain-filter", ep.DNSName) continue } + findMsgZone(ep, m, &r) + r.AddRecord(m, ep) } @@ -274,7 +273,6 @@ func (r rfc2136Provider) ApplyChanges(ctx context.Context, changes *plan.Changes log.Debugf("Processing batch %d of update changes", c) m := new(dns.Msg) - m.SetUpdate(r.zoneName) for i, ep := range chunk { if !r.domainFilter.Match(ep.DNSName) { @@ -282,6 +280,8 @@ func (r rfc2136Provider) ApplyChanges(ctx context.Context, changes *plan.Changes continue } + findMsgZone(ep, m, &r) + r.UpdateRecord(m, changes.UpdateOld[i], ep) } @@ -300,7 +300,6 @@ func (r rfc2136Provider) ApplyChanges(ctx context.Context, changes *plan.Changes log.Debugf("Processing batch %d of delete changes", c) m := new(dns.Msg) - m.SetUpdate(r.zoneName) for _, ep := range chunk { if !r.domainFilter.Match(ep.DNSName) { @@ -308,6 +307,8 @@ func (r rfc2136Provider) ApplyChanges(ctx context.Context, changes *plan.Changes continue } + findMsgZone(ep, m, &r) + r.RemoveRecord(m, ep) } @@ -439,3 +440,22 @@ func chunkBy(slice []*endpoint.Endpoint, chunkSize int) [][]*endpoint.Endpoint { return chunks } + +func findMsgZone(ep *endpoint.Endpoint, m *dns.Msg, r *rfc2136Provider) { + sort.Slice(r.zoneName, func(i, j int) bool { + return len(strings.Split(r.zoneName[i], ".")) > len(strings.Split(r.zoneName[j], ".")) + }) + + for _, zone := range r.zoneName { + if strings.HasSuffix(ep.DNSName, zone) { + r.krb5Realm = strings.ToUpper(dns.Fqdn(zone)) + m.SetUpdate(dns.Fqdn(zone)) + + return + } + } + + log.Debugf("No avialable zone found for %s, set it to 'root'", ep.DNSName) + r.krb5Realm = dns.Fqdn(".") + m.SetUpdate(dns.Fqdn(".")) +} diff --git a/provider/rfc2136/rfc2136_test.go b/provider/rfc2136/rfc2136_test.go index 38220e042..a89c74887 100644 --- a/provider/rfc2136/rfc2136_test.go +++ b/provider/rfc2136/rfc2136_test.go @@ -95,7 +95,7 @@ func (r *rfc2136Stub) IncomeTransfer(m *dns.Msg, a string) (env chan *dns.Envelo } func createRfc2136StubProvider(stub *rfc2136Stub) (provider.Provider, error) { - return NewRfc2136Provider("", 0, "", false, "key", "secret", "hmac-sha512", true, endpoint.DomainFilter{}, false, 300*time.Second, false, "", "", "", 50, stub) + return NewRfc2136Provider("", 0, []string{}, false, "key", "secret", "hmac-sha512", true, endpoint.DomainFilter{}, false, 300*time.Second, false, "", "", "", 50, stub) } func extractAuthoritySectionFromMessage(msg fmt.Stringer) []string { From 20b920064b6ee51b41c1fce86c7b021555891fc9 Mon Sep 17 00:00:00 2001 From: CRASH-Tech Date: Mon, 16 Oct 2023 11:22:54 +0300 Subject: [PATCH 2/8] Update provider/rfc2136/rfc2136.go Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com> --- provider/rfc2136/rfc2136.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provider/rfc2136/rfc2136.go b/provider/rfc2136/rfc2136.go index e33d42c4c..a6c6460ed 100644 --- a/provider/rfc2136/rfc2136.go +++ b/provider/rfc2136/rfc2136.go @@ -455,7 +455,7 @@ func findMsgZone(ep *endpoint.Endpoint, m *dns.Msg, r *rfc2136Provider) { } } - log.Debugf("No avialable zone found for %s, set it to 'root'", ep.DNSName) + log.Debugf("No available zone found for %s, set it to 'root'", ep.DNSName) r.krb5Realm = dns.Fqdn(".") m.SetUpdate(dns.Fqdn(".")) } From 3e59dc37197535a6f3b2b427435f8eba357a88f0 Mon Sep 17 00:00:00 2001 From: "s.kharlamov" Date: Mon, 16 Oct 2023 08:27:47 +0000 Subject: [PATCH 3/8] RFC2136: Do not repeat zones sort --- provider/rfc2136/rfc2136.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/provider/rfc2136/rfc2136.go b/provider/rfc2136/rfc2136.go index a6c6460ed..1efc3c222 100644 --- a/provider/rfc2136/rfc2136.go +++ b/provider/rfc2136/rfc2136.go @@ -88,6 +88,11 @@ func NewRfc2136Provider(host string, port int, zoneName []string, insecure bool, return nil, errors.Errorf("%s is not supported TSIG algorithm", secretAlg) } + // Sort zones + sort.Slice(zoneName, func(i, j int) bool { + return len(strings.Split(zoneName[i], ".")) > len(strings.Split(zoneName[j], ".")) + }) + r := &rfc2136Provider{ nameserver: net.JoinHostPort(host, strconv.Itoa(port)), zoneName: zoneName, @@ -442,10 +447,6 @@ func chunkBy(slice []*endpoint.Endpoint, chunkSize int) [][]*endpoint.Endpoint { } func findMsgZone(ep *endpoint.Endpoint, m *dns.Msg, r *rfc2136Provider) { - sort.Slice(r.zoneName, func(i, j int) bool { - return len(strings.Split(r.zoneName[i], ".")) > len(strings.Split(r.zoneName[j], ".")) - }) - for _, zone := range r.zoneName { if strings.HasSuffix(ep.DNSName, zone) { r.krb5Realm = strings.ToUpper(dns.Fqdn(zone)) From 98e971604422e8d004a21a368941fcf890b6faaf Mon Sep 17 00:00:00 2001 From: "s.kharlamov" Date: Mon, 16 Oct 2023 09:34:02 +0000 Subject: [PATCH 4/8] RFC2136 Rename field zoneName to zoneNames --- provider/rfc2136/rfc2136.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/provider/rfc2136/rfc2136.go b/provider/rfc2136/rfc2136.go index 1efc3c222..fc53528ab 100644 --- a/provider/rfc2136/rfc2136.go +++ b/provider/rfc2136/rfc2136.go @@ -46,7 +46,7 @@ const ( type rfc2136Provider struct { provider.BaseProvider nameserver string - zoneName []string + zoneNames []string tsigKeyName string tsigSecret string tsigSecretAlg string @@ -82,20 +82,20 @@ type rfc2136Actions interface { } // NewRfc2136Provider is a factory function for OpenStack rfc2136 providers -func NewRfc2136Provider(host string, port int, zoneName []string, insecure bool, keyName string, secret string, secretAlg string, axfr bool, domainFilter endpoint.DomainFilter, dryRun bool, minTTL time.Duration, gssTsig bool, krb5Username string, krb5Password string, krb5Realm string, batchChangeSize int, actions rfc2136Actions) (provider.Provider, error) { +func NewRfc2136Provider(host string, port int, zoneNames []string, insecure bool, keyName string, secret string, secretAlg string, axfr bool, domainFilter endpoint.DomainFilter, dryRun bool, minTTL time.Duration, gssTsig bool, krb5Username string, krb5Password string, krb5Realm string, batchChangeSize int, actions rfc2136Actions) (provider.Provider, error) { secretAlgChecked, ok := tsigAlgs[secretAlg] if !ok && !insecure && !gssTsig { return nil, errors.Errorf("%s is not supported TSIG algorithm", secretAlg) } // Sort zones - sort.Slice(zoneName, func(i, j int) bool { - return len(strings.Split(zoneName[i], ".")) > len(strings.Split(zoneName[j], ".")) + sort.Slice(zoneNames, func(i, j int) bool { + return len(strings.Split(zoneNames[i], ".")) > len(strings.Split(zoneNames[j], ".")) }) r := &rfc2136Provider{ nameserver: net.JoinHostPort(host, strconv.Itoa(port)), - zoneName: zoneName, + zoneNames: zoneNames, insecure: insecure, gssTsig: gssTsig, krb5Username: krb5Username, @@ -119,7 +119,7 @@ func NewRfc2136Provider(host string, port int, zoneName []string, insecure bool, r.tsigSecretAlg = secretAlgChecked } - log.Infof("Configured RFC2136 with zone '%s' and nameserver '%s'", r.zoneName, r.nameserver) + log.Infof("Configured RFC2136 with zone '%s' and nameserver '%s'", r.zoneNames, r.nameserver) return r, nil } @@ -212,7 +212,7 @@ func (r rfc2136Provider) List() ([]dns.RR, error) { } records := make([]dns.RR, 0) - for _, zone := range r.zoneName { + for _, zone := range r.zoneNames { log.Debugf("Fetching records for '%s'", zone) m := new(dns.Msg) @@ -447,7 +447,7 @@ func chunkBy(slice []*endpoint.Endpoint, chunkSize int) [][]*endpoint.Endpoint { } func findMsgZone(ep *endpoint.Endpoint, m *dns.Msg, r *rfc2136Provider) { - for _, zone := range r.zoneName { + for _, zone := range r.zoneNames { if strings.HasSuffix(ep.DNSName, zone) { r.krb5Realm = strings.ToUpper(dns.Fqdn(zone)) m.SetUpdate(dns.Fqdn(zone)) From 714078dc95db9514e4613502f42f7efe7c0db10e Mon Sep 17 00:00:00 2001 From: "s.kharlamov" Date: Mon, 16 Oct 2023 10:00:45 +0000 Subject: [PATCH 5/8] RFC2136 Set zone to root if no set --- provider/rfc2136/rfc2136.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/provider/rfc2136/rfc2136.go b/provider/rfc2136/rfc2136.go index fc53528ab..d8881ff95 100644 --- a/provider/rfc2136/rfc2136.go +++ b/provider/rfc2136/rfc2136.go @@ -88,6 +88,11 @@ func NewRfc2136Provider(host string, port int, zoneNames []string, insecure bool return nil, errors.Errorf("%s is not supported TSIG algorithm", secretAlg) } + // Set zone to root if no set + if len(zoneNames) == 0 { + zoneNames = append(zoneNames, ".") + } + // Sort zones sort.Slice(zoneNames, func(i, j int) bool { return len(strings.Split(zoneNames[i], ".")) > len(strings.Split(zoneNames[j], ".")) @@ -456,7 +461,7 @@ func findMsgZone(ep *endpoint.Endpoint, m *dns.Msg, r *rfc2136Provider) { } } - log.Debugf("No available zone found for %s, set it to 'root'", ep.DNSName) + log.Warnf("No available zone found for %s, set it to 'root'", ep.DNSName) r.krb5Realm = dns.Fqdn(".") m.SetUpdate(dns.Fqdn(".")) } From 7fb529965ddef54bf5489b4bc7984d20409ba3a6 Mon Sep 17 00:00:00 2001 From: "s.kharlamov" Date: Tue, 17 Oct 2023 23:06:47 +0000 Subject: [PATCH 6/8] RFC2136: return string from findMsgZone --- provider/rfc2136/rfc2136.go | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/provider/rfc2136/rfc2136.go b/provider/rfc2136/rfc2136.go index d8881ff95..b800fb982 100644 --- a/provider/rfc2136/rfc2136.go +++ b/provider/rfc2136/rfc2136.go @@ -263,7 +263,9 @@ func (r rfc2136Provider) ApplyChanges(ctx context.Context, changes *plan.Changes continue } - findMsgZone(ep, m, &r) + zone := findMsgZone(ep, m, r) + r.krb5Realm = strings.ToUpper(zone) + m.SetUpdate(zone) r.AddRecord(m, ep) } @@ -290,7 +292,9 @@ func (r rfc2136Provider) ApplyChanges(ctx context.Context, changes *plan.Changes continue } - findMsgZone(ep, m, &r) + zone := findMsgZone(ep, m, r) + r.krb5Realm = strings.ToUpper(zone) + m.SetUpdate(zone) r.UpdateRecord(m, changes.UpdateOld[i], ep) } @@ -317,7 +321,9 @@ func (r rfc2136Provider) ApplyChanges(ctx context.Context, changes *plan.Changes continue } - findMsgZone(ep, m, &r) + zone := findMsgZone(ep, m, r) + r.krb5Realm = strings.ToUpper(zone) + m.SetUpdate(zone) r.RemoveRecord(m, ep) } @@ -451,17 +457,13 @@ func chunkBy(slice []*endpoint.Endpoint, chunkSize int) [][]*endpoint.Endpoint { return chunks } -func findMsgZone(ep *endpoint.Endpoint, m *dns.Msg, r *rfc2136Provider) { +func findMsgZone(ep *endpoint.Endpoint, m *dns.Msg, r rfc2136Provider) string { for _, zone := range r.zoneNames { if strings.HasSuffix(ep.DNSName, zone) { - r.krb5Realm = strings.ToUpper(dns.Fqdn(zone)) - m.SetUpdate(dns.Fqdn(zone)) - - return + return dns.Fqdn(zone) } } log.Warnf("No available zone found for %s, set it to 'root'", ep.DNSName) - r.krb5Realm = dns.Fqdn(".") - m.SetUpdate(dns.Fqdn(".")) + return dns.Fqdn(".") } From 411acc78950e8647fcb5a453549995f71a0775fd Mon Sep 17 00:00:00 2001 From: "s.kharlamov" Date: Wed, 18 Oct 2023 07:19:57 +0000 Subject: [PATCH 7/8] RFC:2136: Remove unused param --- provider/rfc2136/rfc2136.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/provider/rfc2136/rfc2136.go b/provider/rfc2136/rfc2136.go index b800fb982..b42ae6825 100644 --- a/provider/rfc2136/rfc2136.go +++ b/provider/rfc2136/rfc2136.go @@ -263,7 +263,7 @@ func (r rfc2136Provider) ApplyChanges(ctx context.Context, changes *plan.Changes continue } - zone := findMsgZone(ep, m, r) + zone := findMsgZone(ep, r.zoneNames) r.krb5Realm = strings.ToUpper(zone) m.SetUpdate(zone) @@ -292,7 +292,7 @@ func (r rfc2136Provider) ApplyChanges(ctx context.Context, changes *plan.Changes continue } - zone := findMsgZone(ep, m, r) + zone := findMsgZone(ep, r.zoneNames) r.krb5Realm = strings.ToUpper(zone) m.SetUpdate(zone) @@ -321,7 +321,7 @@ func (r rfc2136Provider) ApplyChanges(ctx context.Context, changes *plan.Changes continue } - zone := findMsgZone(ep, m, r) + zone := findMsgZone(ep, r.zoneNames) r.krb5Realm = strings.ToUpper(zone) m.SetUpdate(zone) @@ -457,8 +457,8 @@ func chunkBy(slice []*endpoint.Endpoint, chunkSize int) [][]*endpoint.Endpoint { return chunks } -func findMsgZone(ep *endpoint.Endpoint, m *dns.Msg, r rfc2136Provider) string { - for _, zone := range r.zoneNames { +func findMsgZone(ep *endpoint.Endpoint, zoneNames []string) string { + for _, zone := range zoneNames { if strings.HasSuffix(ep.DNSName, zone) { return dns.Fqdn(zone) } From 0ac4740162c64059a8557f5226b2609f43c20f99 Mon Sep 17 00:00:00 2001 From: "s.kharlamov" Date: Thu, 9 Nov 2023 17:40:54 +0000 Subject: [PATCH 8/8] RFC2136: Small fixes of logs --- provider/rfc2136/rfc2136.go | 4 ++-- provider/rfc2136/rfc2136_test.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/provider/rfc2136/rfc2136.go b/provider/rfc2136/rfc2136.go index b42ae6825..8353bc2d9 100644 --- a/provider/rfc2136/rfc2136.go +++ b/provider/rfc2136/rfc2136.go @@ -218,7 +218,7 @@ func (r rfc2136Provider) List() ([]dns.RR, error) { records := make([]dns.RR, 0) for _, zone := range r.zoneNames { - log.Debugf("Fetching records for '%s'", zone) + log.Debugf("Fetching records for '%q'", zone) m := new(dns.Msg) m.SetAxfr(dns.Fqdn(zone)) @@ -228,7 +228,7 @@ func (r rfc2136Provider) List() ([]dns.RR, error) { env, err := r.actions.IncomeTransfer(m, r.nameserver) if err != nil { - return nil, fmt.Errorf("failed to fetch records via AXFR: %v", err) + return nil, fmt.Errorf("failed to fetch records via AXFR: %w", err) } for e := range env { diff --git a/provider/rfc2136/rfc2136_test.go b/provider/rfc2136/rfc2136_test.go index a89c74887..52c5c10ad 100644 --- a/provider/rfc2136/rfc2136_test.go +++ b/provider/rfc2136/rfc2136_test.go @@ -95,7 +95,7 @@ func (r *rfc2136Stub) IncomeTransfer(m *dns.Msg, a string) (env chan *dns.Envelo } func createRfc2136StubProvider(stub *rfc2136Stub) (provider.Provider, error) { - return NewRfc2136Provider("", 0, []string{}, false, "key", "secret", "hmac-sha512", true, endpoint.DomainFilter{}, false, 300*time.Second, false, "", "", "", 50, stub) + return NewRfc2136Provider("", 0, nil, false, "key", "secret", "hmac-sha512", true, endpoint.DomainFilter{}, false, 300*time.Second, false, "", "", "", 50, stub) } func extractAuthoritySectionFromMessage(msg fmt.Stringer) []string {