From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 92213DD93 for ; Mon, 17 Jul 2023 17:01:56 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id D3CF1F81E for ; Mon, 17 Jul 2023 17:01:23 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Mon, 17 Jul 2023 17:01:22 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id D5FC842BAD for ; Mon, 17 Jul 2023 17:01:19 +0200 (CEST) From: Lukas Wagner To: pve-devel@lists.proxmox.com Date: Mon, 17 Jul 2023 17:00:16 +0200 Message-Id: <20230717150051.710464-32-l.wagner@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230717150051.710464-1-l.wagner@proxmox.com> References: <20230717150051.710464-1-l.wagner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.128 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 T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pve-devel] [PATCH v3 proxmox-perl-rs 31/66] notify: implement context for getting default author/mailfrom X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Jul 2023 15:01:56 -0000 Signed-off-by: Lukas Wagner --- pve-rs/src/notify.rs | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/pve-rs/src/notify.rs b/pve-rs/src/notify.rs index ea34bfe..04e902c 100644 --- a/pve-rs/src/notify.rs +++ b/pve-rs/src/notify.rs @@ -34,6 +34,14 @@ fn lookup_mail_address(content: &str, user: &str) -> Option { })) } +fn lookup_datacenter_config_key(content: &str, key: &str) -> Option { + normalize_for_return( + content + .lines() + .find_map(|line| line.strip_prefix(&format!("{key}:"))), + ) +} + struct PVEContext; impl Context for PVEContext { @@ -41,11 +49,22 @@ impl Context for PVEContext { let content = attempt_file_read("/etc/pve/user.cfg"); content.and_then(|content| lookup_mail_address(&content, user)) } + + fn default_sendmail_author(&self) -> String { + "Proxmox VE".into() + } + + fn default_sendmail_from(&self) -> String { + let content = attempt_file_read("/etc/pve/datacenter.cfg"); + content + .and_then(|content| lookup_datacenter_config_key(&content, "mail_from")) + .unwrap_or_else(|| String::from("root")) + } } #[cfg(test)] mod tests { - use crate::notify::lookup_mail_address; + use crate::notify::{lookup_datacenter_config_key, lookup_mail_address}; const USER_CONFIG: &str = " user:root@pam:1:0:::root@example.com::: @@ -65,6 +84,18 @@ user:no-mail@pve:1:0:::::: ); assert_eq!(lookup_mail_address(USER_CONFIG, "no-mail@pve"), None); } + + const DC_CONFIG: &str = " +email_from: user@example.com +keyboard: en-us +"; + #[test] + fn test_parse_dc_config() { + assert_eq!( + lookup_datacenter_config_key(DC_CONFIG, "email_from"), + Some("user@example.com".to_string()) + ); + } } static CONTEXT: PVEContext = PVEContext; -- 2.39.2