* [pbs-devel] [PATCH proxmox-backup] fix systemd-encoded upid strings in http client
@ 2020-11-19 9:02 Dominik Csapak
2020-11-19 10:01 ` [pbs-devel] applied: " Dietmar Maurer
0 siblings, 1 reply; 2+ messages in thread
From: Dominik Csapak @ 2020-11-19 9:02 UTC (permalink / raw)
To: pbs-devel
since we systemd-encode parts of the upid string, and those can contain
characters that are invalid in urls (e.g. '\'), we have to percent encode
those
add a 'percent_encode_component' helper, so that we can maybe change
the AsciiSet for all uses at the same time
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
we can also change the http client interface to take a &[&str] instead
a &str for the path, and always percent encode all components,
but for now this should be enough
src/bin/proxmox-backup-manager.rs | 2 +-
src/bin/proxmox_backup_client/task.rs | 2 +-
src/client/task_log.rs | 3 ++-
src/tools.rs | 7 ++++++-
4 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/src/bin/proxmox-backup-manager.rs b/src/bin/proxmox-backup-manager.rs
index 219476fc..a763d6d6 100644
--- a/src/bin/proxmox-backup-manager.rs
+++ b/src/bin/proxmox-backup-manager.rs
@@ -245,7 +245,7 @@ async fn task_stop(param: Value) -> Result<Value, Error> {
let mut client = connect()?;
- let path = format!("api2/json/nodes/localhost/tasks/{}", upid_str);
+ let path = format!("api2/json/nodes/localhost/tasks/{}", tools::percent_encode_component(upid_str));
let _ = client.delete(&path, None).await?;
Ok(Value::Null)
diff --git a/src/bin/proxmox_backup_client/task.rs b/src/bin/proxmox_backup_client/task.rs
index 29b2cc00..6f567f22 100644
--- a/src/bin/proxmox_backup_client/task.rs
+++ b/src/bin/proxmox_backup_client/task.rs
@@ -124,7 +124,7 @@ async fn task_stop(param: Value) -> Result<Value, Error> {
let mut client = connect(&repo)?;
- let path = format!("api2/json/nodes/localhost/tasks/{}", upid_str);
+ let path = format!("api2/json/nodes/localhost/tasks/{}", tools::percent_encode_component(upid_str));
let _ = client.delete(&path, None).await?;
Ok(Value::Null)
diff --git a/src/client/task_log.rs b/src/client/task_log.rs
index 7f16d84d..2e2e4d74 100644
--- a/src/client/task_log.rs
+++ b/src/client/task_log.rs
@@ -2,6 +2,7 @@ use anyhow::{bail, Error};
use serde_json::json;
use super::HttpClient;
+use crate::tools;
pub async fn display_task_log(
client: HttpClient,
@@ -9,7 +10,7 @@ pub async fn display_task_log(
strip_date: bool,
) -> Result<(), Error> {
- let path = format!("api2/json/nodes/localhost/tasks/{}/log", upid_str);
+ let path = format!("api2/json/nodes/localhost/tasks/{}/log", tools::percent_encode_component(upid_str));
let mut start = 1;
let limit = 500;
diff --git a/src/tools.rs b/src/tools.rs
index a9b3378d..08f9d22f 100644
--- a/src/tools.rs
+++ b/src/tools.rs
@@ -12,7 +12,7 @@ use std::path::Path;
use anyhow::{bail, format_err, Error};
use serde_json::Value;
use openssl::hash::{hash, DigestBytes, MessageDigest};
-use percent_encoding::AsciiSet;
+use percent_encoding::{utf8_percent_encode, AsciiSet};
pub use proxmox::tools::fd::Fd;
@@ -289,6 +289,11 @@ pub fn extract_cookie(cookie: &str, cookie_name: &str) -> Option<String> {
None
}
+/// percent encode a url component
+pub fn percent_encode_component(comp: &str) -> String {
+ utf8_percent_encode(comp, percent_encoding::NON_ALPHANUMERIC).to_string()
+}
+
pub fn join(data: &Vec<String>, sep: char) -> String {
let mut list = String::new();
--
2.20.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* [pbs-devel] applied: [PATCH proxmox-backup] fix systemd-encoded upid strings in http client
2020-11-19 9:02 [pbs-devel] [PATCH proxmox-backup] fix systemd-encoded upid strings in http client Dominik Csapak
@ 2020-11-19 10:01 ` Dietmar Maurer
0 siblings, 0 replies; 2+ messages in thread
From: Dietmar Maurer @ 2020-11-19 10:01 UTC (permalink / raw)
To: Proxmox Backup Server development discussion, Dominik Csapak
applied
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-11-19 10:02 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-19 9:02 [pbs-devel] [PATCH proxmox-backup] fix systemd-encoded upid strings in http client Dominik Csapak
2020-11-19 10:01 ` [pbs-devel] applied: " Dietmar Maurer
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal