Make ports configurable
This commit is contained in:
22
src/main.rs
22
src/main.rs
@ -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()
|
||||
|
Reference in New Issue
Block a user