Mountain/Binary/Build/TlsCommands/
tls_generate_cert.rs1
2use std::sync::{Arc, Mutex};
7
8use tauri::{AppHandle, Manager};
9
10use crate::{
11 Binary::Build::{
12 CertificateManager::{CertificateInfo, CertificateManager},
13 TlsCommands::CertificateGenerationResult::CertificateGenerationResult,
14 },
15 dev_log,
16};
17
18#[tauri::command]
19pub async fn tls_generate_cert(app_handle:AppHandle, hostname:String) -> Result<CertificateGenerationResult, String> {
20 dev_log!("security", "generating certificate for {}", hostname);
21
22 let state = app_handle
23 .try_state::<Arc<Mutex<CertificateManager>>>()
24 .ok_or("Certificate manager not found")?;
25
26 let cert_manager = state.clone();
27
28 let manager = cert_manager.lock().map_err(|e| format!("Failed to acquire lock: {}", e))?;
29
30 let hostname_clone = hostname.clone();
31
32 let _server_config = manager
33 .get_server_cert(&hostname)
34 .await
35 .map_err(|e| format!("Failed to generate certificate: {}", e))?;
36
37 let cert_info:CertificateInfo = manager
38 .get_server_cert_info(&hostname)
39 .ok_or_else(|| "Certificate not found after generation".to_string())?;
40
41 Ok(CertificateGenerationResult {
42 hostname:hostname_clone,
43 success:true,
44 valid_until:cert_info.valid_until,
45 message:format!("Certificate generated successfully for {}", hostname),
46 })
47}