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 B86311FF38C for ; Thu, 16 May 2024 18:25:32 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 3F140410C; Thu, 16 May 2024 18:25:44 +0200 (CEST) From: Gabriel Goller To: pbs-devel@lists.proxmox.com Date: Thu, 16 May 2024 18:24:58 +0200 Message-ID: <20240516162508.327472-2-g.goller@proxmox.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240516162508.327472-1-g.goller@proxmox.com> References: <20240516162508.327472-1-g.goller@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.072 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 Subject: [pbs-devel] [PATCH proxmox-backup 1/4] api: add consent api handler and config X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" Add config function to retrieve consent from file and api handler to serve it via the http. Signed-off-by: Gabriel Goller --- src/api2/access/consent.rs | 25 +++++++++++++++++++++++++ src/api2/access/mod.rs | 2 ++ src/config/consent.rs | 11 +++++++++++ src/config/mod.rs | 1 + 4 files changed, 39 insertions(+) create mode 100644 src/api2/access/consent.rs create mode 100644 src/config/consent.rs diff --git a/src/api2/access/consent.rs b/src/api2/access/consent.rs new file mode 100644 index 00000000..c8cb89c3 --- /dev/null +++ b/src/api2/access/consent.rs @@ -0,0 +1,25 @@ +use anyhow::Error; +use proxmox_router::http_bail; +use proxmox_router::{Permission, Router}; +use proxmox_schema::api; + +pub(crate) const ROUTER: Router = Router::new().get(&API_METHOD_GET_CONSENT); + +#[api( + returns: { + type: String, + description: "Consent banner text.", + }, + access: { + description: "Anyone can access this, because we need to display the consent box before the user is logged in.", + permission: &Permission::World, + } +)] +/// Get consent banner text. +pub fn get_consent() -> Result { + let consent = crate::config::consent::config()?; + if consent.trim().is_empty() { + http_bail!(NO_CONTENT, "No consent banner exists.") + } + Ok(consent) +} diff --git a/src/api2/access/mod.rs b/src/api2/access/mod.rs index 15509fd9..44e67602 100644 --- a/src/api2/access/mod.rs +++ b/src/api2/access/mod.rs @@ -20,6 +20,7 @@ use pbs_config::acl::AclTreeNode; use pbs_config::CachedUserInfo; pub mod acl; +pub mod consent; pub mod domain; pub mod openid; pub mod role; @@ -275,6 +276,7 @@ const SUBDIRS: SubdirMap = &sorted!([ ("roles", &role::ROUTER), ("users", &user::ROUTER), ("tfa", &tfa::ROUTER), + ("consent", &consent::ROUTER), ]); pub const ROUTER: Router = Router::new() diff --git a/src/config/consent.rs b/src/config/consent.rs new file mode 100644 index 00000000..55ef201c --- /dev/null +++ b/src/config/consent.rs @@ -0,0 +1,11 @@ +use anyhow::Error; + +use pbs_buildcfg::configdir; + +const CONF_FILE: &str = configdir!("/consent.txt"); + +/// Read the Consent config. +pub fn config() -> Result { + let content = proxmox_sys::fs::file_read_optional_string(CONF_FILE)?.unwrap_or_default(); + Ok(content) +} diff --git a/src/config/mod.rs b/src/config/mod.rs index 324fabca..81caf0d5 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -15,6 +15,7 @@ use proxmox_lang::try_block; use pbs_buildcfg::{self, configdir}; pub mod acme; +pub mod consent; pub mod node; pub mod tfa; -- 2.43.0 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel