diff --git a/internal/pkg/core/applicant/acme-dns-01/lego-providers/baiducloud/internal/lego.go b/internal/pkg/core/applicant/acme-dns-01/lego-providers/baiducloud/internal/lego.go index 558ad5eb..721326a7 100644 --- a/internal/pkg/core/applicant/acme-dns-01/lego-providers/baiducloud/internal/lego.go +++ b/internal/pkg/core/applicant/acme-dns-01/lego-providers/baiducloud/internal/lego.go @@ -87,17 +87,17 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) { func (d *DNSProvider) Present(domain, token, keyAuth string) error { info := dns01.GetChallengeInfo(domain, keyAuth) - zoneName, err := dns01.FindZoneByFqdn(info.EffectiveFQDN) + authZone, err := dns01.FindZoneByFqdn(info.EffectiveFQDN) if err != nil { return fmt.Errorf("baiducloud: %w", err) } - subDomain, err := dns01.ExtractSubDomain(info.EffectiveFQDN, zoneName) + subDomain, err := dns01.ExtractSubDomain(info.EffectiveFQDN, authZone) if err != nil { return fmt.Errorf("baiducloud: %w", err) } - if err := d.addOrUpdateDNSRecord(domain, subDomain, info.Value); err != nil { + if err := d.addOrUpdateDNSRecord(dns01.UnFqdn(authZone), subDomain, info.Value); err != nil { return fmt.Errorf("baiducloud: %w", err) } @@ -105,10 +105,19 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error { } func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error { - fqdn, value := dns01.GetRecord(domain, keyAuth) - subDomain := dns01.UnFqdn(fqdn) + info := dns01.GetChallengeInfo(domain, keyAuth) - if err := d.removeDNSRecord(domain, subDomain, value); err != nil { + authZone, err := dns01.FindZoneByFqdn(info.EffectiveFQDN) + if err != nil { + return fmt.Errorf("baiducloud: %w", err) + } + + subDomain, err := dns01.ExtractSubDomain(info.EffectiveFQDN, authZone) + if err != nil { + return fmt.Errorf("baiducloud: %w", err) + } + + if err := d.removeDNSRecord(dns01.UnFqdn(authZone), subDomain); err != nil { return fmt.Errorf("baiducloud: %w", err) } @@ -119,16 +128,16 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) { return d.config.PropagationTimeout, d.config.PollingInterval } -func (d *DNSProvider) getDNSRecord(domain, subDomain string) (*bceDns.Record, error) { +func (d *DNSProvider) getDNSRecord(zoneName, subDomain string) (*bceDns.Record, error) { pageMarker := "" pageSize := 1000 for { request := &bceDns.ListRecordRequest{} - request.Rr = domain + request.Rr = zoneName request.Marker = pageMarker request.MaxKeys = pageSize - response, err := d.client.ListRecord(domain, request) + response, err := d.client.ListRecord(zoneName, request) if err != nil { return nil, err } @@ -149,8 +158,8 @@ func (d *DNSProvider) getDNSRecord(domain, subDomain string) (*bceDns.Record, er return nil, nil } -func (d *DNSProvider) addOrUpdateDNSRecord(domain, subDomain, value string) error { - record, err := d.getDNSRecord(domain, subDomain) +func (d *DNSProvider) addOrUpdateDNSRecord(zoneName, subDomain, value string) error { + record, err := d.getDNSRecord(zoneName, subDomain) if err != nil { return err } @@ -162,7 +171,7 @@ func (d *DNSProvider) addOrUpdateDNSRecord(domain, subDomain, value string) erro Value: value, Ttl: &d.config.TTL, } - err := d.client.CreateRecord(domain, request, d.generateClientToken()) + err := d.client.CreateRecord(zoneName, request, d.generateClientToken()) return err } else { request := &bceDns.UpdateRecordRequest{ @@ -171,13 +180,13 @@ func (d *DNSProvider) addOrUpdateDNSRecord(domain, subDomain, value string) erro Value: value, Ttl: &d.config.TTL, } - err := d.client.UpdateRecord(domain, record.Id, request, d.generateClientToken()) + err := d.client.UpdateRecord(zoneName, record.Id, request, d.generateClientToken()) return err } } -func (d *DNSProvider) removeDNSRecord(domain, subDomain, value string) error { - record, err := d.getDNSRecord(domain, subDomain) +func (d *DNSProvider) removeDNSRecord(zoneName, subDomain string) error { + record, err := d.getDNSRecord(zoneName, subDomain) if err != nil { return err } @@ -185,7 +194,7 @@ func (d *DNSProvider) removeDNSRecord(domain, subDomain, value string) error { if record == nil { return nil } else { - err = d.client.DeleteRecord(domain, record.Id, d.generateClientToken()) + err = d.client.DeleteRecord(zoneName, record.Id, d.generateClientToken()) return err } } diff --git a/internal/pkg/core/applicant/acme-dns-01/lego-providers/gname/internal/lego.go b/internal/pkg/core/applicant/acme-dns-01/lego-providers/gname/internal/lego.go index 94a8c35d..17e9162f 100644 --- a/internal/pkg/core/applicant/acme-dns-01/lego-providers/gname/internal/lego.go +++ b/internal/pkg/core/applicant/acme-dns-01/lego-providers/gname/internal/lego.go @@ -80,17 +80,17 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) { func (d *DNSProvider) Present(domain, token, keyAuth string) error { info := dns01.GetChallengeInfo(domain, keyAuth) - zoneName, err := dns01.FindZoneByFqdn(info.EffectiveFQDN) + authZone, err := dns01.FindZoneByFqdn(info.EffectiveFQDN) if err != nil { return fmt.Errorf("gname: %w", err) } - subDomain, err := dns01.ExtractSubDomain(info.EffectiveFQDN, zoneName) + subDomain, err := dns01.ExtractSubDomain(info.EffectiveFQDN, authZone) if err != nil { return fmt.Errorf("gname: %w", err) } - if err := d.addOrUpdateDNSRecord(domain, subDomain, info.Value); err != nil { + if err := d.addOrUpdateDNSRecord(dns01.UnFqdn(authZone), subDomain, info.Value); err != nil { return fmt.Errorf("gname: %w", err) } @@ -98,10 +98,19 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error { } func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error { - fqdn, value := dns01.GetRecord(domain, keyAuth) - subDomain := dns01.UnFqdn(fqdn) + info := dns01.GetChallengeInfo(domain, keyAuth) - if err := d.removeDNSRecord(domain, subDomain, value); err != nil { + authZone, err := dns01.FindZoneByFqdn(info.EffectiveFQDN) + if err != nil { + return fmt.Errorf("gname: %w", err) + } + + subDomain, err := dns01.ExtractSubDomain(info.EffectiveFQDN, authZone) + if err != nil { + return fmt.Errorf("gname: %w", err) + } + + if err := d.removeDNSRecord(dns01.UnFqdn(authZone), subDomain); err != nil { return fmt.Errorf("gname: %w", err) } @@ -112,12 +121,12 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) { return d.config.PropagationTimeout, d.config.PollingInterval } -func (d *DNSProvider) getDNSRecord(domain, subDomain string) (*gnamesdk.ResolutionRecord, error) { +func (d *DNSProvider) getDNSRecord(zoneName, subDomain string) (*gnamesdk.ResolutionRecord, error) { page := 1 pageSize := 20 for { request := &gnamesdk.ListDomainResolutionRequest{} - request.ZoneName = domain + request.ZoneName = zoneName request.Page = &page request.PageSize = &pageSize @@ -145,15 +154,15 @@ func (d *DNSProvider) getDNSRecord(domain, subDomain string) (*gnamesdk.Resoluti return nil, nil } -func (d *DNSProvider) addOrUpdateDNSRecord(domain, subDomain, value string) error { - record, err := d.getDNSRecord(domain, subDomain) +func (d *DNSProvider) addOrUpdateDNSRecord(zoneName, subDomain, value string) error { + record, err := d.getDNSRecord(zoneName, subDomain) if err != nil { return err } if record == nil { request := &gnamesdk.AddDomainResolutionRequest{ - ZoneName: domain, + ZoneName: zoneName, RecordType: "TXT", RecordName: subDomain, RecordValue: value, @@ -164,7 +173,7 @@ func (d *DNSProvider) addOrUpdateDNSRecord(domain, subDomain, value string) erro } else { request := &gnamesdk.ModifyDomainResolutionRequest{ ID: record.ID, - ZoneName: domain, + ZoneName: zoneName, RecordType: "TXT", RecordName: subDomain, RecordValue: value, @@ -175,8 +184,8 @@ func (d *DNSProvider) addOrUpdateDNSRecord(domain, subDomain, value string) erro } } -func (d *DNSProvider) removeDNSRecord(domain, subDomain, value string) error { - record, err := d.getDNSRecord(domain, subDomain) +func (d *DNSProvider) removeDNSRecord(zoneName, subDomain string) error { + record, err := d.getDNSRecord(zoneName, subDomain) if err != nil { return err } @@ -186,7 +195,7 @@ func (d *DNSProvider) removeDNSRecord(domain, subDomain, value string) error { } request := &gnamesdk.DeleteDomainResolutionRequest{ - ZoneName: domain, + ZoneName: zoneName, RecordID: record.ID, } _, err = d.client.DeleteDomainResolution(request) diff --git a/internal/pkg/core/applicant/acme-dns-01/lego-providers/jdcloud/internal/lego.go b/internal/pkg/core/applicant/acme-dns-01/lego-providers/jdcloud/internal/lego.go index a85fa79c..d5103023 100644 --- a/internal/pkg/core/applicant/acme-dns-01/lego-providers/jdcloud/internal/lego.go +++ b/internal/pkg/core/applicant/acme-dns-01/lego-providers/jdcloud/internal/lego.go @@ -88,17 +88,17 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) { func (d *DNSProvider) Present(domain, token, keyAuth string) error { info := dns01.GetChallengeInfo(domain, keyAuth) - zoneName, err := dns01.FindZoneByFqdn(info.EffectiveFQDN) + authZone, err := dns01.FindZoneByFqdn(info.EffectiveFQDN) if err != nil { return fmt.Errorf("jdcloud: %w", err) } - subDomain, err := dns01.ExtractSubDomain(info.EffectiveFQDN, zoneName) + subDomain, err := dns01.ExtractSubDomain(info.EffectiveFQDN, authZone) if err != nil { return fmt.Errorf("jdcloud: %w", err) } - if err := d.addOrUpdateDNSRecord(domain, subDomain, info.Value); err != nil { + if err := d.addOrUpdateDNSRecord(dns01.UnFqdn(authZone), subDomain, info.Value); err != nil { return fmt.Errorf("jdcloud: %w", err) } @@ -106,10 +106,19 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error { } func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error { - fqdn, value := dns01.GetRecord(domain, keyAuth) - subDomain := dns01.UnFqdn(fqdn) + info := dns01.GetChallengeInfo(domain, keyAuth) - if err := d.removeDNSRecord(domain, subDomain, value); err != nil { + authZone, err := dns01.FindZoneByFqdn(info.EffectiveFQDN) + if err != nil { + return fmt.Errorf("jdcloud: %w", err) + } + + subDomain, err := dns01.ExtractSubDomain(info.EffectiveFQDN, authZone) + if err != nil { + return fmt.Errorf("jdcloud: %w", err) + } + + if err := d.removeDNSRecord(dns01.UnFqdn(authZone), subDomain); err != nil { return fmt.Errorf("jdcloud: %w", err) } @@ -151,8 +160,8 @@ func (d *DNSProvider) getDNSZone(domain string) (*jdDnsModel.DomainInfo, error) return nil, fmt.Errorf("jdcloud: zone %s not found", domain) } -func (d *DNSProvider) getDNSZoneAndRecord(domain, subDomain string) (*jdDnsModel.DomainInfo, *jdDnsModel.RRInfo, error) { - zone, err := d.getDNSZone(domain) +func (d *DNSProvider) getDNSZoneAndRecord(zoneName, subDomain string) (*jdDnsModel.DomainInfo, *jdDnsModel.RRInfo, error) { + zone, err := d.getDNSZone(zoneName) if err != nil { return nil, nil, err } @@ -186,8 +195,8 @@ func (d *DNSProvider) getDNSZoneAndRecord(domain, subDomain string) (*jdDnsModel return nil, nil, nil } -func (d *DNSProvider) addOrUpdateDNSRecord(domain, subDomain, value string) error { - zone, record, err := d.getDNSZoneAndRecord(domain, subDomain) +func (d *DNSProvider) addOrUpdateDNSRecord(zoneName, subDomain, value string) error { + zone, record, err := d.getDNSZoneAndRecord(zoneName, subDomain) if err != nil { return err } @@ -213,8 +222,8 @@ func (d *DNSProvider) addOrUpdateDNSRecord(domain, subDomain, value string) erro } } -func (d *DNSProvider) removeDNSRecord(domain, subDomain, value string) error { - zone, record, err := d.getDNSZoneAndRecord(domain, subDomain) +func (d *DNSProvider) removeDNSRecord(zoneName, subDomain string) error { + zone, record, err := d.getDNSZoneAndRecord(zoneName, subDomain) if err != nil { return err }