From 6450d545ca04345e40e7900e3423249c6a315353 Mon Sep 17 00:00:00 2001 From: Dominik George <dominik.george@teckids.org> Date: Fri, 7 May 2021 00:33:29 +0200 Subject: [PATCH] Always fall back to higher configuration level --- src/config.rs | 8 +++++++- src/pam.rs | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/config.rs b/src/config.rs index 4828be0..0c6a0f6 100644 --- a/src/config.rs +++ b/src/config.rs @@ -60,6 +60,12 @@ pub fn argv_to_config(argv: &Vec<String>) -> config::Config { pub fn get_optional<'de, T: Deserialize<'de>>(conf: &config::Config, key: &str) -> Option<T> { match conf.get(key) { Ok(v) => Some(v), - Err(_) => None, + Err(_) => { + // Try falling back to parent block + match key.find('.') { + Some(i) => get_optional(conf, &key[i+1..]), + None => None, + } + }, } } diff --git a/src/pam.rs b/src/pam.rs index 2761e25..b469af0 100644 --- a/src/pam.rs +++ b/src/pam.rs @@ -133,7 +133,7 @@ fn pam_sm_prepare(argv: &Vec<String>) -> Config { let conf = get_config(Some(conf_args)); let mut log_level = log::LevelFilter::Error; - if conf.get_bool("debug").unwrap_or_default() || conf.get_bool("pam.debug").unwrap_or_default() { + if get_optional(&conf, "pam.debug").unwrap_or_default() { log_level = log::LevelFilter::Debug; } setup_log(log_level); -- GitLab