63 lines
1.8 KiB
Rust
63 lines
1.8 KiB
Rust
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<Boot, Box<EvalAltResult>> {
|
|
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<Rescue, Box<EvalAltResult>> {
|
|
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<Rescue, Box<EvalAltResult>> {
|
|
let keys: Vec<String> = 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<Rescue, Box<EvalAltResult>> {
|
|
client
|
|
.disable_rescue_mode(server_number as i32)
|
|
.map_err(|e| e.to_string().into())
|
|
}
|
|
} |