Compare commits

...

4 Commits

3 changed files with 35 additions and 9 deletions

View File

@ -486,6 +486,9 @@ fn run_on_tray<T: FnOnce()>(f: T) {
if match std::env::var("NO_TRAY_ICON") { if match std::env::var("NO_TRAY_ICON") {
Ok(s) => s.to_lowercase() != "true", Ok(s) => s.to_lowercase() != "true",
Err(_) => true, Err(_) => true,
} || match option_env!("NO_TRAY_ICON") {
Some(s) => s.to_lowercase() != "true",
None => true,
} { } {
(f)(); (f)();
} }

View File

@ -1,6 +1,6 @@
use std::{ use std::{
fs::{self, File}, fs::{self, File},
io::Read, io::{self, Read},
sync::{LazyLock, Mutex}, sync::{LazyLock, Mutex},
time::Duration, time::Duration,
}; };
@ -22,33 +22,48 @@ struct DropHealthcheck {
app_name: String, app_name: String,
} }
static DROP_CERT_BUNDLE: LazyLock<Vec<Certificate>> = LazyLock::new(fetch_certificates); static DROP_CERT_BUNDLE: LazyLock<Vec<Certificate>> = LazyLock::new(|| {
fetch_certificates().unwrap_or_else(|e| panic!("Failed to fetch certificates with error {}", e))
});
pub static DROP_CLIENT_SYNC: LazyLock<reqwest::blocking::Client> = LazyLock::new(get_client_sync); pub static DROP_CLIENT_SYNC: LazyLock<reqwest::blocking::Client> = LazyLock::new(get_client_sync);
pub static DROP_CLIENT_ASYNC: LazyLock<reqwest::Client> = LazyLock::new(get_client_async); pub static DROP_CLIENT_ASYNC: LazyLock<reqwest::Client> = LazyLock::new(get_client_async);
pub static DROP_CLIENT_WS_CLIENT: LazyLock<reqwest::Client> = LazyLock::new(get_client_ws); pub static DROP_CLIENT_WS_CLIENT: LazyLock<reqwest::Client> = LazyLock::new(get_client_ws);
fn fetch_certificates() -> Vec<Certificate> { fn fetch_certificates() -> Result<Vec<Certificate>, io::Error> {
let certificate_dir = DATA_ROOT_DIR.join("certificates"); let certificate_dir = DATA_ROOT_DIR.join("certificates");
let mut certs = Vec::new(); let mut certs = Vec::new();
match fs::read_dir(certificate_dir) { match fs::read_dir(&certificate_dir) {
Ok(c) => { Ok(c) => {
for entry in c { for entry in c {
match entry { match entry {
Ok(c) => { Ok(c) => {
let mut buf = Vec::new(); 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); certs.push(cert);
} }
info!( info!(
"added {} certificate(s) from {}", "added {} certificate(s) from {}",
certs.len(), 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<Certificate> {
debug!("not loading certificates due to error: {e}"); debug!("not loading certificates due to error: {e}");
} }
}; };
certs Ok(certs)
} }
pub fn get_client_sync() -> reqwest::blocking::Client { pub fn get_client_sync() -> reqwest::blocking::Client {

View File

@ -38,6 +38,14 @@
}, },
"wix": null "wix": null
}, },
"linux": {
"appimage": {
"bundleMediaFramework": false,
"files": {
"/usr/lib/libayatana-appindicator3.so.1": "/usr/lib/libayatana-appindicator3.so.1"
}
}
},
"icon": [ "icon": [
"icons/32x32.png", "icons/32x32.png",
"icons/128x128.png", "icons/128x128.png",