From 128fdbfffa45be40fbcd30c3274833dfc3ebbff5 Mon Sep 17 00:00:00 2001 From: 131 <11222509+Netrvin@users.noreply.github.com> Date: Thu, 17 Jul 2025 21:48:21 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20=E9=98=BF=E9=87=8C=E4=BA=91ESA?= =?UTF-8?q?=E6=B5=B7=E5=A4=96=E5=8C=BA=E8=AF=81=E4=B9=A6=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/core/ssl-deployer/providers/aliyun-esa/aliyun_esa.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkg/core/ssl-deployer/providers/aliyun-esa/aliyun_esa.go b/pkg/core/ssl-deployer/providers/aliyun-esa/aliyun_esa.go index bcaae6ca1..48e55881a 100644 --- a/pkg/core/ssl-deployer/providers/aliyun-esa/aliyun_esa.go +++ b/pkg/core/ssl-deployer/providers/aliyun-esa/aliyun_esa.go @@ -100,10 +100,17 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke SiteId: tea.Int64(d.config.SiteId), Type: tea.String("cas"), CasId: tea.Int64(certId), + Region: tea.String(d.config.Region), } setCertificateResp, err := d.sdkClient.SetCertificate(setCertificateReq) d.logger.Debug("sdk request 'esa.SetCertificate'", slog.Any("request", setCertificateReq), slog.Any("response", setCertificateResp)) if err != nil { + var sdkError *tea.SDKError + if errors.As(err, &sdkError) { + if *sdkError.Code == "Certificate.Duplicated" { + return &core.SSLDeployResult{}, nil + } + } return nil, fmt.Errorf("failed to execute sdk request 'esa.SetCertificate': %w", err) } 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 2/3] =?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 } From eee58168491ad75478b7eafe1ab3c0f535bfe553 Mon Sep 17 00:00:00 2001 From: 131 <11222509+Netrvin@users.noreply.github.com> Date: Fri, 18 Jul 2025 19:15:39 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=E9=98=BF=E9=87=8C=E4=BA=91ESA?= =?UTF-8?q?=E6=B5=B7=E5=A4=96=E5=8C=BA=E8=AF=81=E4=B9=A6=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/core/ssl-deployer/providers/aliyun-esa/aliyun_esa.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/core/ssl-deployer/providers/aliyun-esa/aliyun_esa.go b/pkg/core/ssl-deployer/providers/aliyun-esa/aliyun_esa.go index 48e55881a..f2afa2228 100644 --- a/pkg/core/ssl-deployer/providers/aliyun-esa/aliyun_esa.go +++ b/pkg/core/ssl-deployer/providers/aliyun-esa/aliyun_esa.go @@ -107,7 +107,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke if err != nil { var sdkError *tea.SDKError if errors.As(err, &sdkError) { - if *sdkError.Code == "Certificate.Duplicated" { + if tea.StringValue(sdkError.Code) == "Certificate.Duplicated" { return &core.SSLDeployResult{}, nil } }