use std::path::PathBuf; mod config; mod mac; mod server; mod utils; #[derive(thiserror::Error, Debug)] enum Error { #[error("Config error: {}", .0)] Config(#[from] config::ConfigError), #[error("Io error: {}", .0)] Io(#[from] std::io::Error), #[error("Axum error: {}", .0)] Axum(#[from] axum::Error), } #[tokio::main] async fn main() -> () { async fn main() -> Result<(), Error> { let config = config::Config::load(PathBuf::from("./wol.toml"))?; println!("Binding to {}", config.binding); for (k, v) in &config.targets { println!("target: {k}: {} ({:?})", v.mac, v.ip); } let listener = tokio::net::TcpListener::bind(&config.binding).await?; axum::serve(listener, server::router(config)).await?; Ok(()) } let res = main().await; if let Err(err) = res { eprintln!("{}", err); } }