91 lines
2.5 KiB
Rust
91 lines
2.5 KiB
Rust
mod cli;
|
|
mod config;
|
|
mod daemon;
|
|
mod docker;
|
|
mod error;
|
|
mod firewall;
|
|
mod iface;
|
|
mod lock;
|
|
mod netns;
|
|
mod status;
|
|
mod swap;
|
|
mod sysctl_tuning;
|
|
mod traffic;
|
|
mod wg;
|
|
|
|
use std::path::PathBuf;
|
|
|
|
use clap::Parser;
|
|
use tracing_subscriber::EnvFilter;
|
|
|
|
use crate::cli::{Cli, Command};
|
|
use crate::config::Config;
|
|
|
|
fn main() -> anyhow::Result<()> {
|
|
tracing_subscriber::fmt()
|
|
.with_env_filter(
|
|
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info")),
|
|
)
|
|
.init();
|
|
|
|
let cli = Cli::parse();
|
|
let config_path = cli
|
|
.config
|
|
.unwrap_or_else(|| PathBuf::from("/etc/awg2-harness/config.toml"));
|
|
|
|
match cli.command {
|
|
Command::ValidateConfig => {
|
|
let cfg = Config::load(&config_path)?;
|
|
cfg.validate_config()?;
|
|
println!("config valid: {}", config_path.display());
|
|
}
|
|
Command::ValidateRuntime => {
|
|
let cfg = Config::load(&config_path)?;
|
|
cfg.validate_runtime()?;
|
|
println!("runtime valid");
|
|
}
|
|
Command::ApplyLimits => {
|
|
let cfg = Config::load(&config_path)?;
|
|
cfg.validate_all()?;
|
|
traffic::reconcile_traffic(&cfg)?;
|
|
println!("traffic limits reconciled");
|
|
}
|
|
Command::ApplyNetworkTuning => {
|
|
let cfg = Config::load(&config_path)?;
|
|
cfg.validate_sysctl_tuning_runtime()?;
|
|
sysctl_tuning::ensure_sysctl_tuning(&cfg)?;
|
|
println!("network tuning reconciled");
|
|
}
|
|
Command::InspectNetworkTuning => {
|
|
let cfg = Config::load(&config_path)?;
|
|
cfg.validate_config()?;
|
|
let s = sysctl_tuning::inspect_sysctl_tuning(&cfg)?;
|
|
sysctl_tuning::print_sysctl_tuning_status(&s);
|
|
}
|
|
Command::ApplyFirewall => {
|
|
let cfg = Config::load(&config_path)?;
|
|
cfg.validate_all()?;
|
|
firewall::apply_firewall(&cfg)?;
|
|
println!("firewall reconciled");
|
|
}
|
|
Command::Status => {
|
|
let cfg = Config::load(&config_path)?;
|
|
cfg.validate_config()?;
|
|
status::print_status(&cfg)?;
|
|
}
|
|
Command::EnsureSwap => {
|
|
let cfg = Config::load(&config_path)?;
|
|
cfg.validate_all()?;
|
|
swap::ensure_swap(&cfg)?;
|
|
println!("swap ensured");
|
|
}
|
|
Command::Daemon => {
|
|
let cfg = Config::load(&config_path)?;
|
|
cfg.validate_all()?;
|
|
daemon::run(cfg)?;
|
|
}
|
|
}
|
|
|
|
Ok(())
|
|
}
|