From: Christian Ebner <c.ebner@proxmox.com>
To: pdm-devel@lists.proxmox.com
Subject: [pdm-devel] [PATCH datacenter-manager 1/6] server: api: add TLS probe endpoint for PBS
Date: Mon, 22 Sep 2025 13:09:53 +0200 [thread overview]
Message-ID: <20250922110958.369653-2-c.ebner@proxmox.com> (raw)
In-Reply-To: <20250922110958.369653-1-c.ebner@proxmox.com>
Analogous to the TLS probe implementation of PVE, add and api
endpoint allowing to probe the PBS hosts TLS certificate so this can
be checked by the remote add wizard.
Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
---
server/src/api/pbs/mod.rs | 42 +++++++++++++++++++++++++++++++++++----
1 file changed, 38 insertions(+), 4 deletions(-)
diff --git a/server/src/api/pbs/mod.rs b/server/src/api/pbs/mod.rs
index a31481e..0ca97cd 100644
--- a/server/src/api/pbs/mod.rs
+++ b/server/src/api/pbs/mod.rs
@@ -5,11 +5,11 @@ use proxmox_router::{list_subdirs_api_method, Permission, Router, SubdirMap};
use proxmox_schema::api;
use proxmox_sortable_macro::sortable;
-use pdm_api_types::remotes::REMOTE_ID_SCHEMA;
-use pdm_api_types::PRIV_RESOURCE_AUDIT;
+use pdm_api_types::remotes::{RemoteType, TlsProbeOutcome, REMOTE_ID_SCHEMA};
+use pdm_api_types::{HOST_OPTIONAL_PORT_FORMAT, PRIV_RESOURCE_AUDIT, PRIV_SYS_MODIFY};
use crate::{
- connection,
+ connection::{self, probe_tls_connection},
pbs_client::{self, get_remote},
};
@@ -20,7 +20,10 @@ pub const ROUTER: Router = Router::new()
.subdirs(SUBDIRS);
#[sortable]
-const SUBDIRS: SubdirMap = &sorted!([("remotes", &REMOTES_ROUTER)]);
+const SUBDIRS: SubdirMap = &sorted!([
+ ("remotes", &REMOTES_ROUTER),
+ ("probe-tls", &Router::new().post(&API_METHOD_PROBE_TLS)),
+]);
const REMOTES_ROUTER: Router = Router::new().match_all("remote", &MAIN_ROUTER);
@@ -112,3 +115,34 @@ async fn list_snapshots_2(
}
.into())
}
+
+#[api(
+ input: {
+ properties: {
+ hostname: {
+ type: String,
+ format: &HOST_OPTIONAL_PORT_FORMAT,
+ description: "Hostname (with optional port) of the target remote",
+ },
+ fingerprint: {
+ type: String,
+ description: "Fingerprint of the target remote.",
+ optional: true,
+ },
+ },
+ },
+ access: {
+ permission:
+ &Permission::Privilege(&["/"], PRIV_SYS_MODIFY, false),
+ },
+)]
+/// Probe the hosts TLS certificate.
+///
+/// If the certificate is not trusted with the given parameters, returns the certificate
+/// information.
+async fn probe_tls(
+ hostname: String,
+ fingerprint: Option<String>,
+) -> Result<TlsProbeOutcome, Error> {
+ probe_tls_connection(RemoteType::Pbs, hostname, fingerprint).await
+}
--
2.47.3
_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel
next prev parent reply other threads:[~2025-09-22 11:10 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-22 11:09 [pdm-devel] [PATCH datacenter-manager 0/6] ui/api: implement and expose adding PBS remotes via the ui wizard Christian Ebner
2025-09-22 11:09 ` Christian Ebner [this message]
2025-09-22 11:09 ` [pdm-devel] [PATCH datacenter-manager 2/6] pdm-client: add method to probe TLS connection for PBS remotes Christian Ebner
2025-09-22 11:09 ` [pdm-devel] [PATCH datacenter-manager 3/6] server: api: implement endpoint to scan remote PBS instances Christian Ebner
2025-09-22 11:09 ` [pdm-devel] [PATCH datacenter-manager 4/6] pdm client: add method " Christian Ebner
2025-09-22 11:09 ` [pdm-devel] [PATCH datacenter-manager 5/6] ui: remote: check connection for PBS remotes in remote add wizard Christian Ebner
2025-09-22 11:09 ` [pdm-devel] [PATCH datacenter-manager 6/6] ui: reorganize remote add button as dropdown menu to allow adding PBS Christian Ebner
2025-09-22 12:50 ` [pdm-devel] [PATCH datacenter-manager 0/6] ui/api: implement and expose adding PBS remotes via the ui wizard Lukas Wagner
2025-09-22 12:56 ` 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=20250922110958.369653-2-c.ebner@proxmox.com \
--to=c.ebner@proxmox.com \
--cc=pdm-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.