From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id D7D261FF13B for ; Wed, 11 Mar 2026 11:00:05 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 4E11C1441C; Wed, 11 Mar 2026 11:00:00 +0100 (CET) From: Christian Ebner To: pbs-devel@lists.proxmox.com Subject: [PATCH proxmox{,-backup} v2 0/6] fix #6716: Add support for http proxy configuration for S3 endpoints Date: Wed, 11 Mar 2026 10:59:00 +0100 Message-ID: <20260311095906.202410-1-c.ebner@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1773223127460 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.056 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: 2HKCWRZ5BIZRSXOQZUCMPLE5IEQR4TR4 X-Message-ID-Hash: 2HKCWRZ5BIZRSXOQZUCMPLE5IEQR4TR4 X-MailFrom: c.ebner@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox Backup Server development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: This patch series exposes the nodes proxy config setting to the S3 clients for datastores backed by an S3 object store. To honor crate boundaries, the proxy configuration is not read when instantiating the s3-client via the datastore backend directly, but rather by passing in a callback function on datastore instantiation, allowing to gather the current node proxy whenever a new s3 client connection is being created. To achieve this, the first patches of the series refactor the code so the callback can be passed by wrapping into a convenience helper. Testing was performed by proxying traffic using https://www.mitmproxy.org/ Link to the bugtracker issue: https://bugzilla.proxmox.com/show_bug.cgi?id=6716 Changes since version 1: - rebased onto current master proxmox: Christian Ebner (2): pbs-api-types: make operation non-optional for maintenance-mode check s3-client: add proxy configuration as optional client option pbs-api-types/src/maintenance.rs | 8 +++----- proxmox-s3-client/examples/s3_client.rs | 1 + proxmox-s3-client/src/client.rs | 10 +++++++++- 3 files changed, 13 insertions(+), 6 deletions(-) proxmox-backup: Christian Ebner (4): datastore: make operation non-optional in lookups tools: factor out node proxy config read helper datastore: refactor datastore lookup parameters into dedicated type fix #6716: pass node http proxy config to s3 backend pbs-datastore/src/datastore.rs | 88 +++++++++++++++------ pbs-datastore/src/lib.rs | 2 +- pbs-datastore/src/snapshot_reader.rs | 20 +++-- src/api2/admin/datastore.rs | 58 +++++++------- src/api2/admin/namespace.rs | 9 ++- src/api2/admin/s3.rs | 2 + src/api2/backup/mod.rs | 3 +- src/api2/config/datastore.rs | 16 +++- src/api2/config/s3.rs | 11 ++- src/api2/node/apt.rs | 8 +- src/api2/reader/mod.rs | 3 +- src/api2/status/mod.rs | 6 +- src/api2/tape/backup.rs | 6 +- src/api2/tape/restore.rs | 6 +- src/bin/proxmox-backup-proxy.rs | 8 +- src/server/metric_collection/mod.rs | 2 +- src/server/prune_job.rs | 3 +- src/server/pull.rs | 7 +- src/server/push.rs | 3 +- src/server/verify_job.rs | 3 +- src/tape/pool_writer/new_chunks_iterator.rs | 15 ++-- src/tools/mod.rs | 22 +++++- 22 files changed, 203 insertions(+), 98 deletions(-) Summary over all repositories: 25 files changed, 216 insertions(+), 104 deletions(-) -- Generated by murpp 0.9.0