[WIP] A simple wake-on-lan service
at main 36 lines 904 B view raw
1use std::path::PathBuf; 2 3mod config; 4mod mac; 5mod server; 6mod utils; 7 8#[derive(thiserror::Error, Debug)] 9enum Error { 10 #[error("Config error: {}", .0)] 11 Config(#[from] config::ConfigError), 12 #[error("Io error: {}", .0)] 13 Io(#[from] std::io::Error), 14 #[error("Axum error: {}", .0)] 15 Axum(#[from] axum::Error), 16} 17 18#[tokio::main] 19async fn main() -> () { 20 async fn main() -> Result<(), Error> { 21 let config = config::Config::load(PathBuf::from("./wol.toml"))?; 22 println!("Binding to {}", config.binding); 23 for (k, v) in &config.targets { 24 println!("target: {k}: {} ({:?})", v.mac, v.ip); 25 } 26 let listener = tokio::net::TcpListener::bind(&config.binding).await?; 27 axum::serve(listener, server::router(config)).await?; 28 29 Ok(()) 30 } 31 32 let res = main().await; 33 if let Err(err) = res { 34 eprintln!("{}", err); 35 } 36}