use crate::api::{ models::{Boot, Rescue}, Client, }; use rhai::{plugin::*, Engine}; pub fn register(engine: &mut Engine) { let boot_module = exported_module!(boot_api); engine.register_global_module(boot_module.into()); } #[export_module] pub mod boot_api { use super::*; use rhai::EvalAltResult; #[rhai_fn(name = "get_boot_configuration", return_raw)] pub fn get_boot_configuration( client: &mut Client, server_number: i64, ) -> Result> { client .get_boot_configuration(server_number as i32) .map_err(|e| e.to_string().into()) } #[rhai_fn(name = "get_rescue_boot_configuration", return_raw)] pub fn get_rescue_boot_configuration( client: &mut Client, server_number: i64, ) -> Result> { client .get_rescue_boot_configuration(server_number as i32) .map_err(|e| e.to_string().into()) } #[rhai_fn(name = "enable_rescue_mode", return_raw)] pub fn enable_rescue_mode( client: &mut Client, server_number: i64, os: &str, authorized_keys: rhai::Array, ) -> Result> { let keys: Vec = authorized_keys .into_iter() .map(|k| k.into_string().unwrap()) .collect(); client .enable_rescue_mode(server_number as i32, os, Some(&keys)) .map_err(|e| e.to_string().into()) } #[rhai_fn(name = "disable_rescue_mode", return_raw)] pub fn disable_rescue_mode( client: &mut Client, server_number: i64, ) -> Result> { client .disable_rescue_mode(server_number as i32) .map_err(|e| e.to_string().into()) } }