From: Christian Ebner <c.ebner@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [PATCH proxmox v3 1/2] http: move http proxy schema from PBS to crate's api types
Date: Thu, 12 Mar 2026 12:42:01 +0100 [thread overview]
Message-ID: <20260312114208.514373-2-c.ebner@proxmox.com> (raw)
In-Reply-To: <20260312114208.514373-1-c.ebner@proxmox.com>
The http proxy schema is used in combination with the ProxyConfig for
verification, the latter being part of the crate already.
Move also the schema to the crate and guard it behind a api-types
feature to allow for conditional compilation thereof.
This will easy refactoring the node config in PBS.
Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
---
proxmox-http/Cargo.toml | 2 ++
proxmox-http/debian/control | 18 ++++++++++++++++++
proxmox-http/src/lib.rs | 8 +++++---
proxmox-http/src/proxy_config.rs | 16 ++++++++++++++++
4 files changed, 41 insertions(+), 3 deletions(-)
diff --git a/proxmox-http/Cargo.toml b/proxmox-http/Cargo.toml
index 61a45d1c..f8dde588 100644
--- a/proxmox-http/Cargo.toml
+++ b/proxmox-http/Cargo.toml
@@ -33,6 +33,7 @@ url = { workspace = true, optional = true }
proxmox-async = { workspace = true, optional = true }
proxmox-base64 = { workspace = true, optional = true }
proxmox-rate-limiter = { workspace = true, optional = true, features = [ "rate-limiter" ] }
+proxmox-schema = { workspace = true, optional = true, features = ["api-types"] }
proxmox-sys = { workspace = true, optional = true }
proxmox-io = { workspace = true, optional = true }
proxmox-lang = { workspace = true, optional = true }
@@ -89,6 +90,7 @@ client = [
client-sync = [ "client-trait", "http-helpers", "dep:ureq", "dep:native-tls" ]
client-trait = [ "dep:http" ]
http-helpers = [ "dep:http", "dep:proxmox-base64", "dep:proxmox-sys", "dep:serde_json", "dep:url" ]
+api-types = [ "dep:http", "dep:proxmox-schema", "dep:serde_json", "dep:url" ]
websocket = [
"dep:futures",
"dep:http",
diff --git a/proxmox-http/debian/control b/proxmox-http/debian/control
index 92daac47..b30c3e61 100644
--- a/proxmox-http/debian/control
+++ b/proxmox-http/debian/control
@@ -21,6 +21,7 @@ Depends:
${misc:Depends},
librust-anyhow-1+default-dev
Suggests:
+ librust-proxmox-http+api-types-dev (= ${binary:Version}),
librust-proxmox-http+body-dev (= ${binary:Version}),
librust-proxmox-http+client-dev (= ${binary:Version}),
librust-proxmox-http+client-sync-dev (= ${binary:Version}),
@@ -40,6 +41,23 @@ Provides:
Description: Proxmox HTTP library - Rust source code
Source code for Debianized Rust crate "proxmox-http"
+Package: librust-proxmox-http+api-types-dev
+Architecture: any
+Multi-Arch: same
+Depends:
+ ${misc:Depends},
+ librust-proxmox-http-dev (= ${binary:Version}),
+ librust-http-1+default-dev,
+ librust-proxmox-schema-5+api-types-dev (>= 5.0.1-~~),
+ librust-proxmox-schema-5+default-dev (>= 5.0.1-~~)
+Provides:
+ librust-proxmox-http-1+api-types-dev (= ${binary:Version}),
+ librust-proxmox-http-1.0+api-types-dev (= ${binary:Version}),
+ librust-proxmox-http-1.0.5+api-types-dev (= ${binary:Version})
+Description: Proxmox HTTP library - feature "api-types"
+ This metapackage enables feature "api-types" for the Rust proxmox-http crate,
+ by pulling in any additional dependencies needed by that feature.
+
Package: librust-proxmox-http+body-dev
Architecture: any
Multi-Arch: same
diff --git a/proxmox-http/src/lib.rs b/proxmox-http/src/lib.rs
index 406f5b8b..79caa23e 100644
--- a/proxmox-http/src/lib.rs
+++ b/proxmox-http/src/lib.rs
@@ -5,13 +5,15 @@
#[cfg(feature = "websocket")]
pub mod websocket;
-#[cfg(feature = "http-helpers")]
+#[cfg(any(feature = "http-helpers", feature = "api-types"))]
pub mod uri;
-#[cfg(feature = "http-helpers")]
+#[cfg(any(feature = "http-helpers", feature = "api-types"))]
pub mod proxy_config;
-#[cfg(feature = "http-helpers")]
+#[cfg(any(feature = "http-helpers", feature = "api-types"))]
pub use proxy_config::ProxyConfig;
+#[cfg(feature = "api-types")]
+pub use proxy_config::HTTP_PROXY_SCHEMA;
#[cfg(feature = "http-helpers")]
mod http_options;
diff --git a/proxmox-http/src/proxy_config.rs b/proxmox-http/src/proxy_config.rs
index 7ec68998..8bec3acd 100644
--- a/proxmox-http/src/proxy_config.rs
+++ b/proxmox-http/src/proxy_config.rs
@@ -6,6 +6,9 @@ use anyhow::{bail, format_err, Error};
use http::Uri;
+#[cfg(feature = "api-types")]
+use proxmox_schema::{ApiStringFormat, Schema, StringSchema};
+
use crate::uri::build_authority;
/// HTTP Proxy Configuration
@@ -88,3 +91,16 @@ impl ProxyConfig {
})
}
}
+
+#[cfg(feature = "api-types")]
+/// Schema for the http proxy configuration
+pub const HTTP_PROXY_SCHEMA: Schema =
+ StringSchema::new("HTTP proxy configuration [http://]<host>[:port]")
+ .format(&ApiStringFormat::VerifyFn(|s| {
+ ProxyConfig::parse_proxy_url(s)?;
+ Ok(())
+ }))
+ .min_length(1)
+ .max_length(128)
+ .type_text("[http://]<host>[:port]")
+ .schema();
--
2.47.3
next prev parent reply other threads:[~2026-03-12 11:42 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-12 11:42 [PATCH proxmox{,-backup} v3 0/8] fix #6716: Add support for http proxy configuration for S3 endpoints Christian Ebner
2026-03-12 11:42 ` Christian Ebner [this message]
2026-03-12 11:42 ` [PATCH proxmox v3 2/2] pbs-api-types: move over NodeConfig and related api type from PBS Christian Ebner
2026-03-12 11:42 ` [PATCH proxmox-backup v3 1/6] pbs-config: use http proxy schema moved to proxmox-http crate Christian Ebner
2026-03-12 11:42 ` [PATCH proxmox-backup v3 2/6] config: inline NodeConfig::validate() to its only call side Christian Ebner
2026-03-12 11:42 ` [PATCH proxmox-backup v3 3/6] config: use moved NodeConfig definitions in pbs-api-types Christian Ebner
2026-03-12 11:42 ` [PATCH proxmox-backup v3 4/6] tools: drop unused from_property_string() helper Christian Ebner
2026-03-12 11:42 ` [PATCH proxmox-backup v3 5/6] config: move node config into pbs-config, including helper tools Christian Ebner
2026-03-12 11:42 ` [PATCH proxmox-backup v3 6/6] fix #6716: pass node http proxy config to s3 backend Christian Ebner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260312114208.514373-2-c.ebner@proxmox.com \
--to=c.ebner@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.