@@ -128,7 +128,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
128
128
return fmt .Errorf ("alicloud-esa: could not find site for zone %q: %w" , siteName , err )
129
129
}
130
130
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 {
132
132
return fmt .Errorf ("alicloud-esa: %w" , err )
133
133
}
134
134
@@ -185,7 +185,7 @@ func (d *DNSProvider) getSiteId(siteName string) (int64, error) {
185
185
return 0 , errors .New ("site not found" )
186
186
}
187
187
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 ) {
189
189
pageNumber := 1
190
190
pageSize := 500
191
191
for {
@@ -206,7 +206,7 @@ func (d *DNSProvider) findDNSRecord(siteId int64, effectiveFQDN string) (*aliesa
206
206
break
207
207
} else {
208
208
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 {
210
210
return record , nil
211
211
}
212
212
}
@@ -223,38 +223,30 @@ func (d *DNSProvider) findDNSRecord(siteId int64, effectiveFQDN string) (*aliesa
223
223
}
224
224
225
225
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 )
227
227
if err != nil {
228
228
return err
229
229
}
230
230
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 ),
253
243
}
244
+ _ , err = d .client .CreateRecord (request )
245
+ return err
254
246
}
255
247
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 )
258
250
if err != nil {
259
251
return err
260
252
}
0 commit comments