public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
To: Christian Ebner <c.ebner@proxmox.com>
Cc: pbs-devel@lists.proxmox.com
Subject: Re: [PATCH proxmox v3 1/2] http: move http proxy schema from PBS to crate's api types
Date: Tue, 24 Mar 2026 16:26:06 +0100	[thread overview]
Message-ID: <3hjhlavwqmpqrv5s4lofq2vtdtu7e6gvlcwie5sght6l3xtccu@k3ddseqa3n3w> (raw)
In-Reply-To: <20260312114208.514373-2-c.ebner@proxmox.com>

On Thu, Mar 12, 2026 at 12:42:01PM +0100, Christian Ebner wrote:
> 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"] }

You don't seem to be using the `api-types` feature of `proxmox-schema`.

>  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




  reply	other threads:[~2026-03-24 15:26 UTC|newest]

Thread overview: 13+ 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 ` [PATCH proxmox v3 1/2] http: move http proxy schema from PBS to crate's api types Christian Ebner
2026-03-24 15:26   ` Wolfgang Bumiller [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-23 14:44   ` Fabian Grünbichler
2026-03-12 11:42 ` [PATCH proxmox-backup v3 6/6] fix #6716: pass node http proxy config to s3 backend Christian Ebner
2026-03-23 14:44 ` [PATCH proxmox{,-backup} v3 0/8] fix #6716: Add support for http proxy configuration for S3 endpoints Fabian Grünbichler
2026-03-27 12:14 ` superseded: " 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=3hjhlavwqmpqrv5s4lofq2vtdtu7e6gvlcwie5sght6l3xtccu@k3ddseqa3n3w \
    --to=w.bumiller@proxmox.com \
    --cc=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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal