@marcel91200 / caddy Mirror · read-only / commits / 00e6b77f
Fork 0

Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

Mirrored from https://github.com/Slazee/caddy.git

Synced Nov 14, 05:15 UTC

caddytls: Add `dns` config to acmeissuer (#3701)

Francis Lavoie committed Sep 8, 2020 at 13:36 UTC 00e6b77fe4eb4a692649970bf1724de22b15bba9
1 file changed +26
modules/caddytls/acmeissuer.go
+26
@@ -24,6 +24,7 @@ import (
24 "time"
25
26 "github.com/caddyserver/caddy/v2"
27 + "github.com/caddyserver/caddy/v2/caddyconfig"
28 "github.com/caddyserver/caddy/v2/caddyconfig/caddyfile"
29 "github.com/caddyserver/certmagic"
30 "github.com/mholt/acmez"
@@ -220,6 +221,7 @@ func (iss *ACMEIssuer) GetACMEIssuer() *ACMEIssuer { return iss }
221 // alt_tlsalpn_port <port>
222 // eab <key_id> <mac_key>
223 // trusted_roots <pem_files...>
224 +// dns <provider_name> [<options>]
225 // resolvers <dns_servers...>
226 // }
227 //
@@ -318,6 +320,30 @@ func (iss *ACMEIssuer) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
320 case "trusted_roots":
321 iss.TrustedRootsPEMFiles = d.RemainingArgs()
322
323 + case "dns":
324 + if !d.NextArg() {
325 + return d.ArgErr()
326 + }
327 + provName := d.Val()
328 + if iss.Challenges == nil {
329 + iss.Challenges = new(ChallengesConfig)
330 + }
331 + if iss.Challenges.DNS == nil {
332 + iss.Challenges.DNS = new(DNSChallengeConfig)
333 + }
334 + dnsProvModule, err := caddy.GetModule("dns.providers." + provName)
335 + if err != nil {
336 + return d.Errf("getting DNS provider module named '%s': %v", provName, err)
337 + }
338 + dnsProvModuleInstance := dnsProvModule.New()
339 + if unm, ok := dnsProvModuleInstance.(caddyfile.Unmarshaler); ok {
340 + err = unm.UnmarshalCaddyfile(d.NewFromNextSegment())
341 + if err != nil {
342 + return err
343 + }
344 + }
345 + iss.Challenges.DNS.ProviderRaw = caddyconfig.JSONModuleObject(dnsProvModuleInstance, "name", provName, nil)
346 +
347 case "resolvers":
348 if !d.NextArg() {
349 return d.ArgErr()