server: allow every config value to be specified as a file

By using https://crates.io/crates/figment_file_provider_adapter

Fixes https://github.com/nitnelave/lldap/issues/263
This commit is contained in:
Valentin Tolmer
2022-09-14 10:28:49 +02:00
committed by nitnelave
parent b6ee918ca9
commit 7e1ce10df1
4 changed files with 15 additions and 16 deletions

View File

@@ -19,6 +19,7 @@ base64 = "0.13"
bincode = "1.3"
cron = "*"
derive_builder = "0.10.2"
figment_file_provider_adapter = "0.1"
futures = "*"
futures-util = "*"
hmac = "0.10"

View File

@@ -279,11 +279,13 @@ where
overrides.general_config().config_file
);
use figment_file_provider_adapter::FileAdapter;
let ignore_keys = ["key_file", "cert_file"];
let mut config: Configuration = Figment::from(Serialized::defaults(
ConfigurationBuilder::default().private_build().unwrap(),
))
.merge(Toml::file(config_file))
.merge(Env::prefixed("LLDAP_").split("__"))
.merge(FileAdapter::wrap(Toml::file(config_file)).ignore(&ignore_keys))
.merge(FileAdapter::wrap(Env::prefixed("LLDAP_").split("__")).ignore(&ignore_keys))
.extract()?;
overrides.override_config(&mut config);