From 450105b0c3d16dbd9b11fd17a605cbd075fe62c1 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Wed, 29 Sep 2021 14:01:38 +0200 Subject: [PATCH] make pbs_tools::cert not depend on pbs-buildcfg Signed-off-by: Wolfgang Bumiller --- pbs-tools/src/cert.rs | 8 ++------ src/api2/node/status.rs | 3 +-- src/bin/proxmox_backup_manager/cert.rs | 4 +--- src/client_helpers.rs | 3 +-- src/lib.rs | 10 ++++++++++ 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/pbs-tools/src/cert.rs b/pbs-tools/src/cert.rs index cef04fe9..d24850a7 100644 --- a/pbs-tools/src/cert.rs +++ b/pbs-tools/src/cert.rs @@ -1,3 +1,5 @@ +//! Deals with the server's current certificates (proxy.pem). + use std::path::PathBuf; use std::mem::MaybeUninit; @@ -7,8 +9,6 @@ use openssl::x509::{X509, GeneralName}; use openssl::stack::Stack; use openssl::pkey::{Public, PKey}; -use pbs_buildcfg::configdir; - // C type: #[allow(non_camel_case_types)] type ASN1_TIME = ::CType; @@ -40,10 +40,6 @@ fn x509name_to_string(name: &openssl::x509::X509NameRef) -> Result Result { - Self::from_path(PathBuf::from(configdir!("/proxy.pem"))) - } - pub fn from_path(path: PathBuf) -> Result { Self::from_pem(&proxmox::tools::fs::file_get_contents(&path)?) .map_err(|err| format_err!("failed to load certificate from {:?} - {}", path, err)) diff --git a/src/api2/node/status.rs b/src/api2/node/status.rs index 07d641aa..f430c28c 100644 --- a/src/api2/node/status.rs +++ b/src/api2/node/status.rs @@ -8,7 +8,6 @@ use proxmox::sys::linux::procfs; use proxmox::api::{api, ApiMethod, Router, RpcEnvironment, Permission}; -use pbs_tools::cert::CertInfo; use pbs_api_types::{NODE_SCHEMA, NodePowerCommand, PRIV_SYS_AUDIT, PRIV_SYS_POWER_MANAGEMENT}; use crate::api2::types::{ @@ -88,7 +87,7 @@ fn get_status( cpu, wait, info: NodeInformation { - fingerprint: CertInfo::new()?.fingerprint()?, + fingerprint: crate::cert_info()?.fingerprint()?, }, }) } diff --git a/src/bin/proxmox_backup_manager/cert.rs b/src/bin/proxmox_backup_manager/cert.rs index c570572c..24bd9cc6 100644 --- a/src/bin/proxmox_backup_manager/cert.rs +++ b/src/bin/proxmox_backup_manager/cert.rs @@ -2,8 +2,6 @@ use anyhow::{bail, Error}; use proxmox::api::{api, cli::*}; -use pbs_tools::cert::CertInfo; - use proxmox_backup::config; use proxmox_backup::auth_helpers::*; @@ -11,7 +9,7 @@ use proxmox_backup::auth_helpers::*; /// Display node certificate information. fn cert_info() -> Result<(), Error> { - let cert = CertInfo::new()?; + let cert = proxmox_backup::cert_info()?; println!("Subject: {}", cert.subject_name()?); diff --git a/src/client_helpers.rs b/src/client_helpers.rs index d08403f4..18a4b411 100644 --- a/src/client_helpers.rs +++ b/src/client_helpers.rs @@ -2,7 +2,6 @@ use anyhow::Error; use pbs_api_types::{Authid, Userid}; use pbs_client::{HttpClient, HttpClientOptions}; -use pbs_tools::cert::CertInfo; use pbs_tools::ticket::Ticket; use crate::auth_helpers::private_auth_key; @@ -14,7 +13,7 @@ pub fn connect_to_localhost() -> Result { let options = if nix::unistd::Uid::current().is_root() { let auth_key = private_auth_key(); let ticket = Ticket::new("PBS", Userid::root_userid())?.sign(auth_key, None)?; - let fingerprint = CertInfo::new()?.fingerprint()?; + let fingerprint = crate::cert_info()?.fingerprint()?; HttpClientOptions::new_non_interactive(ticket, Some(fingerprint)) } else { HttpClientOptions::new_interactive(None, None) diff --git a/src/lib.rs b/src/lib.rs index fa08b4fa..75661ab8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,6 +3,11 @@ //! The [backup](backup/index.html) module contains some detailed information //! on the inner workings of the backup server regarding data storage. +use std::path::PathBuf; + +use pbs_buildcfg::configdir; +use pbs_tools::cert::CertInfo; + #[macro_use] pub mod tools; @@ -27,3 +32,8 @@ pub mod tape; pub mod acme; pub mod client_helpers; + +/// Get the server's certificate info (from `proxy.pem`). +pub fn cert_info() -> Result { + CertInfo::from_path(PathBuf::from(configdir!("/proxy.pem"))) +}