Resolve file macros after dropping root privileges
This commit is contained in:
@@ -144,8 +144,8 @@ impl BootManager {
|
|||||||
}
|
}
|
||||||
let cfg_local = config.keys.clone();
|
let cfg_local = config.keys.clone();
|
||||||
|
|
||||||
// Resolve macros
|
// Resolve environment macros
|
||||||
config.resolve_macros().await;
|
config.resolve_macros(&["env"]).await;
|
||||||
|
|
||||||
// Parser servers
|
// Parser servers
|
||||||
let mut servers = Servers::parse(&mut config);
|
let mut servers = Servers::parse(&mut config);
|
||||||
@@ -153,6 +153,9 @@ impl BootManager {
|
|||||||
// Bind ports and drop privileges
|
// Bind ports and drop privileges
|
||||||
servers.bind_and_drop_priv(&mut config);
|
servers.bind_and_drop_priv(&mut config);
|
||||||
|
|
||||||
|
// Resolve file and configuration macros
|
||||||
|
config.resolve_macros(&["file", "cfg"]).await;
|
||||||
|
|
||||||
// Load stores
|
// Load stores
|
||||||
let mut stores = Stores::parse(&mut config).await;
|
let mut stores = Stores::parse(&mut config).await;
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ impl ConfigManager {
|
|||||||
keys: self.cfg_local.load().as_ref().clone(),
|
keys: self.cfg_local.load().as_ref().clone(),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
config.resolve_macros().await;
|
config.resolve_all_macros().await;
|
||||||
self.extend_config(&mut config, prefix)
|
self.extend_config(&mut config, prefix)
|
||||||
.await
|
.await
|
||||||
.map(|_| config)
|
.map(|_| config)
|
||||||
|
|||||||
@@ -74,12 +74,16 @@ pub struct Rate {
|
|||||||
pub type Result<T> = std::result::Result<T, String>;
|
pub type Result<T> = std::result::Result<T, String>;
|
||||||
|
|
||||||
impl Config {
|
impl Config {
|
||||||
pub async fn resolve_macros(&mut self) {
|
pub async fn resolve_macros(&mut self, classes: &[&str]) {
|
||||||
for macro_class in ["env", "file", "cfg"] {
|
for macro_class in classes {
|
||||||
self.resolve_macro_type(macro_class).await;
|
self.resolve_macro_type(macro_class).await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn resolve_all_macros(&mut self) {
|
||||||
|
self.resolve_macros(&["env", "file", "cfg"]).await;
|
||||||
|
}
|
||||||
|
|
||||||
async fn resolve_macro_type(&mut self, class: &str) {
|
async fn resolve_macro_type(&mut self, class: &str) {
|
||||||
let macro_start = format!("%{{{class}:");
|
let macro_start = format!("%{{{class}:");
|
||||||
let mut replacements = AHashMap::new();
|
let mut replacements = AHashMap::new();
|
||||||
|
|||||||
Reference in New Issue
Block a user