From 4d98c27137e8ad51ffdfc2f4e640289bc611a902 Mon Sep 17 00:00:00 2001 From: Mmx233 Date: Sat, 14 Jan 2023 20:34:19 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E5=85=BC=E5=AE=B9=E6=96=B0=E7=89=88?= =?UTF-8?q?=20cloudflare=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dns/cloudflare/cloudflare.go | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/dns/cloudflare/cloudflare.go b/dns/cloudflare/cloudflare.go index 7f1be68..f6fe0db 100644 --- a/dns/cloudflare/cloudflare.go +++ b/dns/cloudflare/cloudflare.go @@ -9,10 +9,11 @@ import ( ) type DnsProvider struct { - Api *cloudflare.API `mapstructure:"-"` - TTL int `mapstructure:"-"` - Zone string `mapstructure:"zone"` - Token string `mapstructure:"token"` + Api *cloudflare.API `mapstructure:"-"` + TTL int `mapstructure:"-"` + Zone string `mapstructure:"zone"` + ZoneResource *cloudflare.ResourceContainer `mapstructure:"-"` + Token string `mapstructure:"token"` } func New(ttl int, conf map[string]interface{}, Http *http.Client) (*DnsProvider, error) { @@ -26,7 +27,10 @@ func New(ttl int, conf map[string]interface{}, Http *http.Client) (*DnsProvider, if p.Zone == "" { return nil, errors.New("cloudflare zone 不能为空") - } else if p.Token == "" { + } + p.ZoneResource = cloudflare.ZoneIdentifier(p.Zone) + + if p.Token == "" { return nil, errors.New("cloudflare token 不能为空") } @@ -35,7 +39,7 @@ func New(ttl int, conf map[string]interface{}, Http *http.Client) (*DnsProvider, } func (a DnsProvider) SetDomainRecord(domain, ip string) error { - records, e := a.Api.DNSRecords(context.Background(), a.Zone, cloudflare.DNSRecord{ + records, _, e := a.Api.ListDNSRecords(context.Background(), a.ZoneResource, cloudflare.ListDNSRecordsParams{ Type: "A", Name: domain, }) @@ -44,7 +48,7 @@ func (a DnsProvider) SetDomainRecord(domain, ip string) error { } if len(records) == 0 { - _, e = a.Api.CreateDNSRecord(context.Background(), a.Zone, cloudflare.DNSRecord{ + _, e = a.Api.CreateDNSRecord(context.Background(), a.ZoneResource, cloudflare.CreateDNSRecordParams{ Type: "A", Name: domain, Content: ip, @@ -53,11 +57,12 @@ func (a DnsProvider) SetDomainRecord(domain, ip string) error { return e } else { record := records[0] - if record.Content == ip { return nil } - record.Content = ip - return a.Api.UpdateDNSRecord(context.Background(), a.Zone, record.ID, record) + return a.Api.UpdateDNSRecord(context.Background(), a.ZoneResource, cloudflare.UpdateDNSRecordParams{ + ID: record.ID, + Content: ip, + }) } }