From d08a8f6c4e86bd615d0148b01a026c3aa3b3d32d Mon Sep 17 00:00:00 2001 From: Brian Hartvigsen Date: Sun, 3 Oct 2021 14:40:50 -0600 Subject: [PATCH] CLOUDFLARE: Stop requiring accountname (#1280) There is no API call I've found that requires it, only the accountID. Also, we now set the cfClient.AccountID similar to b55278140f63e0f95a3418bcd61b810c731ae08f (h/t @fdcastel) and no longer store duplicate information in the cfClient and api objects. Co-authored-by: Tom Limoncelli --- docs/_providers/cloudflare.md | 1 - providers/cloudflare/cloudflareProvider.go | 22 +++++++--------------- providers/cloudflare/rest.go | 2 +- 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/docs/_providers/cloudflare.md b/docs/_providers/cloudflare.md index 4c5322bdf..e5a35e9ab 100644 --- a/docs/_providers/cloudflare.md +++ b/docs/_providers/cloudflare.md @@ -43,7 +43,6 @@ If your Cloudflare account has access to multiple Cloudflare accounts, you can s "cloudflare": { "apitoken": "...", "accountid": "your-cloudflare-account-id", - "accountname": "your-cloudflare-account-name" } } {% endhighlight %} diff --git a/providers/cloudflare/cloudflareProvider.go b/providers/cloudflare/cloudflareProvider.go index d5388c792..3964d3661 100644 --- a/providers/cloudflare/cloudflareProvider.go +++ b/providers/cloudflare/cloudflareProvider.go @@ -25,7 +25,6 @@ Info required in `creds.json`: - apikey - apiuser - accountid (optional) - - accountname (optional) Record level metadata available: - cloudflare_proxy ("on", "off", or "full") @@ -63,11 +62,6 @@ func init() { // cloudflareProvider is the handle for API calls. type cloudflareProvider struct { - APIKey string `json:"apikey"` - APIToken string `json:"apitoken"` - APIUser string `json:"apiuser"` - AccountID string `json:"accountid"` - AccountName string `json:"accountname"` domainIndex map[string]string nameservers map[string][]string ipConversions []transform.IPConversion @@ -450,20 +444,19 @@ func (c *cloudflareProvider) preprocessConfig(dc *models.DomainConfig) error { func newCloudflare(m map[string]string, metadata json.RawMessage) (providers.DNSServiceProvider, error) { api := &cloudflareProvider{} - api.APIUser, api.APIKey, api.APIToken = m["apiuser"], m["apikey"], m["apitoken"] // check api keys from creds json file - if api.APIToken == "" && (api.APIKey == "" || api.APIUser == "") { + if m["apitoken"] == "" && (m["apikey"] == "" || m["apiuser"] == "") { return nil, fmt.Errorf("if cloudflare apitoken is not set, apikey and apiuser must be provided") } - if api.APIToken != "" && (api.APIKey != "" || api.APIUser != "") { + if m["apitoken"] != "" && (m["apikey"] != "" || m["apiuser"] != "") { return nil, fmt.Errorf("if cloudflare apitoken is set, apikey and apiuser should not be provided") } var err error - if api.APIToken != "" { - api.cfClient, err = cloudflare.NewWithAPIToken(api.APIToken) + if m["apitoken"] != "" { + api.cfClient, err = cloudflare.NewWithAPIToken(m["apitoken"]) } else { - api.cfClient, err = cloudflare.New(api.APIKey, api.APIUser) + api.cfClient, err = cloudflare.New(m["apikey"], m["apiuser"]) } if err != nil { @@ -471,9 +464,8 @@ func newCloudflare(m map[string]string, metadata json.RawMessage) (providers.DNS } // Check account data if set - api.AccountID, api.AccountName = m["accountid"], m["accountname"] - if (api.AccountID != "" && api.AccountName == "") || (api.AccountID == "" && api.AccountName != "") { - return nil, fmt.Errorf("either both cloudflare accountid and accountname must be provided or neither") + if m["accountid"] != "" { + api.cfClient.AccountID = m["accountid"] } if len(metadata) > 0 { diff --git a/providers/cloudflare/rest.go b/providers/cloudflare/rest.go index 84f4b5910..95f0b9a60 100644 --- a/providers/cloudflare/rest.go +++ b/providers/cloudflare/rest.go @@ -56,7 +56,7 @@ func (c *cloudflareProvider) deleteRec(rec cloudflare.DNSRecord, domainID string } func (c *cloudflareProvider) createZone(domainName string) (string, error) { - zone, err := c.cfClient.CreateZone(context.Background(), domainName, false, cloudflare.Account{Name: c.AccountName, ID: c.AccountID}, "full") + zone, err := c.cfClient.CreateZone(context.Background(), domainName, false, cloudflare.Account{ID: c.cfClient.AccountID}, "full") return zone.ID, err }