diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/main.rs b/src/main.rs index 766bc4b..760247a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,6 +6,7 @@ use std::pin::Pin; use std::process::ExitCode; use std::sync::Arc; +use clap::Parser; use http_body_util::Full; use hyper::body::Bytes; use hyper::server::conn::http1; @@ -17,22 +18,26 @@ use rand_pcg::Pcg64; use rand_seeder::Seeder; use tokio::net::TcpListener; +/// Endless honeypot for webcrawlers +#[derive(Parser, Debug)] +#[command(version, about, long_about = None)] +struct Args { + /// seed for deterministic page generation + seed: String, + /// port for serving http traffic + #[arg(short, long, default_value_t = 3200)] + port: u16, +} + #[tokio::main] async fn main() -> Result<ExitCode, Box<dyn std::error::Error + Send + Sync>> { - let args: Vec<String> = std::env::args().collect(); - - if args.len() != 2 { - eprintln!("must supply exactly one arg for the seed"); - return Ok(ExitCode::FAILURE); - } - let seed = args.get(1).unwrap(); - eprintln!("seed: {}", seed); + let args = Args::parse(); tracing_subscriber::fmt::init(); - let svc = RandomPageService::new(seed.as_str()); + let svc = RandomPageService::new(args.seed.as_str()); - let addr = SocketAddr::from(([127, 0, 0, 1], 3200)); + let addr = SocketAddr::from(([127, 0, 0, 1], args.port)); let listener = TcpListener::bind(addr).await?; |