From 817f725cf2109a1aa28bae74469f7003d477f938 Mon Sep 17 00:00:00 2001 From: 131 <11222509+Netrvin@users.noreply.github.com> Date: Thu, 17 Jul 2025 22:07:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=98=BF=E9=87=8C=E4=BA=91ESA=20DNS?= =?UTF-8?q?=E4=B8=8D=E6=94=AF=E6=8C=81=E7=AD=BE=E5=8F=91=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E5=8C=85=E5=90=ABexample.com=E5=92=8C*.example.com=E7=9A=84?= =?UTF-8?q?=E8=AF=81=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../providers/aliyun-esa/internal/lego.go | 48 ++++++++----------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/aliyun-esa/internal/lego.go b/pkg/core/ssl-applicator/acme-dns01/providers/aliyun-esa/internal/lego.go index 43c488f52..378e0968b 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/aliyun-esa/internal/lego.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/aliyun-esa/internal/lego.go @@ -128,7 +128,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error { return fmt.Errorf("alicloud-esa: could not find site for zone %q: %w", siteName, err) } - if err := d.removeDNSRecord(siteId, dns01.UnFqdn(info.EffectiveFQDN)); err != nil { + if err := d.removeDNSRecord(siteId, dns01.UnFqdn(info.EffectiveFQDN), info.Value); err != nil { return fmt.Errorf("alicloud-esa: %w", err) } @@ -185,7 +185,7 @@ func (d *DNSProvider) getSiteId(siteName string) (int64, error) { return 0, errors.New("site not found") } -func (d *DNSProvider) findDNSRecord(siteId int64, effectiveFQDN string) (*aliesa.ListRecordsResponseBodyRecords, error) { +func (d *DNSProvider) findDNSRecord(siteId int64, effectiveFQDN string, value string) (*aliesa.ListRecordsResponseBodyRecords, error) { pageNumber := 1 pageSize := 500 for { @@ -206,7 +206,7 @@ func (d *DNSProvider) findDNSRecord(siteId int64, effectiveFQDN string) (*aliesa break } else { for _, record := range response.Body.Records { - if tea.StringValue(record.RecordName) == effectiveFQDN { + if tea.StringValue(record.RecordName) == effectiveFQDN && tea.StringValue(record.Data.Value) == value { return record, nil } } @@ -223,38 +223,30 @@ func (d *DNSProvider) findDNSRecord(siteId int64, effectiveFQDN string) (*aliesa } func (d *DNSProvider) addOrUpdateDNSRecord(siteId int64, effectiveFQDN, value string) error { - record, err := d.findDNSRecord(siteId, effectiveFQDN) + record, err := d.findDNSRecord(siteId, effectiveFQDN, value) if err != nil { return err } - if record == nil { - request := &aliesa.CreateRecordRequest{ - SiteId: tea.Int64(siteId), - Type: tea.String("TXT"), - RecordName: tea.String(effectiveFQDN), - Data: &aliesa.CreateRecordRequestData{ - Value: tea.String(value), - }, - Ttl: tea.Int32(d.config.TTL), - } - _, err := d.client.CreateRecord(request) - return err - } else { - request := &aliesa.UpdateRecordRequest{ - RecordId: record.RecordId, - Ttl: tea.Int32(d.config.TTL), - Data: &aliesa.UpdateRecordRequestData{ - Value: tea.String(value), - }, - } - _, err := d.client.UpdateRecord(request) - return err + if record != nil { + return nil } + + request := &aliesa.CreateRecordRequest{ + SiteId: tea.Int64(siteId), + Type: tea.String("TXT"), + RecordName: tea.String(effectiveFQDN), + Data: &aliesa.CreateRecordRequestData{ + Value: tea.String(value), + }, + Ttl: tea.Int32(d.config.TTL), + } + _, err = d.client.CreateRecord(request) + return err } -func (d *DNSProvider) removeDNSRecord(siteId int64, effectiveFQDN string) error { - record, err := d.findDNSRecord(siteId, effectiveFQDN) +func (d *DNSProvider) removeDNSRecord(siteId int64, effectiveFQDN, value string) error { + record, err := d.findDNSRecord(siteId, effectiveFQDN, value) if err != nil { return err }