From fe456cc2ef4e426931d72492e15524a654b2d382 Mon Sep 17 00:00:00 2001 From: quexeky Date: Sat, 27 Sep 2025 15:47:37 +1000 Subject: [PATCH] chore: Change fetch_certificates function into a result and expect on call Signed-off-by: quexeky --- src-tauri/src/remote/utils.rs | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src-tauri/src/remote/utils.rs b/src-tauri/src/remote/utils.rs index 87de927..6cf575e 100644 --- a/src-tauri/src/remote/utils.rs +++ b/src-tauri/src/remote/utils.rs @@ -1,6 +1,6 @@ use std::{ fs::{self, File}, - io::Read, + io::{self, Read}, sync::{LazyLock, Mutex}, time::Duration, }; @@ -22,33 +22,48 @@ struct DropHealthcheck { app_name: String, } -static DROP_CERT_BUNDLE: LazyLock> = LazyLock::new(fetch_certificates); +static DROP_CERT_BUNDLE: LazyLock> = LazyLock::new(|| { + fetch_certificates().unwrap_or_else(|e| panic!("Failed to fetch certificates with error {}", e)) +}); pub static DROP_CLIENT_SYNC: LazyLock = LazyLock::new(get_client_sync); pub static DROP_CLIENT_ASYNC: LazyLock = LazyLock::new(get_client_async); pub static DROP_CLIENT_WS_CLIENT: LazyLock = LazyLock::new(get_client_ws); -fn fetch_certificates() -> Vec { +fn fetch_certificates() -> Result, io::Error> { let certificate_dir = DATA_ROOT_DIR.join("certificates"); let mut certs = Vec::new(); - match fs::read_dir(certificate_dir) { + match fs::read_dir(&certificate_dir) { Ok(c) => { for entry in c { match entry { Ok(c) => { let mut buf = Vec::new(); - File::open(c.path()).unwrap().read_to_end(&mut buf).unwrap(); + File::open(c.path())?.read_to_end(&mut buf)?; - for cert in Certificate::from_pem_bundle(&buf).unwrap() { + for cert in match Certificate::from_pem_bundle(&buf) { + Ok(certificates) => certificates, + Err(e) => { + warn!("Could not parse pem bundle with error {}. Skipping", e); + continue; + } + } { certs.push(cert); } info!( "added {} certificate(s) from {}", certs.len(), - c.file_name().into_string().unwrap() + c.file_name().display().to_string() ); } - Err(_) => todo!(), + Err(e) => { + warn!( + "Could not open directory entry {} in certificates with error {}", + certificate_dir.display(), + e + ); + continue; + } } } } @@ -56,7 +71,7 @@ fn fetch_certificates() -> Vec { debug!("not loading certificates due to error: {e}"); } }; - certs + Ok(certs) } pub fn get_client_sync() -> reqwest::blocking::Client {