diff --git a/CHANGELOG.md b/CHANGELOG.md index 22b283d..15b4e98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,8 @@ Released on ?? > 🦥 The lazy update +- **Default ssh config path**: + - SSH configuration path is now `~/.ssh/config` by default - **Bugfix**: - Fixed [Issue 126](https://github.com/veeso/termscp/issues/126) - Fixed [Issue 141](https://github.com/veeso/termscp/issues/141) diff --git a/src/config/params.rs b/src/config/params.rs index e99df84..579f095 100644 --- a/src/config/params.rs +++ b/src/config/params.rs @@ -36,7 +36,7 @@ pub struct UserInterfaceConfig { pub notification_threshold: Option, // @! Since 0.7.0; Default 512MB } -#[derive(Deserialize, Serialize, Debug, Default)] +#[derive(Deserialize, Serialize, Debug)] /// Contains configuratio related to remote hosts pub struct RemoteConfig { /// Ssh configuration path. If NONE, won't be read @@ -46,6 +46,19 @@ pub struct RemoteConfig { pub ssh_keys: HashMap, } +impl Default for RemoteConfig { + fn default() -> Self { + let home_dir = dirs::home_dir().unwrap_or_else(|| PathBuf::from("/root")); + let mut ssh_config_path = "~/.ssh/config".to_string(); + ssh_config_path = ssh_config_path.replacen('~', &home_dir.to_string_lossy(), 1); + + Self { + ssh_config: Some(ssh_config_path), + ssh_keys: HashMap::default(), + } + } +} + impl Default for UserInterfaceConfig { fn default() -> Self { UserInterfaceConfig { diff --git a/src/system/config_client.rs b/src/system/config_client.rs index 97f175c..1938e54 100644 --- a/src/system/config_client.rs +++ b/src/system/config_client.rs @@ -651,7 +651,11 @@ mod tests { let mut client: ConfigClient = ConfigClient::new(cfg_path.as_path(), key_path.as_path()) .ok() .unwrap(); - assert_eq!(client.get_ssh_config(), None); // Null ? + + let home_dir = dirs::home_dir().unwrap_or_else(|| PathBuf::from("/root")); + let mut ssh_config_path = "~/.ssh/config".to_string(); + ssh_config_path = ssh_config_path.replacen('~', &home_dir.to_string_lossy(), 1); + assert_eq!(client.get_ssh_config(), Some(ssh_config_path.as_str())); // Null ? client.set_ssh_config(Some(String::from("/tmp/ssh_config"))); assert_eq!(client.get_ssh_config(), Some("/tmp/ssh_config")); client.set_ssh_config(None);