@@ -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
225225func (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