[WIP] A simple wake-on-lan service
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}