@marcel91200 / caddy Mirror · read-only / commits / 0b09b070
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

httpcaddyfile: Properly add all cert loaders across sites (fixes #3056)

Matthew Holt committed Feb 18, 2020 at 11:13 UTC 0b09b070e54bca82ba399f43062c689a3d921f24
1 file changed +13 -4
caddyconfig/httpcaddyfile/httptype.go
+13 -4
@@ -169,6 +169,7 @@ func (st ServerType) Setup(originalServerBlocks []caddyfile.ServerBlock,
169
170 // now for the TLS app! (TODO: refactor into own func)
171 tlsApp := caddytls.TLS{CertificatesRaw: make(caddy.ModuleMap)}
172 + var certLoaders []caddytls.CertificateLoader
173 for _, p := range pairings {
174 for i, sblock := range p.serverBlocks {
175 // tls automation policies
@@ -194,17 +195,25 @@ func (st ServerType) Setup(originalServerBlocks []caddyfile.ServerBlock,
195 }
196 }
197 }
197 -
198 // tls certificate loaders
199 if clVals, ok := sblock.pile["tls.certificate_loader"]; ok {
200 for _, clVal := range clVals {
201 - loader := clVal.Value.(caddytls.CertificateLoader)
202 - loaderName := caddy.GetModuleName(loader)
203 - tlsApp.CertificatesRaw[loaderName] = caddyconfig.JSON(loader, &warnings)
201 + certLoaders = append(certLoaders, clVal.Value.(caddytls.CertificateLoader))
202 }
203 }
204 }
205 }
206 + // group certificate loaders by module name, then add to config
207 + if len(certLoaders) > 0 {
208 + loadersByName := make(map[string][]caddytls.CertificateLoader)
209 + for _, cl := range certLoaders {
210 + name := caddy.GetModuleName(cl)
211 + loadersByName[name] = append(loadersByName[name], cl)
212 + }
213 + for certLoaderName, loaders := range loadersByName {
214 + tlsApp.CertificatesRaw[certLoaderName] = caddyconfig.JSON(loaders, &warnings)
215 + }
216 + }
217 // if global ACME CA, DNS, or email were set, append a catch-all automation
218 // policy that ensures they will be used if no tls directive was used
219 acmeCA, hasACMECA := options["acme_ca"]