fix systemd-encoded upid strings in http client
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>
This commit is contained in:
parent
21b552848a
commit
968a0ab261
|
@ -245,7 +245,7 @@ async fn task_stop(param: Value) -> Result<Value, Error> {
|
||||||
|
|
||||||
let mut client = connect()?;
|
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?;
|
let _ = client.delete(&path, None).await?;
|
||||||
|
|
||||||
Ok(Value::Null)
|
Ok(Value::Null)
|
||||||
|
|
|
@ -124,7 +124,7 @@ async fn task_stop(param: Value) -> Result<Value, Error> {
|
||||||
|
|
||||||
let mut client = connect(&repo)?;
|
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?;
|
let _ = client.delete(&path, None).await?;
|
||||||
|
|
||||||
Ok(Value::Null)
|
Ok(Value::Null)
|
||||||
|
|
|
@ -2,6 +2,7 @@ use anyhow::{bail, Error};
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
|
|
||||||
use super::HttpClient;
|
use super::HttpClient;
|
||||||
|
use crate::tools;
|
||||||
|
|
||||||
pub async fn display_task_log(
|
pub async fn display_task_log(
|
||||||
client: HttpClient,
|
client: HttpClient,
|
||||||
|
@ -9,7 +10,7 @@ pub async fn display_task_log(
|
||||||
strip_date: bool,
|
strip_date: bool,
|
||||||
) -> Result<(), Error> {
|
) -> 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 mut start = 1;
|
||||||
let limit = 500;
|
let limit = 500;
|
||||||
|
|
|
@ -12,7 +12,7 @@ use std::path::Path;
|
||||||
use anyhow::{bail, format_err, Error};
|
use anyhow::{bail, format_err, Error};
|
||||||
use serde_json::Value;
|
use serde_json::Value;
|
||||||
use openssl::hash::{hash, DigestBytes, MessageDigest};
|
use openssl::hash::{hash, DigestBytes, MessageDigest};
|
||||||
use percent_encoding::AsciiSet;
|
use percent_encoding::{utf8_percent_encode, AsciiSet};
|
||||||
|
|
||||||
pub use proxmox::tools::fd::Fd;
|
pub use proxmox::tools::fd::Fd;
|
||||||
|
|
||||||
|
@ -289,6 +289,11 @@ pub fn extract_cookie(cookie: &str, cookie_name: &str) -> Option<String> {
|
||||||
None
|
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 {
|
pub fn join(data: &Vec<String>, sep: char) -> String {
|
||||||
let mut list = String::new();
|
let mut list = String::new();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue