Compare commits
2 Commits
main
...
edition202
Author | SHA1 | Date | |
---|---|---|---|
d59949a8c1
|
|||
73e11d5596
|
605
Cargo.lock
generated
605
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,8 @@
|
||||
[package]
|
||||
name = "expose-dir-via-http"
|
||||
version = "1.3.29"
|
||||
version = "1.1.13"
|
||||
edition = "2024"
|
||||
rust-version = "1.85"
|
||||
|
||||
[lints.rust]
|
||||
unsafe_code = "forbid"
|
||||
|
2
rust-toolchain.toml
Normal file
2
rust-toolchain.toml
Normal file
@ -0,0 +1,2 @@
|
||||
[toolchain]
|
||||
channel = "nightly"
|
25
src/main.rs
25
src/main.rs
@ -1,8 +1,6 @@
|
||||
use std::{
|
||||
net::{IpAddr, SocketAddr},
|
||||
num::NonZeroUsize,
|
||||
path::PathBuf,
|
||||
sync::Arc,
|
||||
thread::available_parallelism,
|
||||
};
|
||||
|
||||
@ -13,8 +11,8 @@ use clap::{Parser, crate_name, crate_version};
|
||||
#[clap(name = crate_name!(), version = crate_version!())]
|
||||
struct Args {
|
||||
/// Directory to expose
|
||||
#[clap(default_value = ".", value_parser = parse_valid_dir)]
|
||||
dir: PathBuf,
|
||||
#[clap(default_value = ".")]
|
||||
dir: String,
|
||||
|
||||
/// IP address to use
|
||||
#[clap(default_value = "0.0.0.0")]
|
||||
@ -25,31 +23,18 @@ struct Args {
|
||||
port: u16,
|
||||
}
|
||||
|
||||
fn parse_valid_dir(dir: &str) -> Result<PathBuf, String> {
|
||||
let path = PathBuf::from(dir);
|
||||
match std::fs::metadata(&path) {
|
||||
Ok(metadata) if metadata.is_dir() => Ok(path),
|
||||
Ok(_) => Err(format!("{} is not a directory", path.display())),
|
||||
Err(e) => Err(format!("Error accessing {}: {}", path.display(), e)),
|
||||
}
|
||||
}
|
||||
|
||||
#[actix_web::main]
|
||||
async fn main() -> std::io::Result<()> {
|
||||
let args = Args::parse();
|
||||
|
||||
let dir = Arc::new(args.dir);
|
||||
let dir = args.dir;
|
||||
let sock = SocketAddr::new(args.ip, args.port);
|
||||
|
||||
println!(
|
||||
"Starting HTTP server on {sock} exposing dir {}",
|
||||
dir.display()
|
||||
);
|
||||
println!("Starting HTTP server on {sock} exposing dir {dir}");
|
||||
|
||||
HttpServer::new(move || {
|
||||
let dir = dir.clone();
|
||||
App::new().service(
|
||||
actix_files::Files::new("/", dir.as_ref())
|
||||
actix_files::Files::new("/", dir.clone())
|
||||
.show_files_listing()
|
||||
.prefer_utf8(true),
|
||||
)
|
||||
|
Reference in New Issue
Block a user