initial commit
This commit is contained in:
44
src/main.rs
Normal file
44
src/main.rs
Normal file
@ -0,0 +1,44 @@
|
||||
use actix_web::{App, HttpServer};
|
||||
use std::env;
|
||||
use std::net::IpAddr;
|
||||
use std::net::SocketAddr;
|
||||
|
||||
use clap::{crate_name, crate_version, Parser};
|
||||
|
||||
#[derive(Parser, Debug)]
|
||||
#[clap(name = crate_name!(), version = crate_version!())]
|
||||
struct Args {
|
||||
/// Directory to expose
|
||||
#[clap(default_value = ".")]
|
||||
dir: String,
|
||||
|
||||
/// IP address to use
|
||||
#[clap(default_value = "0.0.0.0")]
|
||||
ip: IpAddr,
|
||||
|
||||
/// Port number to connect
|
||||
#[clap(default_value = "8080")]
|
||||
port: u16,
|
||||
}
|
||||
|
||||
#[actix_web::main]
|
||||
async fn main() -> std::io::Result<()> {
|
||||
let args = Args::parse();
|
||||
|
||||
let dir = args.dir;
|
||||
let sock = SocketAddr::new(args.ip, args.port);
|
||||
|
||||
println!("Starting HTTP server on {sock} exposing dir {dir}");
|
||||
|
||||
HttpServer::new(move || {
|
||||
App::new().service(
|
||||
actix_files::Files::new("/", dir.clone())
|
||||
.show_files_listing()
|
||||
.prefer_utf8(true),
|
||||
)
|
||||
})
|
||||
.workers(num_cpus::get())
|
||||
.bind(sock)?
|
||||
.run()
|
||||
.await
|
||||
}
|
Reference in New Issue
Block a user