diff options
| author | Francis Lavoie <lavofr@gmail.com> | 2022-04-22 18:09:11 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-22 16:09:11 -0600 | 
| commit | 77a77c0219d389717ba3b8f8e28bad3462fab655 (patch) | |
| tree | 75f13fbe5bf044962396449989a02d3451b4b1c3 /modules/caddytls | |
| parent | db62942d634a22cee5e598a3062bc1405895a0c2 (diff) | |
caddytls: Add `propagation_delay`, support `propagation_timeout -1` (#4723)
Diffstat (limited to 'modules/caddytls')
| -rw-r--r-- | modules/caddytls/acmeissuer.go | 38 | ||||
| -rw-r--r-- | modules/caddytls/automation.go | 8 | 
2 files changed, 40 insertions, 6 deletions
diff --git a/modules/caddytls/acmeissuer.go b/modules/caddytls/acmeissuer.go index fd60cc8..09b31bf 100644 --- a/modules/caddytls/acmeissuer.go +++ b/modules/caddytls/acmeissuer.go @@ -142,6 +142,7 @@ func (iss *ACMEIssuer) Provision(ctx caddy.Context) error {  			iss.Challenges.DNS.solver = &certmagic.DNS01Solver{  				DNSProvider:        val.(certmagic.ACMEDNSProvider),  				TTL:                time.Duration(iss.Challenges.DNS.TTL), +				PropagationDelay:   time.Duration(iss.Challenges.DNS.PropagationDelay),  				PropagationTimeout: time.Duration(iss.Challenges.DNS.PropagationTimeout),  				Resolvers:          iss.Challenges.DNS.Resolvers,  				OverrideDomain:     iss.Challenges.DNS.OverrideDomain, @@ -262,10 +263,13 @@ func (iss *ACMEIssuer) GetACMEIssuer() *ACMEIssuer { return iss }  //         eab <key_id> <mac_key>  //         trusted_roots <pem_files...>  //         dns <provider_name> [<options>] +//         propagation_delay <duration> +//         propagation_timeout <duration>  //         resolvers <dns_servers...> +//         dns_challenge_override_domain <domain>  //         preferred_chains [smallest] { -//           root_common_name <common_names...> -//           any_common_name  <common_names...> +//             root_common_name <common_names...> +//             any_common_name  <common_names...>  //         }  //     }  // @@ -389,14 +393,38 @@ func (iss *ACMEIssuer) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {  					return err  				}  				iss.Challenges.DNS.ProviderRaw = caddyconfig.JSONModuleObject(unm, "name", provName, nil) + +			case "propagation_delay": +				if !d.NextArg() { +					return d.ArgErr() +				} +				delayStr := d.Val() +				delay, err := caddy.ParseDuration(delayStr) +				if err != nil { +					return d.Errf("invalid propagation_delay duration %s: %v", delayStr, err) +				} +				if iss.Challenges == nil { +					iss.Challenges = new(ChallengesConfig) +				} +				if iss.Challenges.DNS == nil { +					iss.Challenges.DNS = new(DNSChallengeConfig) +				} +				iss.Challenges.DNS.PropagationDelay = caddy.Duration(delay) +  			case "propagation_timeout":  				if !d.NextArg() {  					return d.ArgErr()  				}  				timeoutStr := d.Val() -				timeout, err := caddy.ParseDuration(timeoutStr) -				if err != nil { -					return d.Errf("invalid propagation_timeout duration %s: %v", timeoutStr, err) +				var timeout time.Duration +				if timeoutStr == "-1" { +					timeout = time.Duration(-1) +				} else { +					var err error +					timeout, err = caddy.ParseDuration(timeoutStr) +					if err != nil { +						return d.Errf("invalid propagation_timeout duration %s: %v", timeoutStr, err) +					}  				}  				if iss.Challenges == nil {  					iss.Challenges = new(ChallengesConfig) diff --git a/modules/caddytls/automation.go b/modules/caddytls/automation.go index 26884bc..197c409 100644 --- a/modules/caddytls/automation.go +++ b/modules/caddytls/automation.go @@ -363,7 +363,13 @@ type DNSChallengeConfig struct {  	// The TTL of the TXT record used for the DNS challenge.  	TTL caddy.Duration `json:"ttl,omitempty"` -	// How long to wait for DNS record to propagate. +	// How long to wait before starting propagation checks. +	// Default: 0 (no wait). +	PropagationDelay caddy.Duration `json:"propagation_delay,omitempty"` + +	// Maximum time to wait for temporary DNS record to appear. +	// Set to -1 to disable propagation checks. +	// Default: 2 minutes.  	PropagationTimeout caddy.Duration `json:"propagation_timeout,omitempty"`  	// Custom DNS resolvers to prefer over system/built-in defaults.  | 
