From cc2ce4a92fa00e6c828abdf33424550b46a5cbad Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Mon, 16 Sep 2019 12:35:23 +0200 Subject: [PATCH] src/client/http_client.rs: add password parameter to HttpClient::new() --- src/bin/download-speed.rs | 2 +- src/bin/proxmox-backup-client.rs | 26 +++++++++++++------------- src/bin/upload-speed.rs | 2 +- src/client/http_client.rs | 6 ++++-- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/bin/download-speed.rs b/src/bin/download-speed.rs index bcfe237c..ff42af8d 100644 --- a/src/bin/download-speed.rs +++ b/src/bin/download-speed.rs @@ -29,7 +29,7 @@ async fn run() -> Result<(), Error> { let username = "root@pam"; - let client = HttpClient::new(host, username)?; + let client = HttpClient::new(host, username, None)?; let backup_time = "2019-06-28T10:49:48Z".parse::>()?; diff --git a/src/bin/proxmox-backup-client.rs b/src/bin/proxmox-backup-client.rs index 5ea642db..af676002 100644 --- a/src/bin/proxmox-backup-client.rs +++ b/src/bin/proxmox-backup-client.rs @@ -256,7 +256,7 @@ fn list_backup_groups( let repo = extract_repository_from_value(¶m)?; - let client = HttpClient::new(repo.host(), repo.user())?; + let client = HttpClient::new(repo.host(), repo.user(), None)?; let path = format!("api2/json/admin/datastore/{}/groups", repo.store()); @@ -336,7 +336,7 @@ fn list_snapshots( let output_format = param["output-format"].as_str().unwrap_or("text").to_owned(); - let client = HttpClient::new(repo.host(), repo.user())?; + let client = HttpClient::new(repo.host(), repo.user(), None)?; let path = format!("api2/json/admin/datastore/{}/snapshots", repo.store()); @@ -407,7 +407,7 @@ fn forget_snapshots( let path = tools::required_string_param(¶m, "snapshot")?; let snapshot = BackupDir::parse(path)?; - let mut client = HttpClient::new(repo.host(), repo.user())?; + let mut client = HttpClient::new(repo.host(), repo.user(), None)?; let path = format!("api2/json/admin/datastore/{}/snapshots", repo.store()); @@ -432,7 +432,7 @@ fn api_login( let repo = extract_repository_from_value(¶m)?; - let client = HttpClient::new(repo.host(), repo.user())?; + let client = HttpClient::new(repo.host(), repo.user(), None)?; async_main(async move { client.login().await })?; record_repository(&repo); @@ -474,7 +474,7 @@ fn dump_catalog( } }; - let client = HttpClient::new(repo.host(), repo.user())?; + let client = HttpClient::new(repo.host(), repo.user(), None)?; async_main(async move { let client = client.start_backup_reader( @@ -525,7 +525,7 @@ fn list_snapshot_files( let output_format = param["output-format"].as_str().unwrap_or("text").to_owned(); - let client = HttpClient::new(repo.host(), repo.user())?; + let client = HttpClient::new(repo.host(), repo.user(), None)?; let path = format!("api2/json/admin/datastore/{}/files", repo.store()); @@ -564,7 +564,7 @@ fn start_garbage_collection( let repo = extract_repository_from_value(¶m)?; - let mut client = HttpClient::new(repo.host(), repo.user())?; + let mut client = HttpClient::new(repo.host(), repo.user(), None)?; let path = format!("api2/json/admin/datastore/{}/gc", repo.store()); @@ -687,7 +687,7 @@ fn create_backup( let backup_time = Utc.timestamp(backup_time_opt.unwrap_or(Utc::now().timestamp()), 0); - let client = HttpClient::new(repo.host(), repo.user())?; + let client = HttpClient::new(repo.host(), repo.user(), None)?; record_repository(&repo); println!("Starting backup: {}/{}/{}", backup_type, backup_id, BackupDir::backup_time_to_string(backup_time)); @@ -938,7 +938,7 @@ async fn restore_do(param: Value) -> Result { let archive_name = tools::required_string_param(¶m, "archive-name")?; - let client = HttpClient::new(repo.host(), repo.user())?; + let client = HttpClient::new(repo.host(), repo.user(), None)?; record_repository(&repo); @@ -1125,7 +1125,7 @@ fn upload_log( let snapshot = tools::required_string_param(¶m, "snapshot")?; let snapshot = BackupDir::parse(snapshot)?; - let mut client = HttpClient::new(repo.host(), repo.user())?; + let mut client = HttpClient::new(repo.host(), repo.user(), None)?; let keyfile = param["keyfile"].as_str().map(|p| PathBuf::from(p)); @@ -1167,7 +1167,7 @@ fn prune( let repo = extract_repository_from_value(¶m)?; - let mut client = HttpClient::new(repo.host(), repo.user())?; + let mut client = HttpClient::new(repo.host(), repo.user(), None)?; let path = format!("api2/json/admin/datastore/{}/prune", repo.store()); @@ -1197,7 +1197,7 @@ fn status( let output_format = param["output-format"].as_str().unwrap_or("text").to_owned(); - let client = HttpClient::new(repo.host(), repo.user())?; + let client = HttpClient::new(repo.host(), repo.user(), None)?; let path = format!("api2/json/admin/datastore/{}/status", repo.store()); @@ -1229,7 +1229,7 @@ fn status( // like get, but simply ignore errors and return Null instead async fn try_get(repo: &BackupRepository, url: &str) -> Value { - let client = match HttpClient::new(repo.host(), repo.user()) { + let client = match HttpClient::new(repo.host(), repo.user(), None) { Ok(v) => v, _ => return Value::Null, }; diff --git a/src/bin/upload-speed.rs b/src/bin/upload-speed.rs index fe20b524..b9d78f8f 100644 --- a/src/bin/upload-speed.rs +++ b/src/bin/upload-speed.rs @@ -9,7 +9,7 @@ async fn upload_speed() -> Result { let username = "root@pam"; - let client = HttpClient::new(host, username)?; + let client = HttpClient::new(host, username, None)?; let backup_time = chrono::Utc::now(); diff --git a/src/client/http_client.rs b/src/client/http_client.rs index 9e6359ba..008bf579 100644 --- a/src/client/http_client.rs +++ b/src/client/http_client.rs @@ -125,10 +125,12 @@ fn load_ticket_info(server: &str, username: &str) -> Option<(String, String)> { impl HttpClient { - pub fn new(server: &str, username: &str) -> Result { + pub fn new(server: &str, username: &str, password: Option) -> Result { let client = Self::build_client(); - let password = if let Some((ticket, _token)) = load_ticket_info(server, username) { + let password = if let Some(password) = password { + password + } else if let Some((ticket, _token)) = load_ticket_info(server, username) { ticket } else { Self::get_password(&username)?