Fix and harden client/server configuration #48

Merged
sjg merged 13 commits from feat/config-improvements into main 2026-08-06 22:22:40 +02:00
3 changed files with 21 additions and 13 deletions
Showing only changes of commit 084f629b5b - Show all commits
+8 -1
View File
@@ -24,6 +24,12 @@ cargo test -p trx-core
./target/release/trx-server --print-config > trx-server.toml
./target/release/trx-client --print-config > trx-client.toml
# Validate a config without starting anything (reports every problem)
./target/release/trx-server --check-config --config trx-rs.toml
# Regenerate trx-rs.toml.example after changing a config struct
cargo run -p trx-config --example generate_example
# Run server
./target/release/trx-server --config trx-server.toml
# or via CLI args:
@@ -41,7 +47,8 @@ This is a Cargo workspace. All crates live under `src/`:
src/
trx-core/ # Core types, traits, state machine, controller (~3,500 LOC)
trx-protocol/ # Client↔server protocol DTOs, auth, codec, mapping (~1,100 LOC)
trx-app/ # Shared application helpers (config paths, logging init)
trx-app/ # Shared application helpers (logging init, name normalization)
trx-config/ # Client + server config structs, loader, validators (~2,500 LOC)
trx-reporting/ # PSKReporter UDP uplink + APRS-IS TCP uplink (~1,150 LOC)
trx-server/ # Server binary: rig_task, audio pipeline, listener (~3,700 LOC)
trx-backend/ # Backend abstraction trait + factory + dummy
+5 -3
View File
@@ -1523,8 +1523,8 @@ url = "remote.example.com:4530"
#[test]
fn test_remote_token_file_fills_token() {
let f = secret_file("remote-token");
let mut config = ClientConfig::default();
config.remotes = vec![RemoteEntry {
let mut config = ClientConfig {
remotes: vec![RemoteEntry {
name: "hf".to_string(),
url: "127.0.0.1:4530".to_string(),
rig_id: None,
@@ -1533,7 +1533,9 @@ url = "remote.example.com:4530"
token_file: Some(f.path().to_str().unwrap().to_string()),
},
poll_interval_ms: 750,
}];
}],
..Default::default()
};
config.resolve_secrets(None).unwrap();
assert_eq!(config.remotes[0].auth.token.as_deref(), Some("remote-token"));
}
-1
View File
@@ -196,7 +196,6 @@ fn annotate(doc: &mut DocumentMut, path: &str, comment: &str) {
#[cfg(test)]
mod tests {
use super::*;
use crate::ConfigFile;
/// The checked-in example must match what the structs produce, so a new
/// config field cannot land without showing up in the example.