tuwunel_admin/debug/
sign_json.rs1use tuwunel_core::{Err, Result, err, utils::math::Expected};
2
3use crate::admin_command;
4
5#[admin_command]
6pub(super) async fn sign_json(&self) -> Result {
7 if self.body.len() < 2
8 || !self.body[0].trim().starts_with("```")
9 || self.body.last().unwrap_or(&"").trim() != "```"
10 {
11 return Err!("Expected code block in command body. Add --help for details.");
12 }
13
14 let string = self.body[1..self.body.len().expected_sub(1)].join("\n");
15 let mut value = serde_json::from_str(&string).map_err(|e| err!("Invalid json: {e}"))?;
16
17 self.services.server_keys.sign_json(&mut value)?;
18
19 let json_text = serde_json::to_string_pretty(&value)?;
20 self.write_str(&json_text).await
21}