feat: stub agent file structure

This commit is contained in:
GW_MC
2026-03-03 04:34:06 +00:00
parent 8f213c19c8
commit 9ac5a82c29
29 changed files with 892 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
//! Nginx configuration renderer
use handlebars::Handlebars;
use serde_json::json;
/// Configuration renderer
pub struct ConfigRenderer {
handlebars: Handlebars<'static>,
}
impl ConfigRenderer {
/// Create a new config renderer
pub fn new() -> Self {
let mut handlebars = Handlebars::new();
// Register built-in templates
Self::register_templates(&mut handlebars);
Self { handlebars }
}
/// Register built-in templates
fn register_templates(handlebars: &mut Handlebars) {
// Default reverse proxy template
handlebars.register_template_string("default", include_str!("templates/default.hbs")).ok();
}
/// Render configuration
pub fn render(&self, template_name: &str, data: &serde_json::Value) -> Result<String, Box<dyn std::error::Error>> {
let rendered = self.handlebars.render(template_name, data)?;
Ok(rendered)
}
/// Render virtual host
pub fn render_virtual_host(&self, vh: &nxmesh_core::models::VirtualHost) -> Result<String, Box<dyn std::error::Error>> {
let data = json!({
"server_name": vh.server_name,
"listen_port": vh.listen_port,
"ssl_enabled": vh.ssl_enabled,
"locations": vh.locations,
});
self.render("default", &data)
}
}
impl Default for ConfigRenderer {
fn default() -> Self {
Self::new()
}
}