ksud: Add support for module webui
This commit is contained in:
27
userspace/ksud/src/server.rs
Normal file
27
userspace/ksud/src/server.rs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
use anyhow::Result;
|
||||||
|
use axum::Router;
|
||||||
|
use std::net::SocketAddr;
|
||||||
|
use std::path::Path;
|
||||||
|
use tower_http::services::ServeDir;
|
||||||
|
|
||||||
|
use crate::defs;
|
||||||
|
|
||||||
|
async fn serve(dir: impl AsRef<Path>, port: u16) {
|
||||||
|
let app = Router::new().nest_service("/", ServeDir::new(dir));
|
||||||
|
let addr = SocketAddr::from(([127, 0, 0, 1], port));
|
||||||
|
let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
|
||||||
|
axum::serve(listener, app).await.unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn serve_module(id: &str, port: u16) -> Result<()> {
|
||||||
|
let module_dir = std::path::PathBuf::from(defs::MODULE_DIR)
|
||||||
|
.join(id)
|
||||||
|
.join(defs::MODULE_WEB_DIR);
|
||||||
|
serve_dir(module_dir, port)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn serve_dir(dir: impl AsRef<Path>, port: u16) -> Result<()> {
|
||||||
|
let rt = tokio::runtime::Runtime::new()?;
|
||||||
|
rt.block_on(serve(dir, port));
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user