Skip to content

Commit 33e2dca

Browse files
authored
Merge pull request #878 from Netrvin/patch4
fix: 阿里云ESA DNS不支持签发同时包含example.com和*.example.com的证书
2 parents feee19d + 817f725 commit 33e2dca

File tree

1 file changed

+20
-28
lines changed
  • pkg/core/ssl-applicator/acme-dns01/providers/aliyun-esa/internal

1 file changed

+20
-28
lines changed

pkg/core/ssl-applicator/acme-dns01/providers/aliyun-esa/internal/lego.go

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
128128
return fmt.Errorf("alicloud-esa: could not find site for zone %q: %w", siteName, err)
129129
}
130130

131-
if err := d.removeDNSRecord(siteId, dns01.UnFqdn(info.EffectiveFQDN)); err != nil {
131+
if err := d.removeDNSRecord(siteId, dns01.UnFqdn(info.EffectiveFQDN), info.Value); err != nil {
132132
return fmt.Errorf("alicloud-esa: %w", err)
133133
}
134134

@@ -185,7 +185,7 @@ func (d *DNSProvider) getSiteId(siteName string) (int64, error) {
185185
return 0, errors.New("site not found")
186186
}
187187

188-
func (d *DNSProvider) findDNSRecord(siteId int64, effectiveFQDN string) (*aliesa.ListRecordsResponseBodyRecords, error) {
188+
func (d *DNSProvider) findDNSRecord(siteId int64, effectiveFQDN string, value string) (*aliesa.ListRecordsResponseBodyRecords, error) {
189189
pageNumber := 1
190190
pageSize := 500
191191
for {
@@ -206,7 +206,7 @@ func (d *DNSProvider) findDNSRecord(siteId int64, effectiveFQDN string) (*aliesa
206206
break
207207
} else {
208208
for _, record := range response.Body.Records {
209-
if tea.StringValue(record.RecordName) == effectiveFQDN {
209+
if tea.StringValue(record.RecordName) == effectiveFQDN && tea.StringValue(record.Data.Value) == value {
210210
return record, nil
211211
}
212212
}
@@ -223,38 +223,30 @@ func (d *DNSProvider) findDNSRecord(siteId int64, effectiveFQDN string) (*aliesa
223223
}
224224

225225
func (d *DNSProvider) addOrUpdateDNSRecord(siteId int64, effectiveFQDN, value string) error {
226-
record, err := d.findDNSRecord(siteId, effectiveFQDN)
226+
record, err := d.findDNSRecord(siteId, effectiveFQDN, value)
227227
if err != nil {
228228
return err
229229
}
230230

231-
if record == nil {
232-
request := &aliesa.CreateRecordRequest{
233-
SiteId: tea.Int64(siteId),
234-
Type: tea.String("TXT"),
235-
RecordName: tea.String(effectiveFQDN),
236-
Data: &aliesa.CreateRecordRequestData{
237-
Value: tea.String(value),
238-
},
239-
Ttl: tea.Int32(d.config.TTL),
240-
}
241-
_, err := d.client.CreateRecord(request)
242-
return err
243-
} else {
244-
request := &aliesa.UpdateRecordRequest{
245-
RecordId: record.RecordId,
246-
Ttl: tea.Int32(d.config.TTL),
247-
Data: &aliesa.UpdateRecordRequestData{
248-
Value: tea.String(value),
249-
},
250-
}
251-
_, err := d.client.UpdateRecord(request)
252-
return err
231+
if record != nil {
232+
return nil
233+
}
234+
235+
request := &aliesa.CreateRecordRequest{
236+
SiteId: tea.Int64(siteId),
237+
Type: tea.String("TXT"),
238+
RecordName: tea.String(effectiveFQDN),
239+
Data: &aliesa.CreateRecordRequestData{
240+
Value: tea.String(value),
241+
},
242+
Ttl: tea.Int32(d.config.TTL),
253243
}
244+
_, err = d.client.CreateRecord(request)
245+
return err
254246
}
255247

256-
func (d *DNSProvider) removeDNSRecord(siteId int64, effectiveFQDN string) error {
257-
record, err := d.findDNSRecord(siteId, effectiveFQDN)
248+
func (d *DNSProvider) removeDNSRecord(siteId int64, effectiveFQDN, value string) error {
249+
record, err := d.findDNSRecord(siteId, effectiveFQDN, value)
258250
if err != nil {
259251
return err
260252
}

0 commit comments

Comments
 (0)