Handle restricted ports

This commit is contained in:
2024-08-22 09:42:10 +02:00
parent b52fbca4fd
commit ae754241ce
3 changed files with 105 additions and 2 deletions

View File

@ -1,6 +1,7 @@
use actix_web::middleware::Logger;
use actix_web::{web, App, HttpResponse, HttpServer};
use clap::Parser;
use hidden_server::restricted_port::is_restricted_port;
use log::LevelFilter;
use rand::Rng;
@ -22,7 +23,7 @@ struct Args {
#[arg(short('M'), long, default_value_t = 1000)]
max_port: u16,
/// Host this server will listen to
#[arg(short, long, default_value="0.0.0.0")]
#[arg(short, long, default_value = "0.0.0.0")]
listen_host: String,
}
@ -43,7 +44,19 @@ async fn main() -> std::io::Result<()> {
log::info!("Choosing a random port to start...");
let mut rng = rand::thread_rng();
let port: u16 = args.min_port + rng.random::<u16>() % (args.max_port - args.min_port);
let mut port: u16;
loop {
port = args.min_port + rng.random::<u16>() % (args.max_port - args.min_port);
if !is_restricted_port(port) {
break;
}
log::info!("I chose a restricted port, I have to choose another one...");
}
log::info!("Can now start server...");
HttpServer::new(|| {
App::new()