mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-26 21:53:48 +03:00
tls: accept placeholders in string values of certificate loaders (#5963)
* tls: loader: accept placeholders in string values * appease the linter
This commit is contained in:
parent
18f34290d2
commit
4173e2c77a
4 changed files with 79 additions and 3 deletions
|
@ -29,6 +29,26 @@ func init() {
|
||||||
// FileLoader loads certificates and their associated keys from disk.
|
// FileLoader loads certificates and their associated keys from disk.
|
||||||
type FileLoader []CertKeyFilePair
|
type FileLoader []CertKeyFilePair
|
||||||
|
|
||||||
|
// Provision implements caddy.Provisioner.
|
||||||
|
func (fl FileLoader) Provision(ctx caddy.Context) error {
|
||||||
|
repl, ok := ctx.Value(caddy.ReplacerCtxKey).(*caddy.Replacer)
|
||||||
|
if !ok {
|
||||||
|
repl = caddy.NewReplacer()
|
||||||
|
}
|
||||||
|
for k, pair := range fl {
|
||||||
|
for i, tag := range pair.Tags {
|
||||||
|
pair.Tags[i] = repl.ReplaceKnown(tag, "")
|
||||||
|
}
|
||||||
|
fl[k] = CertKeyFilePair{
|
||||||
|
Certificate: repl.ReplaceKnown(pair.Certificate, ""),
|
||||||
|
Key: repl.ReplaceKnown(pair.Key, ""),
|
||||||
|
Format: repl.ReplaceKnown(pair.Format, ""),
|
||||||
|
Tags: pair.Tags,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// CaddyModule returns the Caddy module information.
|
// CaddyModule returns the Caddy module information.
|
||||||
func (FileLoader) CaddyModule() caddy.ModuleInfo {
|
func (FileLoader) CaddyModule() caddy.ModuleInfo {
|
||||||
return caddy.ModuleInfo{
|
return caddy.ModuleInfo{
|
||||||
|
@ -87,4 +107,7 @@ func (fl FileLoader) LoadCertificates() ([]Certificate, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Interface guard
|
// Interface guard
|
||||||
var _ CertificateLoader = (FileLoader)(nil)
|
var (
|
||||||
|
_ CertificateLoader = (FileLoader)(nil)
|
||||||
|
_ caddy.Provisioner = (FileLoader)(nil)
|
||||||
|
)
|
||||||
|
|
|
@ -43,6 +43,18 @@ func (FolderLoader) CaddyModule() caddy.ModuleInfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Provision implements caddy.Provisioner.
|
||||||
|
func (fl FolderLoader) Provision(ctx caddy.Context) error {
|
||||||
|
repl, ok := ctx.Value(caddy.ReplacerCtxKey).(*caddy.Replacer)
|
||||||
|
if !ok {
|
||||||
|
repl = caddy.NewReplacer()
|
||||||
|
}
|
||||||
|
for k, path := range fl {
|
||||||
|
fl[k] = repl.ReplaceKnown(path, "")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// LoadCertificates loads all the certificates+keys in the directories
|
// LoadCertificates loads all the certificates+keys in the directories
|
||||||
// listed in fl from all files ending with .pem. This method of loading
|
// listed in fl from all files ending with .pem. This method of loading
|
||||||
// certificates expects the certificate and key to be bundled into the
|
// certificates expects the certificate and key to be bundled into the
|
||||||
|
@ -146,4 +158,7 @@ func tlsCertFromCertAndKeyPEMBundle(bundle []byte) (tls.Certificate, error) {
|
||||||
return cert, nil
|
return cert, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ CertificateLoader = (FolderLoader)(nil)
|
var (
|
||||||
|
_ CertificateLoader = (FolderLoader)(nil)
|
||||||
|
_ caddy.Provisioner = (FolderLoader)(nil)
|
||||||
|
)
|
||||||
|
|
|
@ -30,6 +30,25 @@ func init() {
|
||||||
// of not needing to store them on disk at all.
|
// of not needing to store them on disk at all.
|
||||||
type PEMLoader []CertKeyPEMPair
|
type PEMLoader []CertKeyPEMPair
|
||||||
|
|
||||||
|
// Provision implements caddy.Provisioner.
|
||||||
|
func (pl PEMLoader) Provision(ctx caddy.Context) error {
|
||||||
|
repl, ok := ctx.Value(caddy.ReplacerCtxKey).(*caddy.Replacer)
|
||||||
|
if !ok {
|
||||||
|
repl = caddy.NewReplacer()
|
||||||
|
}
|
||||||
|
for k, pair := range pl {
|
||||||
|
for i, tag := range pair.Tags {
|
||||||
|
pair.Tags[i] = repl.ReplaceKnown(tag, "")
|
||||||
|
}
|
||||||
|
pl[k] = CertKeyPEMPair{
|
||||||
|
CertificatePEM: repl.ReplaceKnown(pair.CertificatePEM, ""),
|
||||||
|
KeyPEM: repl.ReplaceKnown(pair.KeyPEM, ""),
|
||||||
|
Tags: pair.Tags,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// CaddyModule returns the Caddy module information.
|
// CaddyModule returns the Caddy module information.
|
||||||
func (PEMLoader) CaddyModule() caddy.ModuleInfo {
|
func (PEMLoader) CaddyModule() caddy.ModuleInfo {
|
||||||
return caddy.ModuleInfo{
|
return caddy.ModuleInfo{
|
||||||
|
@ -69,4 +88,7 @@ func (pl PEMLoader) LoadCertificates() ([]Certificate, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Interface guard
|
// Interface guard
|
||||||
var _ CertificateLoader = (PEMLoader)(nil)
|
var (
|
||||||
|
_ CertificateLoader = (PEMLoader)(nil)
|
||||||
|
_ caddy.Provisioner = (PEMLoader)(nil)
|
||||||
|
)
|
||||||
|
|
|
@ -52,6 +52,22 @@ func (StorageLoader) CaddyModule() caddy.ModuleInfo {
|
||||||
func (sl *StorageLoader) Provision(ctx caddy.Context) error {
|
func (sl *StorageLoader) Provision(ctx caddy.Context) error {
|
||||||
sl.storage = ctx.Storage()
|
sl.storage = ctx.Storage()
|
||||||
sl.ctx = ctx
|
sl.ctx = ctx
|
||||||
|
|
||||||
|
repl, ok := ctx.Value(caddy.ReplacerCtxKey).(*caddy.Replacer)
|
||||||
|
if !ok {
|
||||||
|
repl = caddy.NewReplacer()
|
||||||
|
}
|
||||||
|
for k, pair := range sl.Pairs {
|
||||||
|
for i, tag := range pair.Tags {
|
||||||
|
pair.Tags[i] = repl.ReplaceKnown(tag, "")
|
||||||
|
}
|
||||||
|
sl.Pairs[k] = CertKeyFilePair{
|
||||||
|
Certificate: repl.ReplaceKnown(pair.Certificate, ""),
|
||||||
|
Key: repl.ReplaceKnown(pair.Key, ""),
|
||||||
|
Format: repl.ReplaceKnown(pair.Format, ""),
|
||||||
|
Tags: pair.Tags,
|
||||||
|
}
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue