diff options
author | Matthew Holt <mholt@users.noreply.github.com> | 2019-04-29 09:22:00 -0600 |
---|---|---|
committer | Matthew Holt <mholt@users.noreply.github.com> | 2019-04-29 09:22:00 -0600 |
commit | 5859cd8dad32fdd7ea55daa5e4377e273fb97a3e (patch) | |
tree | 7237ca3c4c1de7f00ca508306b9ef7e427b5553c /modules | |
parent | 43961b542b077f99f78d64629348b9300d3cd4a3 (diff) |
Instantiate apps that are needed but not explicitly configured
Diffstat (limited to 'modules')
-rw-r--r-- | modules/caddyhttp/caddyhttp.go | 30 | ||||
-rw-r--r-- | modules/caddytls/connpolicy.go | 6 |
2 files changed, 25 insertions, 11 deletions
diff --git a/modules/caddyhttp/caddyhttp.go b/modules/caddyhttp/caddyhttp.go index 437e48f..de62b79 100644 --- a/modules/caddyhttp/caddyhttp.go +++ b/modules/caddyhttp/caddyhttp.go @@ -111,7 +111,11 @@ func (hc *httpModuleConfig) Stop() error { } func (hc *httpModuleConfig) automaticHTTPS(handle caddy2.Handle) error { - tlsApp := handle.App("tls").(*caddytls.TLS) + tlsAppIface, err := handle.App("tls") + if err != nil { + return fmt.Errorf("getting tls app: %v", err) + } + tlsApp := tlsAppIface.(*caddytls.TLS) for srvName, srv := range hc.Servers { srv.tlsApp = tlsApp @@ -120,6 +124,7 @@ func (hc *httpModuleConfig) automaticHTTPS(handle caddy2.Handle) error { continue } + // find all qualifying domain names, de-duplicated domainSet := make(map[string]struct{}) for _, route := range srv.Routes { for _, m := range route.matchers { @@ -133,21 +138,26 @@ func (hc *httpModuleConfig) automaticHTTPS(handle caddy2.Handle) error { } } } - var domains []string - for d := range domainSet { - domains = append(domains, d) - } - if len(domains) > 0 { + + if len(domainSet) > 0 { + // marshal the domains into a slice + var domains []string + for d := range domainSet { + domains = append(domains, d) + } + + // manage their certificates err := tlsApp.Manage(domains) if err != nil { return fmt.Errorf("%s: managing certificate for %s: %s", srvName, domains, err) } - // TODO: Connection policies... redirects... man... + + // tell the server to use TLS srv.TLSConnPolicies = caddytls.ConnectionPolicies{ - { - ALPN: defaultALPN, - }, + {ALPN: defaultALPN}, } + + // TODO: create HTTP->HTTPS redirects } } diff --git a/modules/caddytls/connpolicy.go b/modules/caddytls/connpolicy.go index 9400034..a085fa3 100644 --- a/modules/caddytls/connpolicy.go +++ b/modules/caddytls/connpolicy.go @@ -75,7 +75,11 @@ type ConnectionPolicy struct { } func (cp *ConnectionPolicy) buildStandardTLSConfig(handle caddy2.Handle) error { - tlsApp := handle.App("tls").(*TLS) + tlsAppIface, err := handle.App("tls") + if err != nil { + return fmt.Errorf("getting tls app: %v", err) + } + tlsApp := tlsAppIface.(*TLS) cfg := &tls.Config{ NextProtos: cp.ALPN, |