@marcel91200 / caddy Mirror · read-only / commits / 4173e2c7
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 12, 20:45 UTC

tls: accept placeholders in string values of certificate loaders (#5963)

* tls: loader: accept placeholders in string values * appease the linter

Mohammed Al Sahaf committed Dec 4, 2023 at 19:23 UTC 4173e2c77ab883a509ef3be1cbdc868442c5a9b8
4 files changed +79 -3
modules/caddytls/fileloader.go
+24 -1
@@ -29,6 +29,26 @@ func init() {
29 // FileLoader loads certificates and their associated keys from disk.
30 type FileLoader []CertKeyFilePair
31
32 +// Provision implements caddy.Provisioner.
33 +func (fl FileLoader) Provision(ctx caddy.Context) error {
34 + repl, ok := ctx.Value(caddy.ReplacerCtxKey).(*caddy.Replacer)
35 + if !ok {
36 + repl = caddy.NewReplacer()
37 + }
38 + for k, pair := range fl {
39 + for i, tag := range pair.Tags {
40 + pair.Tags[i] = repl.ReplaceKnown(tag, "")
41 + }
42 + fl[k] = CertKeyFilePair{
43 + Certificate: repl.ReplaceKnown(pair.Certificate, ""),
44 + Key: repl.ReplaceKnown(pair.Key, ""),
45 + Format: repl.ReplaceKnown(pair.Format, ""),
46 + Tags: pair.Tags,
47 + }
48 + }
49 + return nil
50 +}
51 +
52 // CaddyModule returns the Caddy module information.
53 func (FileLoader) CaddyModule() caddy.ModuleInfo {
54 return caddy.ModuleInfo{
@@ -87,4 +107,7 @@ func (fl FileLoader) LoadCertificates() ([]Certificate, error) {
107 }
108
109 // Interface guard
90 -var _ CertificateLoader = (FileLoader)(nil)
110 +var (
111 + _ CertificateLoader = (FileLoader)(nil)
112 + _ caddy.Provisioner = (FileLoader)(nil)
113 +)
modules/caddytls/folderloader.go
+16 -1
@@ -43,6 +43,18 @@ func (FolderLoader) CaddyModule() caddy.ModuleInfo {
43 }
44 }
45
46 +// Provision implements caddy.Provisioner.
47 +func (fl FolderLoader) Provision(ctx caddy.Context) error {
48 + repl, ok := ctx.Value(caddy.ReplacerCtxKey).(*caddy.Replacer)
49 + if !ok {
50 + repl = caddy.NewReplacer()
51 + }
52 + for k, path := range fl {
53 + fl[k] = repl.ReplaceKnown(path, "")
54 + }
55 + return nil
56 +}
57 +
58 // LoadCertificates loads all the certificates+keys in the directories
59 // listed in fl from all files ending with .pem. This method of loading
60 // certificates expects the certificate and key to be bundled into the
@@ -146,4 +158,7 @@ func tlsCertFromCertAndKeyPEMBundle(bundle []byte) (tls.Certificate, error) {
158 return cert, nil
159 }
160
149 -var _ CertificateLoader = (FolderLoader)(nil)
161 +var (
162 + _ CertificateLoader = (FolderLoader)(nil)
163 + _ caddy.Provisioner = (FolderLoader)(nil)
164 +)
modules/caddytls/pemloader.go
+23 -1
@@ -30,6 +30,25 @@ func init() {
30 // of not needing to store them on disk at all.
31 type PEMLoader []CertKeyPEMPair
32
33 +// Provision implements caddy.Provisioner.
34 +func (pl PEMLoader) Provision(ctx caddy.Context) error {
35 + repl, ok := ctx.Value(caddy.ReplacerCtxKey).(*caddy.Replacer)
36 + if !ok {
37 + repl = caddy.NewReplacer()
38 + }
39 + for k, pair := range pl {
40 + for i, tag := range pair.Tags {
41 + pair.Tags[i] = repl.ReplaceKnown(tag, "")
42 + }
43 + pl[k] = CertKeyPEMPair{
44 + CertificatePEM: repl.ReplaceKnown(pair.CertificatePEM, ""),
45 + KeyPEM: repl.ReplaceKnown(pair.KeyPEM, ""),
46 + Tags: pair.Tags,
47 + }
48 + }
49 + return nil
50 +}
51 +
52 // CaddyModule returns the Caddy module information.
53 func (PEMLoader) CaddyModule() caddy.ModuleInfo {
54 return caddy.ModuleInfo{
@@ -69,4 +88,7 @@ func (pl PEMLoader) LoadCertificates() ([]Certificate, error) {
88 }
89
90 // Interface guard
72 -var _ CertificateLoader = (PEMLoader)(nil)
91 +var (
92 + _ CertificateLoader = (PEMLoader)(nil)
93 + _ caddy.Provisioner = (PEMLoader)(nil)
94 +)
modules/caddytls/storageloader.go
+16
@@ -52,6 +52,22 @@ func (StorageLoader) CaddyModule() caddy.ModuleInfo {
52 func (sl *StorageLoader) Provision(ctx caddy.Context) error {
53 sl.storage = ctx.Storage()
54 sl.ctx = ctx
55 +
56 + repl, ok := ctx.Value(caddy.ReplacerCtxKey).(*caddy.Replacer)
57 + if !ok {
58 + repl = caddy.NewReplacer()
59 + }
60 + for k, pair := range sl.Pairs {
61 + for i, tag := range pair.Tags {
62 + pair.Tags[i] = repl.ReplaceKnown(tag, "")
63 + }
64 + sl.Pairs[k] = CertKeyFilePair{
65 + Certificate: repl.ReplaceKnown(pair.Certificate, ""),
66 + Key: repl.ReplaceKnown(pair.Key, ""),
67 + Format: repl.ReplaceKnown(pair.Format, ""),
68 + Tags: pair.Tags,
69 + }
70 + }
71 return nil
72 }
73