aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.rs25
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?;