initial commit

This commit is contained in:
ddidderr 2024-02-09 00:14:41 +01:00
commit 8208634a0d
Signed by: ddidderr
GPG Key ID: 3841F1C27E6F0E14
4 changed files with 1565 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

1503
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

17
Cargo.toml Normal file
View File

@ -0,0 +1,17 @@
[package]
name = "expose-dir-via-http"
version = "0.1.0"
edition = "2021"
[dependencies]
actix-web = "4"
actix-files = "0.6"
num_cpus = "1.16"
clap = { version = "4.4.18", features = ["cargo", "derive"] }
[profile.release]
lto = true
debug = false
strip = true
panic = "unwind"
codegen-units = 1

44
src/main.rs Normal file
View 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
}