1
0
mirror of https://github.com/StackExchange/dnscontrol.git synced 2024-05-11 05:55:12 +00:00

CF: Add ability to manage UniversalSSL (#496)

* Added Cloudflare UniveralSSL control
* Added CF_UNIVERSALSSL_ON/OFF macros
* Updated docs
* Small docs update
* go generate
This commit is contained in:
Patrik Kernstock
2019-06-13 13:32:54 +02:00
committed by Tom Limoncelli
parent 8b86eec6bf
commit 539820f87a
5 changed files with 210 additions and 97 deletions

View File

@ -41,6 +41,7 @@ Record level metadata available:
Domain level metadata available:
* `cloudflare_proxy_default` ("on", "off", or "full")
* `cloudflare_universalssl` (unset to keep untouched; otherwise "on, or "off")
Provider level metadata available:
* `ip_conversions`
@ -76,6 +77,10 @@ var CF_PROXY_FULL = {'cloudflare_proxy': 'full'}; // Proxy+Railgun enabled.
var CF_PROXY_DEFAULT_OFF = {'cloudflare_proxy_default': 'off'};
// Proxy default on for entire domain:
var CF_PROXY_DEFAULT_ON = {'cloudflare_proxy_default': 'on'};
// UniversalSSL off for entire domain:
var CF_UNIVERSALSSL_OFF = { cloudflare_universalssl: 'off' };
// UniversalSSL on for entire domain:
var CF_UNIVERSALSSL_ON = { cloudflare_universalssl: 'on' };
{% endhighlight %}
The following example shows how to set meta variables with and without aliases:

View File

@ -605,6 +605,10 @@ var CF_PROXY_FULL = { cloudflare_proxy: 'full' }; // Proxy+Railgun enabled.
var CF_PROXY_DEFAULT_OFF = { cloudflare_proxy_default: 'off' };
// Proxy default on for entire domain:
var CF_PROXY_DEFAULT_ON = { cloudflare_proxy_default: 'on' };
// UniversalSSL off for entire domain:
var CF_UNIVERSALSSL_OFF = { cloudflare_universalssl: 'off' };
// UniversalSSL on for entire domain:
var CF_UNIVERSALSSL_ON = { cloudflare_universalssl: 'on' };
// CUSTOM, PROVIDER SPECIFIC RECORD TYPES

View File

@ -192,102 +192,103 @@ var _escData = map[string]*_escFile{
"/helpers.js": {
local: "pkg/js/helpers.js",
size: 21587,
size: 21786,
modtime: 0,
compressed: `
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
`,
},

View File

@ -103,9 +103,11 @@ func (c *CloudflareApi) GetDomainCorrections(dc *models.DomainConfig) ([]*models
if !ok {
return nil, errors.Errorf("%s not listed in zones for cloudflare account", dc.Name)
}
if err := c.preprocessConfig(dc); err != nil {
return nil, err
}
records, err := c.getRecordsForDomain(id, dc.Name)
if err != nil {
return nil, err
@ -118,6 +120,7 @@ func (c *CloudflareApi) GetDomainCorrections(dc *models.DomainConfig) ([]*models
records = append(records[:i], records[i+1:]...)
}
}
if c.manageRedirects {
prs, err := c.getPageRules(id, dc.Name)
if err != nil {
@ -125,6 +128,7 @@ func (c *CloudflareApi) GetDomainCorrections(dc *models.DomainConfig) ([]*models
}
records = append(records, prs...)
}
for _, rec := range dc.Records {
if rec.Type == "ALIAS" {
rec.Type = "CNAME"
@ -139,6 +143,7 @@ func (c *CloudflareApi) GetDomainCorrections(dc *models.DomainConfig) ([]*models
log.Fatalf("FATAL: dnsconfig contains label that matches ignored_labels: %#v is in %v)\n", rec.GetLabel(), c.ignoredLabels)
}
}
checkNSModifications(dc)
// Normalize
@ -189,6 +194,21 @@ func (c *CloudflareApi) GetDomainCorrections(dc *models.DomainConfig) ([]*models
})
}
}
// Add universalSSL change to corrections when needed
if changed, newState, err := c.checkUniversalSSL(dc, id); err == nil && changed {
var newStateString string
if newState {
newStateString = "enabled"
} else {
newStateString = "disabled"
}
corrections = append(corrections, &models.Correction{
Msg: fmt.Sprintf("Universal SSL will be %s for this domain.", newStateString),
F: func() error { return c.changeUniversalSSL(id, newState) },
})
}
return corrections, nil
}
@ -206,10 +226,34 @@ func checkNSModifications(dc *models.DomainConfig) {
dc.Records = newList
}
func (c *CloudflareApi) checkUniversalSSL(dc *models.DomainConfig, id string) (changed bool, newState bool, err error) {
expected_str := dc.Metadata[metaUniversalSSL]
if expected_str == "" {
return false, false, errors.Errorf("Metadata not set.")
}
if actual, err := c.getUniversalSSL(id); err == nil {
// convert str to bool
var expected bool
if expected_str == "off" {
expected = false
} else {
expected = true
}
// did something change?
if actual != expected {
return true, expected, nil
}
return false, expected, nil
}
return false, false, errors.Errorf("error receiving universal ssl state:")
}
const (
metaProxy = "cloudflare_proxy"
metaProxyDefault = metaProxy + "_default"
metaOriginalIP = "original_ip" // TODO(tlim): Unclear what this means.
metaOriginalIP = "original_ip" // TODO(tlim): Unclear what this means.
metaUniversalSSL = "cloudflare_universalssl"
metaIPConversions = "ip_conversions" // TODO(tlim): Rename to obscure_rules.
)
@ -235,23 +279,31 @@ func (c *CloudflareApi) preprocessConfig(dc *models.DomainConfig) error {
}
}
currentPrPrio := 1
// Check UniversalSSL setting
if u := dc.Metadata[metaUniversalSSL]; u != "" {
u = strings.ToLower(u)
if (u != "on" && u != "off") {
return errors.Errorf("Bad metadata value for %s: '%s'. Use on/off.", metaUniversalSSL, u)
}
}
// Normalize the proxy setting for each record.
// A and CNAMEs: Validate. If null, set to default.
// else: Make sure it wasn't set. Set to default.
// iterate backwards so first defined page rules have highest priority
currentPrPrio := 1
for i := len(dc.Records) - 1; i >= 0; i-- {
rec := dc.Records[i]
if rec.Metadata == nil {
rec.Metadata = map[string]string{}
}
if rec.TTL == 0 || rec.TTL == 300 {
if rec.TTL == 0 { // Please read: https://github.com/StackExchange/dnscontrol/issues/490
rec.TTL = 1
}
if rec.TTL != 1 && rec.TTL < 120 {
rec.TTL = 120
}
if rec.Type != "A" && rec.Type != "CNAME" && rec.Type != "AAAA" && rec.Type != "ALIAS" {
if rec.Metadata[metaProxy] != "" {
return errors.Errorf("cloudflare_proxy set on %v record: %#v cloudflare_proxy=%#v", rec.Type, rec.GetLabel(), rec.Metadata[metaProxy])
@ -269,6 +321,7 @@ func (c *CloudflareApi) preprocessConfig(dc *models.DomainConfig) error {
rec.Metadata[metaProxy] = val
}
}
// CF_REDIRECT record types. Encode target as $FROM,$TO,$PRIO,$CODE
if rec.Type == "CF_REDIRECT" || rec.Type == "CF_TEMP_REDIRECT" {
if !c.manageRedirects {

View File

@ -286,6 +286,56 @@ func (c *CloudflareApi) modifyRecord(domainID, recID string, proxied bool, rec *
return err
}
// change universal ssl state
func (c *CloudflareApi) changeUniversalSSL(domainID string, state bool) error {
type setUniversalSSL struct {
Enabled bool `json:"enabled"`
}
us := &setUniversalSSL{
Enabled: state,
}
// create json
buf := &bytes.Buffer{}
encoder := json.NewEncoder(buf)
if err := encoder.Encode(us); err != nil {
return err
}
// send request.
endpoint := fmt.Sprintf(zonesURL+"%s/ssl/universal/settings", domainID)
req, err := http.NewRequest("PATCH", endpoint, buf)
if err != nil {
return err
}
c.setHeaders(req)
_, err = handleActionResponse(http.DefaultClient.Do(req))
return err
}
// change universal ssl state
func (c *CloudflareApi) getUniversalSSL(domainID string) (bool, error) {
type universalSSLResponse struct {
Success bool `json:"success"`
Errors []interface{} `json:"errors"`
Messages []interface{} `json:"messages"`
Result struct {
Enabled bool `json:"enabled"`
} `json:"result"`
}
// send request.
endpoint := fmt.Sprintf(zonesURL+"%s/ssl/universal/settings", domainID)
var result universalSSLResponse
err := c.get(endpoint, &result)
if err != nil {
return true, err
}
return result.Result.Enabled, err
}
// common error handling for all action responses
func handleActionResponse(resp *http.Response, err error) (id string, e error) {
if err != nil {