Support escaping dollar signs in the YAML config file; closes pterodactyl/panel#3692

This commit is contained in:
Dane Everitt 2021-10-24 15:20:27 -07:00
parent 02734292a0
commit 981756b456

View File

@ -457,9 +457,22 @@ func FromFile(path string) error {
return err
}
// Replace environment variables within the configuration file with their
// values from the host system.
b = []byte(os.ExpandEnv(string(b)))
if err := yaml.Unmarshal(b, c); err != nil {
// values from the host system. This function works almost identically to
// the default os.ExpandEnv function, except it supports escaping dollar
// signs in the text if you pass "$$" through.
//
// "some$$foo" -> "some$foo"
// "some$foo" -> "some" (or "someVALUE_OF_FOO" if FOO is defined in env)
//
// @see https://github.com/pterodactyl/panel/issues/3692
exp := os.Expand(string(b), func(s string) string {
if s == "$" {
return s
}
return os.Getenv(s)
})
if err := yaml.Unmarshal([]byte(exp), c); err != nil {
return err
}
// Store this configuration in the global state.