39 lines
863 B
Rust
39 lines
863 B
Rust
use std::fs;
|
|
use anyhow::Result;
|
|
use serde::Deserialize;
|
|
|
|
#[derive(Debug, Deserialize, Clone)]
|
|
pub struct Config {
|
|
pub listen_addr: String,
|
|
pub server_addr: String,
|
|
pub motd_server_addr: String,
|
|
pub rcon_addr: String,
|
|
pub rcon_password: String,
|
|
pub idle_timeout_secs: u64,
|
|
pub polling_interval_millis: u64,
|
|
|
|
pub container_name: String,
|
|
|
|
#[serde(default = "default_startup_timeout_secs")]
|
|
pub startup_timeout_secs: u64,
|
|
|
|
#[serde(default = "default_rcon_retry_interval_secs")]
|
|
pub rcon_retry_interval_secs: u64,
|
|
}
|
|
|
|
fn default_startup_timeout_secs() -> u64 {
|
|
600
|
|
}
|
|
|
|
fn default_rcon_retry_interval_secs() -> u64 {
|
|
1
|
|
}
|
|
|
|
impl Config {
|
|
pub fn load(path: &str) -> Result<Self> {
|
|
let content = fs::read_to_string(path)?;
|
|
let config: Config = toml::from_str(&content)?;
|
|
Ok(config)
|
|
}
|
|
}
|