mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-29 07:03:48 +03:00
Added support for env vars in Caddyfile
This is work in progress for #304
This commit is contained in:
parent
7f7a6abafd
commit
72c0527b7d
1 changed files with 15 additions and 0 deletions
|
@ -4,6 +4,7 @@ import (
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -71,6 +72,8 @@ func (p *parser) addresses() error {
|
||||||
for {
|
for {
|
||||||
tkn := p.Val()
|
tkn := p.Val()
|
||||||
|
|
||||||
|
tkn = getValFromEnv(tkn)
|
||||||
|
|
||||||
// special case: import directive replaces tokens during parse-time
|
// special case: import directive replaces tokens during parse-time
|
||||||
if tkn == "import" && p.isNewLine() {
|
if tkn == "import" && p.isNewLine() {
|
||||||
err := p.doImport()
|
err := p.doImport()
|
||||||
|
@ -241,6 +244,7 @@ func (p *parser) directive() error {
|
||||||
} else if p.Val() == "}" && nesting == 0 {
|
} else if p.Val() == "}" && nesting == 0 {
|
||||||
return p.Err("Unexpected '}' because no matching opening brace")
|
return p.Err("Unexpected '}' because no matching opening brace")
|
||||||
}
|
}
|
||||||
|
p.tokens[p.cursor].text = getValFromEnv(p.tokens[p.cursor].text)
|
||||||
p.block.Tokens[dir] = append(p.block.Tokens[dir], p.tokens[p.cursor])
|
p.block.Tokens[dir] = append(p.block.Tokens[dir], p.tokens[p.cursor])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -327,3 +331,14 @@ func (sb serverBlock) HostList() []string {
|
||||||
}
|
}
|
||||||
return sbHosts
|
return sbHosts
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getValFromEnv(s string) string {
|
||||||
|
re := regexp.MustCompile("{\\$[^}]+}")
|
||||||
|
envRefs := re.FindAllString(s, -1)
|
||||||
|
|
||||||
|
for _, ref := range envRefs {
|
||||||
|
s = strings.Replace(s, ref, os.Getenv(ref[2:len(ref)-1]), -1)
|
||||||
|
}
|
||||||
|
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue