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 47F67F0B7 for ; Thu, 20 Jul 2023 16:33:42 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 0288714C63 for ; Thu, 20 Jul 2023 16:33:29 +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 ; Thu, 20 Jul 2023 16:33:27 +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 CA42841EF8 for ; Thu, 20 Jul 2023 16:33:08 +0200 (CEST) From: Lukas Wagner To: pve-devel@lists.proxmox.com Date: Thu, 20 Jul 2023 16:32:00 +0200 Message-Id: <20230720143236.652292-34-l.wagner@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230720143236.652292-1-l.wagner@proxmox.com> References: <20230720143236.652292-1-l.wagner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pve-devel] [PATCH v4 proxmox-perl-rs 33/69] 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: Thu, 20 Jul 2023 14:33:42 -0000 Signed-off-by: Lukas Wagner --- Notes: Changes since v3: - lookup_datacenter_config_key: move string formatting outside the loop pve-rs/src/notify.rs | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/pve-rs/src/notify.rs b/pve-rs/src/notify.rs index 8def064..5fc11b2 100644 --- a/pve-rs/src/notify.rs +++ b/pve-rs/src/notify.rs @@ -34,6 +34,15 @@ fn lookup_mail_address(content: &str, user: &str) -> Option { })) } +fn lookup_datacenter_config_key(content: &str, key: &str) -> Option { + let key_prefix = format!("{key}:"); + normalize_for_return( + content + .lines() + .find_map(|line| line.strip_prefix(&key_prefix)), + ) +} + #[derive(Debug)] struct PVEContext; @@ -42,11 +51,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::: @@ -66,6 +86,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