From ba793bbb8f103d1352a5135b6df6e9efba7f9fe8 Mon Sep 17 00:00:00 2001 From: Siddharth Chandrasekaran Date: Wed, 8 Nov 2023 19:49:29 +0000 Subject: [PATCH] osdpctl: Remove Mode and add LogFile keys to device config files Signed-off-by: Siddharth Chandrasekaran --- osdpctl/config/devices/cp-multiple-pd.cfg | 2 +- osdpctl/config/devices/cp-single-pd.cfg | 4 ++-- osdpctl/config/devices/pd-0.cfg | 3 ++- osdpctl/config/devices/pd-1.cfg | 1 + osdpctl/src/config.rs | 25 ++++++++++++++++------- osdpctl/src/pd.rs | 3 +++ 6 files changed, 27 insertions(+), 11 deletions(-) diff --git a/osdpctl/config/devices/cp-multiple-pd.cfg b/osdpctl/config/devices/cp-multiple-pd.cfg index e18e2640..77b31e8c 100644 --- a/osdpctl/config/devices/cp-multiple-pd.cfg +++ b/osdpctl/config/devices/cp-multiple-pd.cfg @@ -1,9 +1,9 @@ -Mode = CP Name = Multi-CP NumPd = 2 [Service] LogLevel = INFO +LogFile = /tmp/single-cp.log PidFile = /tmp/cp-002.pid [PD-0] diff --git a/osdpctl/config/devices/cp-single-pd.cfg b/osdpctl/config/devices/cp-single-pd.cfg index 0c6bf739..bbd4ddb9 100644 --- a/osdpctl/config/devices/cp-single-pd.cfg +++ b/osdpctl/config/devices/cp-single-pd.cfg @@ -1,9 +1,9 @@ -Mode = CP Name = Single-CP NumPd = 1 [Service] -LogLevel = 6 +LogLevel = INFO +LogFile = /tmp/single-cp.log PidFile = /tmp/cp-002.pid [PD-0] diff --git a/osdpctl/config/devices/pd-0.cfg b/osdpctl/config/devices/pd-0.cfg index 3d82e6b5..ba234491 100644 --- a/osdpctl/config/devices/pd-0.cfg +++ b/osdpctl/config/devices/pd-0.cfg @@ -4,7 +4,8 @@ Channel = unix::/tmp/conn-pd-0 KeyStore = /tmp/pd-0.key [Service] -LogLevel = +LogLevel = INFO +LogFile = /tmp/pd-0.log PidFile = /tmp/pd-0.pid [PdCapability] diff --git a/osdpctl/config/devices/pd-1.cfg b/osdpctl/config/devices/pd-1.cfg index 2d7ab849..1613b364 100644 --- a/osdpctl/config/devices/pd-1.cfg +++ b/osdpctl/config/devices/pd-1.cfg @@ -6,6 +6,7 @@ Flags = EnforceSecure [Service] LogLevel = INFO +LogFile = /tmp/pd-0.log PidFile = /tmp/pd-1.pid [PdCapability] diff --git a/osdpctl/src/config.rs b/osdpctl/src/config.rs index 8b5ee590..9f89ae13 100644 --- a/osdpctl/src/config.rs +++ b/osdpctl/src/config.rs @@ -21,6 +21,13 @@ pub struct AppConfig { impl AppConfig { pub fn from(cfg: &Path) -> Result { + if !cfg.exists() { + let mut dir = PathBuf::from(cfg); + dir.pop(); + return Ok(Self { + device_config_dir: dir, + }); + } let mut config = Ini::new(); let _ = config.load(cfg).unwrap(); let s = config.get("default", "device_config_dir").unwrap(); @@ -28,13 +35,13 @@ impl AppConfig { let mut path = PathBuf::from(cfg); path.pop(); path.push(&s[2..]); + path = std::fs::canonicalize(&s)?; path } else { - PathBuf::from(s) + let path = std::fs::canonicalize(&s)?; + path }; - Ok(Self { - device_config_dir, - }) + Ok(Self { device_config_dir }) } } @@ -102,6 +109,7 @@ pub struct CpConfig { pub name: String, pd_data: Vec, pub pid_file: PathBuf, + pub log_file: PathBuf, pub log_level: String, } @@ -121,8 +129,9 @@ impl CpConfig { }); } let pid_file = PathBuf::from_str(&config.get("Service", "PidFile").unwrap())?; + let log_file = PathBuf::from_str(&config.get("Service", "LogFile").unwrap())?; let log_level = config.get("Service", "LogLevel").unwrap(); - Ok(Self { name, pd_data, pid_file, log_level }) + Ok(Self { name, pd_data, pid_file, log_level, log_file }) } pub fn pd_info(&self) -> Result> { @@ -155,6 +164,7 @@ pub struct PdConfig { flags: OsdpFlag, pub pid_file: PathBuf, pub log_level: String, + pub log_file: PathBuf, } impl PdConfig { @@ -184,8 +194,9 @@ impl PdConfig { pd_cap.push(PdCapability::from_str(format!("{}:{}", key, val.as_deref().unwrap()).as_str())?); } let pid_file = PathBuf::from_str(&config.get("Service", "PidFile").unwrap())?; + let log_file = PathBuf::from_str(&config.get("Service", "LogFile").unwrap())?; let log_level = config.get("Service", "LogLevel").unwrap(); - Ok(Self { name, channel, address, key_store, pd_id, pd_cap, flags, pid_file, log_level }) + Ok(Self { name, channel, address, key_store, pd_id, pd_cap, flags, pid_file, log_level, log_file }) } pub fn pd_info(&self) -> Result { @@ -225,4 +236,4 @@ impl DeviceConfig { DeviceConfig::PdConfig(c) => &c.name, } } -} \ No newline at end of file +} diff --git a/osdpctl/src/pd.rs b/osdpctl/src/pd.rs index b3000920..adf054f3 100644 --- a/osdpctl/src/pd.rs +++ b/osdpctl/src/pd.rs @@ -35,6 +35,9 @@ impl PdDaemon { }, OsdpCommand::KeySet(c) => { println!("Command: {:?}", c); + let mut key = [0; 16]; + key.copy_from_slice(&c.data[0..16]); + dev.key_store.store(key).unwrap(); }, OsdpCommand::Mfg(c) => { println!("Command: {:?}", c);