Make ports configurable

This commit is contained in:
2024-08-21 17:17:44 +02:00
parent fa4a5458c2
commit 661e6fdaa6
3 changed files with 76 additions and 2 deletions

View File

@ -1,5 +1,6 @@
use actix_web::middleware::Logger;
use actix_web::{web, App, HttpResponse, HttpServer};
use clap::Parser;
use log::LevelFilter;
use rand::Rng;
@ -10,6 +11,18 @@ async fn home() -> HttpResponse {
.body(include_str!("../assets/home.html"))
}
/// Server with hidden exposed port
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
struct Args {
/// Minimal port this server will listen to
#[arg(short, long, default_value_t = 80)]
min_port: u16,
/// Maximal port this server will listen to
#[arg(short, long, default_value_t = 1000)]
max_port: u16,
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
env_logger::Builder::new()
@ -17,10 +30,17 @@ async fn main() -> std::io::Result<()> {
.filter(None, LevelFilter::Info)
.init();
let args: Args = Args::parse();
assert!(
args.max_port > args.min_port,
"Max port shall be greater than min port!"
);
log::info!("Choosing a random port to start...");
let mut rng = rand::thread_rng();
let port: u16 = 80 + rng.random::<u16>() % 10000;
let port: u16 = args.min_port + rng.random::<u16>() % (args.max_port - args.min_port);
HttpServer::new(|| {
App::new()