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()