feat(homelab)!: migrate to svelte kit, add more server stats endpoints
This commit is contained in:
@@ -5,11 +5,13 @@ mod rcon;
|
||||
use std::env;
|
||||
|
||||
use actix_web::{App, HttpServer, web};
|
||||
use kube::Client;
|
||||
|
||||
use crate::rcon::RconClient;
|
||||
|
||||
struct AppState {
|
||||
pub struct AppState {
|
||||
rcon: RconClient,
|
||||
kube: Client,
|
||||
}
|
||||
|
||||
struct Env {
|
||||
@@ -36,8 +38,16 @@ fn load_env() -> Env {
|
||||
#[actix_web::main]
|
||||
async fn main() -> std::io::Result<()> {
|
||||
let env = load_env();
|
||||
|
||||
// Initialize Kubernetes client
|
||||
// Uses in-cluster config when running in k3s, falls back to ~/.kube/config locally
|
||||
let kube_client = Client::try_default()
|
||||
.await
|
||||
.expect("failed to create Kubernetes client");
|
||||
|
||||
let app_state = web::Data::new(AppState {
|
||||
rcon: RconClient::new(env.rcon_password),
|
||||
kube: kube_client,
|
||||
});
|
||||
|
||||
HttpServer::new(move || {
|
||||
@@ -48,10 +58,24 @@ async fn main() -> std::io::Result<()> {
|
||||
web::get()
|
||||
.to(async || concat!(env!("CARGO_PKG_NAME"), "/", env!("CARGO_PKG_VERSION"))),
|
||||
)
|
||||
.service(web::scope("/api").route(
|
||||
"/minecraft-server-stats",
|
||||
web::get().to(endpoints::server_stats::get_server_stats),
|
||||
))
|
||||
.service(
|
||||
web::scope("/api")
|
||||
.route(
|
||||
"/minecraft-server-stats",
|
||||
web::get().to(endpoints::server_stats::get_server_stats),
|
||||
)
|
||||
// .route(
|
||||
// "/minecraft/{server}/world-size",
|
||||
// web::get().to(endpoints::kubernetes::get_world_size),
|
||||
// )
|
||||
.route(
|
||||
"/minecraft/{server}/uptime",
|
||||
web::get().to(endpoints::server_uptime::get_uptime),
|
||||
), // .route(
|
||||
// "/minecraft/{server}/restore",
|
||||
// web::post().to(endpoints::kubernetes::create_restore),
|
||||
// ),
|
||||
)
|
||||
})
|
||||
.bind(("127.0.0.1", 8080))?
|
||||
.run()
|
||||
|
||||
Reference in New Issue
Block a user