Support escaping dollar signs in the YAML config file; closes pterodactyl/panel#3692
This commit is contained in:
parent
02734292a0
commit
981756b456
|
@ -457,9 +457,22 @@ func FromFile(path string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// Replace environment variables within the configuration file with their
|
// Replace environment variables within the configuration file with their
|
||||||
// values from the host system.
|
// values from the host system. This function works almost identically to
|
||||||
b = []byte(os.ExpandEnv(string(b)))
|
// the default os.ExpandEnv function, except it supports escaping dollar
|
||||||
if err := yaml.Unmarshal(b, c); err != nil {
|
// 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
|
return err
|
||||||
}
|
}
|
||||||
// Store this configuration in the global state.
|
// Store this configuration in the global state.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user