Skip to main content

Mountain/Binary/Build/TlsCommands/
tls_renew_certificate.rs

1#![allow(non_snake_case)]
2
3//! `tls_renew_certificate` Tauri command - regenerates the
4//! cached server cert for `hostname`.
5//!
6//! TODO: the inner `Mutex` should become `tokio::sync::Mutex`
7//! so the lock can be held across `await`; the renewal call is
8//! currently fire-and-forget.
9
10use std::sync::{Arc, Mutex};
11
12use tauri::{AppHandle, Manager};
13
14use crate::{Binary::Build::CertificateManager::CertificateManager, dev_log};
15
16#[tauri::command]
17pub async fn tls_renew_certificate(app_handle:AppHandle, hostname:String) -> Result<String, String> {
18	dev_log!("security", "renewing certificate for {}", hostname);
19
20	let state = app_handle
21		.try_state::<Arc<Mutex<CertificateManager>>>()
22		.ok_or("Certificate manager not found")?;
23	let cert_manager = state.clone();
24
25	{
26		let mut manager = cert_manager.lock().map_err(|e| format!("Failed to acquire lock: {}", e))?;
27		let _result = manager.renew_certificate(&hostname);
28	}
29
30	Ok(format!("Certificate renewed for {}", hostname))
31}