use crate::secureboot::{self, models::SecureBootAnalysisResult, rules, scanner, scripts, stage};
#[tauri::command]
pub fn analyze_secureboot(
path: Option<String>,
) -> Result<SecureBootAnalysisResult, crate::error::AppError> {
log::info!(
"event=secureboot_analyze path={:?}",
path.as_deref().unwrap_or("<live scan>")
);
secureboot::analyze(path.as_deref())
}
#[tauri::command]
pub fn rescan_secureboot() -> Result<SecureBootAnalysisResult, crate::error::AppError> {
log::info!("event=secureboot_rescan");
let scan_state = scanner::scan_device()?;
let stage = stage::determine_stage(&scan_state);
let diagnostics = rules::evaluate_all(&scan_state, stage, &[]);
Ok(SecureBootAnalysisResult {
stage,
data_source: crate::secureboot::models::DataSource::LiveScan,
scan_state,
sessions: vec![],
timeline: vec![],
diagnostics,
script_result: None,
})
}
#[tauri::command]
pub fn run_secureboot_detection() -> Result<SecureBootAnalysisResult, crate::error::AppError> {
log::info!("event=secureboot_run_detection");
let script_result = scripts::run_detection()?;
let mut result = secureboot::analyze(None)?;
result.script_result = Some(script_result);
Ok(result)
}
#[tauri::command]
pub fn run_secureboot_remediation() -> Result<SecureBootAnalysisResult, crate::error::AppError> {
log::info!("event=secureboot_run_remediation");
let script_result = scripts::run_remediation()?;
let mut result = secureboot::analyze(None)?;
result.script_result = Some(script_result);
Ok(result)
}