From 9caeb461d31d748951b4c7d122eb53816f4bf699 Mon Sep 17 00:00:00 2001 From: yggverse Date: Thu, 5 Mar 2026 23:00:56 +0200 Subject: [PATCH] make `xash3d-query` script path configurable --- crates/httpd/config.toml | 6 +++++- crates/httpd/src/config.rs | 2 ++ crates/httpd/src/global.rs | 3 ++- crates/httpd/src/main.rs | 3 ++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/crates/httpd/config.toml b/crates/httpd/config.toml index 570c9b5..fa5d15c 100644 --- a/crates/httpd/config.toml +++ b/crates/httpd/config.toml @@ -6,7 +6,11 @@ host = "[::1]" # Bind server on given port port = 8027 -#Configure instance in the debug mode +# Configure instance in the debug mode debug = true +# Path to `xash3d-query` bin +query = "xash3d-query" + +# Define at least one master to scrape game servers from masters = ["[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:27010", "[300:dee4:d3c0:953b::2019]:27010"] \ No newline at end of file diff --git a/crates/httpd/src/config.rs b/crates/httpd/src/config.rs index 83010b3..189f57e 100644 --- a/crates/httpd/src/config.rs +++ b/crates/httpd/src/config.rs @@ -2,6 +2,7 @@ use rocket::serde::Deserialize; use std::{ collections::HashSet, net::{IpAddr, SocketAddr}, + path::PathBuf, }; #[derive(Debug, Deserialize)] @@ -11,5 +12,6 @@ pub struct Config { pub host: IpAddr, pub masters: HashSet, pub port: u16, + pub query: PathBuf, pub title: String, } diff --git a/crates/httpd/src/global.rs b/crates/httpd/src/global.rs index 67cc4e4..d1fc0c3 100644 --- a/crates/httpd/src/global.rs +++ b/crates/httpd/src/global.rs @@ -1,8 +1,9 @@ use rocket::serde::Serialize; -use std::collections::HashSet; +use std::{collections::HashSet, path::PathBuf}; #[derive(Clone, Debug, Serialize)] #[serde(crate = "rocket::serde")] pub struct Global { pub masters: HashSet, + pub query: PathBuf, } diff --git a/crates/httpd/src/main.rs b/crates/httpd/src/main.rs index 8ba8a1e..ac07dbc 100644 --- a/crates/httpd/src/main.rs +++ b/crates/httpd/src/main.rs @@ -16,7 +16,7 @@ use rocket_dyn_templates::{Template, context}; fn index(meta: &State, global: &State) -> Result { // @TODO: requires library impl // https://github.com/FWGS/xash3d-master/issues/4 - let scrape = std::process::Command::new("xash3d-query") + let scrape = std::process::Command::new(&global.query) .arg("all") .arg("-M") .arg( @@ -78,6 +78,7 @@ fn rocket() -> _ { }) .manage(Global { masters: config.masters, + query: config.query, }) .manage(Meta { title: config.title,