From d1c657276a5da3e66283ce63e4c2145222608614 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Tue, 11 Feb 2020 11:10:13 +0100 Subject: [PATCH] src/client/http_client.rs: remove useless password_env --- src/bin/proxmox-backup-client.rs | 13 +++++++++++-- src/client/http_client.rs | 22 ++-------------------- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/src/bin/proxmox-backup-client.rs b/src/bin/proxmox-backup-client.rs index b9918e66..2578c758 100644 --- a/src/bin/proxmox-backup-client.rs +++ b/src/bin/proxmox-backup-client.rs @@ -37,6 +37,7 @@ use futures::*; use tokio::sync::mpsc; const ENV_VAR_PBS_FINGERPRINT: &str = "PBS_FINGERPRINT"; +const ENV_VAR_PBS_PASSWORD: &str = "PBS_PASSWORD"; proxmox::const_regex! { BACKUPSPEC_REGEX = r"^([a-zA-Z0-9_-]+\.(?:pxar|img|conf|log)):(.+)$"; @@ -170,9 +171,16 @@ fn connect(server: &str, userid: &str) -> Result { let fingerprint = std::env::var(ENV_VAR_PBS_FINGERPRINT).ok(); + use std::env::VarError::*; + let password = match std::env::var(ENV_VAR_PBS_PASSWORD) { + Ok(p) => Some(p), + Err(NotUnicode(_)) => bail!(format!("{} contains bad characters", ENV_VAR_PBS_PASSWORD)), + Err(NotPresent) => None, + }; + let options = HttpClientOptions::new() .prefix(Some("proxmox-backup".to_string())) - .password_env(Some("PBS_PASSWORD".to_string())) + .password(password) .interactive(true) .fingerprint(fingerprint) .fingerprint_cache(true) @@ -1483,10 +1491,11 @@ async fn status(param: Value) -> Result { async fn try_get(repo: &BackupRepository, url: &str) -> Value { let fingerprint = std::env::var(ENV_VAR_PBS_FINGERPRINT).ok(); + let password = std::env::var(ENV_VAR_PBS_PASSWORD).ok(); let options = HttpClientOptions::new() .prefix(Some("proxmox-backup".to_string())) - .password_env(Some("PBS_PASSWORD".to_string())) + .password(password) .interactive(false) .fingerprint(fingerprint) .fingerprint_cache(true) diff --git a/src/client/http_client.rs b/src/client/http_client.rs index cc86fc6a..00d97a45 100644 --- a/src/client/http_client.rs +++ b/src/client/http_client.rs @@ -36,7 +36,6 @@ pub struct AuthInfo { pub struct HttpClientOptions { prefix: Option, password: Option, - password_env: Option, fingerprint: Option, interactive: bool, ticket_cache: bool, @@ -50,7 +49,6 @@ impl HttpClientOptions { Self { prefix: None, password: None, - password_env: None, fingerprint: None, interactive: false, ticket_cache: false, @@ -69,11 +67,6 @@ impl HttpClientOptions { self } - pub fn password_env(mut self, password_env: Option) -> Self { - self.password_env = password_env; - self - } - pub fn fingerprint(mut self, fingerprint: Option) -> Self { self.fingerprint = fingerprint; self @@ -313,7 +306,7 @@ impl HttpClient { if let Some((ticket, _token)) = ticket_info { ticket } else { - Self::get_password(&username, options.interactive, options.password_env.clone())? + Self::get_password(&username, options.interactive)? } }; @@ -357,18 +350,7 @@ impl HttpClient { (*self.fingerprint.lock().unwrap()).clone() } - fn get_password(username: &str, interactive: bool, password_env: Option) -> Result { - if let Some(password_env) = password_env { - use std::env::VarError::*; - match std::env::var(&password_env) { - Ok(p) => return Ok(p), - Err(NotUnicode(_)) => bail!(format!("{} contains bad characters", password_env)), - Err(NotPresent) => { - // Try another method - } - } - } - + fn get_password(username: &str, interactive: bool) -> Result { // If we're on a TTY, query the user for a password if interactive && tty::stdin_isatty() { let msg = format!("Password for \"{}\": ", username);