* [PATCH proxmox 1/3] s3-client: add flag to opt-in for using node proxy for connections
2026-05-11 15:19 [PATCH proxmox{,-backup} 0/3] add flag to opt-in using node proxy config for s3 connections Christian Ebner
@ 2026-05-11 15:19 ` Christian Ebner
2026-05-11 15:19 ` [PATCH proxmox-backup 2/3] api: config: allow editing the use-node-config flag for s3 endpoints Christian Ebner
2026-05-11 15:19 ` [PATCH proxmox-backup 3/3] ui: add opt-in flag for using the node proxy config for s3 connections Christian Ebner
2 siblings, 0 replies; 4+ messages in thread
From: Christian Ebner @ 2026-05-11 15:19 UTC (permalink / raw)
To: pbs-devel
So users can avoid using the node proxy config as introduced by
commit fbf8d1b25 ("fix #6716: pass node http proxy config to s3
backend").
Default to false, as this is the originally intended behaviour.
Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
---
proxmox-s3-client/src/api_types.rs | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/proxmox-s3-client/src/api_types.rs b/proxmox-s3-client/src/api_types.rs
index 217bee11..e860a8d9 100644
--- a/proxmox-s3-client/src/api_types.rs
+++ b/proxmox-s3-client/src/api_types.rs
@@ -145,6 +145,11 @@ serde_plain::derive_fromstr_from_deserialize!(ProviderQuirks);
type: HumanByte,
optional: true,
},
+ "use-node-proxy": {
+ type: bool,
+ optional: true,
+ default: false,
+ },
},
)]
#[derive(Serialize, Deserialize, Updater, Clone, PartialEq)]
@@ -185,6 +190,9 @@ pub struct S3ClientConfig {
/// Upload burst
#[serde(skip_serializing_if = "Option::is_none")]
pub burst_out: Option<HumanByte>,
+ /// Use node proxy for client connections
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub use_node_proxy: Option<bool>,
}
impl S3ClientConfig {
--
2.47.3
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH proxmox-backup 2/3] api: config: allow editing the use-node-config flag for s3 endpoints
2026-05-11 15:19 [PATCH proxmox{,-backup} 0/3] add flag to opt-in using node proxy config for s3 connections Christian Ebner
2026-05-11 15:19 ` [PATCH proxmox 1/3] s3-client: add flag to opt-in for using node proxy for connections Christian Ebner
@ 2026-05-11 15:19 ` Christian Ebner
2026-05-11 15:19 ` [PATCH proxmox-backup 3/3] ui: add opt-in flag for using the node proxy config for s3 connections Christian Ebner
2 siblings, 0 replies; 4+ messages in thread
From: Christian Ebner @ 2026-05-11 15:19 UTC (permalink / raw)
To: pbs-devel
Since commit fbf8d1b25 ("fix #6716: pass node http proxy config to s3
backend") the node config is used unconditionally also for S3 API
connections.
This is however not always wanted, therefore add an s3 endpoint
config flag to explicitley opt-in to this behaviour.
Fixes: https://forum.proxmox.com/threads/183436/
Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
---
pbs-datastore/src/datastore.rs | 14 ++++++++++++--
src/api2/admin/s3.rs | 8 +++++++-
src/api2/config/s3.rs | 16 +++++++++++++++-
3 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/pbs-datastore/src/datastore.rs b/pbs-datastore/src/datastore.rs
index 34efcd398..38d0d421c 100644
--- a/pbs-datastore/src/datastore.rs
+++ b/pbs-datastore/src/datastore.rs
@@ -494,6 +494,11 @@ impl DataStore {
user: pbs_config::backup_user()?,
base_path: S3_CLIENT_REQUEST_COUNTER_BASE_PATH.into(),
};
+ let http_proxy = if config.config.use_node_proxy.unwrap_or(false) {
+ pbs_config::node::node_http_proxy_config()?
+ } else {
+ None
+ };
let mut options = S3ClientOptions::from_config(
config.config,
@@ -501,7 +506,7 @@ impl DataStore {
Some(bucket),
self.name().to_owned(),
Some(rate_limiter_options),
- pbs_config::node::node_http_proxy_config()?,
+ http_proxy,
Some(request_counter_config),
);
if let Some(notify) = self.inner.thresholds_exceeded_callback {
@@ -3349,6 +3354,11 @@ impl DataStore {
user: pbs_config::backup_user()?,
base_path: S3_CLIENT_REQUEST_COUNTER_BASE_PATH.into(),
};
+ let http_proxy = if client_config.config.use_node_proxy.unwrap_or(false) {
+ pbs_config::node::node_http_proxy_config()?
+ } else {
+ None
+ };
let options = S3ClientOptions::from_config(
client_config.config,
@@ -3356,7 +3366,7 @@ impl DataStore {
Some(bucket),
datastore_config.name.to_owned(),
Some(rate_limiter_options),
- pbs_config::node::node_http_proxy_config()?,
+ http_proxy,
Some(request_counter_config),
);
let s3_client = S3Client::new(options)
diff --git a/src/api2/admin/s3.rs b/src/api2/admin/s3.rs
index 0cc163eb6..d6cc9fb30 100644
--- a/src/api2/admin/s3.rs
+++ b/src/api2/admin/s3.rs
@@ -63,6 +63,12 @@ pub async fn check(
base_path: S3_CLIENT_REQUEST_COUNTER_BASE_PATH.into(),
};
+ let http_proxy = if config.config.use_node_proxy.unwrap_or(false) {
+ pbs_config::node::node_http_proxy_config()?
+ } else {
+ None
+ };
+
let store_prefix = store_prefix.unwrap_or_default();
let options = S3ClientOptions::from_config(
config.config,
@@ -70,7 +76,7 @@ pub async fn check(
Some(bucket),
store_prefix,
None,
- pbs_config::node::node_http_proxy_config()?,
+ http_proxy,
Some(request_counter_config),
);
diff --git a/src/api2/config/s3.rs b/src/api2/config/s3.rs
index 6f5a4cea1..1355b2dff 100644
--- a/src/api2/config/s3.rs
+++ b/src/api2/config/s3.rs
@@ -149,6 +149,8 @@ pub enum DeletableProperty {
BurstOut,
/// Delete the provider quirks property.
ProviderQuirks,
+ /// Delete the use-node-proxy property.
+ UseNodeProxy,
}
#[api(
@@ -233,6 +235,9 @@ pub fn update_s3_client_config(
DeletableProperty::ProviderQuirks => {
data.config.provider_quirks = None;
}
+ DeletableProperty::UseNodeProxy => {
+ data.config.use_node_proxy = None;
+ }
}
}
}
@@ -270,6 +275,9 @@ pub fn update_s3_client_config(
if let Some(provider_quirks) = update.provider_quirks {
data.config.provider_quirks = Some(provider_quirks);
}
+ if let Some(use_node_proxy) = update.use_node_proxy {
+ data.config.use_node_proxy = Some(use_node_proxy);
+ }
if let Some(secret_key) = secret_key {
data.secret_key = secret_key;
@@ -349,13 +357,19 @@ pub async fn list_buckets(
user: pbs_config::backup_user()?,
base_path: S3_CLIENT_REQUEST_COUNTER_BASE_PATH.into(),
};
+ let http_proxy = if config.config.use_node_proxy.unwrap_or(false) {
+ pbs_config::node::node_http_proxy_config()?
+ } else {
+ None
+ };
+
let options = S3ClientOptions::from_config(
config.config,
config.secret_key,
None,
empty_prefix,
None,
- pbs_config::node::node_http_proxy_config()?,
+ http_proxy,
Some(request_counter_config),
);
let client = S3Client::new(options).context("client creation failed")?;
--
2.47.3
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH proxmox-backup 3/3] ui: add opt-in flag for using the node proxy config for s3 connections
2026-05-11 15:19 [PATCH proxmox{,-backup} 0/3] add flag to opt-in using node proxy config for s3 connections Christian Ebner
2026-05-11 15:19 ` [PATCH proxmox 1/3] s3-client: add flag to opt-in for using node proxy for connections Christian Ebner
2026-05-11 15:19 ` [PATCH proxmox-backup 2/3] api: config: allow editing the use-node-config flag for s3 endpoints Christian Ebner
@ 2026-05-11 15:19 ` Christian Ebner
2 siblings, 0 replies; 4+ messages in thread
From: Christian Ebner @ 2026-05-11 15:19 UTC (permalink / raw)
To: pbs-devel
Allows to opt-in for using the node proxy config for S3 API
connections in the S3 endpoint edit window.
Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
---
www/window/S3ClientEdit.js | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/www/window/S3ClientEdit.js b/www/window/S3ClientEdit.js
index c7e8ade1f..0e3e283f5 100644
--- a/www/window/S3ClientEdit.js
+++ b/www/window/S3ClientEdit.js
@@ -135,6 +135,19 @@ Ext.define('PBS.window.S3ClientEdit', {
emptyText: gettext('Unlimited'),
submitAutoScaledSizeUnit: true,
},
+ {
+ xtype: 'proxmoxcheckbox',
+ fieldLabel: gettext('Use node proxy'),
+ name: 'use-node-proxy',
+ autoEl: {
+ tag: 'div',
+ 'data-qtip': gettext(
+ "Use the node's http proxy configuration for S3 client API connections.",
+ ),
+ },
+ uncheckedValue: false,
+ value: false,
+ },
],
advancedColumn2: [
{
--
2.47.3
^ permalink raw reply related [flat|nested] 4+ messages in thread