Compare commits

...

10 Commits

Author SHA1 Message Date
e286e24d61 [release] expose-dir-via-http v1.2.1 2025-02-16 21:26:55 +01:00
9c1336b50c [deps] cargo update
Updating cc           v1.2.13 -> v1.2.14
Updating clap_builder v4.5.27 -> v4.5.29
Updating clap         v4.5.28 -> v4.5.29
Updating equivalent   v1.0.1  -> v1.0.2
Updating miniz_oxide  v0.8.3  -> v0.8.4
Updating smallvec     v1.13.2 -> v1.14.0
2025-02-16 21:26:53 +01:00
54e8015773 [release] expose-dir-via-http v1.2.0 2025-02-10 22:06:00 +01:00
30874a97f7 [feat] only allow valid dirs as 1st arg 2025-02-10 22:04:53 +01:00
05142358e1 [release] expose-dir-via-http v1.1.37 2025-02-10 21:14:25 +01:00
9f6891b4d5 [deps] cargo update
Updating bytes       v1.9.0   -> v1.10.0
Updating cc          v1.2.10  -> v1.2.13
Updating clap_derive v4.5.24  -> v4.5.28
Updating clap        v4.5.27  -> v4.5.28
Updating derive_more v0.99.18 -> v0.99.19
Updating once_cell   v1.20.2  -> v1.20.3
Updating syn         v2.0.96  -> v2.0.98
2025-02-10 21:14:23 +01:00
9c52aa8833 [release] expose-dir-via-http v1.1.36 2025-01-30 08:43:58 +01:00
0e244ebadd [deps] cargo update
Updating httparse   v1.9.5   -> v1.10.0
Updating serde_json v1.0.137 -> v1.0.138
2025-01-30 08:43:53 +01:00
6ade932389 [release] expose-dir-via-http v1.1.35 2025-01-28 10:58:54 +01:00
7dc14a83cf [deps] cargo update
Updating cpufeatures   v0.2.16 -> v0.2.17
Updating ryu           v1.0.18 -> v1.0.19
Updating unicode-ident v1.0.15 -> v1.0.16
2025-01-28 10:58:48 +01:00
3 changed files with 50 additions and 37 deletions

66
Cargo.lock generated
View File

@ -381,9 +381,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "bytes"
version = "1.9.0"
version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b"
checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9"
[[package]]
name = "bytestring"
@ -396,9 +396,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.2.10"
version = "1.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229"
checksum = "0c3d1b2e905a3a7b00a6141adb0e4c0bb941d11caf55349d863942a1cc44e3c9"
dependencies = [
"jobserver",
"libc",
@ -413,9 +413,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "clap"
version = "4.5.27"
version = "4.5.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796"
checksum = "8acebd8ad879283633b343856142139f2da2317c96b05b4dd6181c61e2480184"
dependencies = [
"clap_builder",
"clap_derive",
@ -423,9 +423,9 @@ dependencies = [
[[package]]
name = "clap_builder"
version = "4.5.27"
version = "4.5.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7"
checksum = "f6ba32cbda51c7e1dfd49acc1457ba1a7dec5b64fe360e828acb13ca8dc9c2f9"
dependencies = [
"anstream",
"anstyle",
@ -435,9 +435,9 @@ dependencies = [
[[package]]
name = "clap_derive"
version = "4.5.24"
version = "4.5.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c"
checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed"
dependencies = [
"heck",
"proc-macro2",
@ -476,9 +476,9 @@ dependencies = [
[[package]]
name = "cpufeatures"
version = "0.2.16"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3"
checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
dependencies = [
"libc",
]
@ -513,9 +513,9 @@ dependencies = [
[[package]]
name = "derive_more"
version = "0.99.18"
version = "0.99.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce"
checksum = "3da29a38df43d6f156149c9b43ded5e018ddff2a855cf2cfd62e8cd7d079c69f"
dependencies = [
"convert_case",
"proc-macro2",
@ -556,13 +556,13 @@ dependencies = [
[[package]]
name = "equivalent"
version = "1.0.1"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "expose-dir-via-http"
version = "1.1.34"
version = "1.2.1"
dependencies = [
"actix-files",
"actix-web",
@ -701,9 +701,9 @@ checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573"
[[package]]
name = "httparse"
version = "1.9.5"
version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946"
checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a"
[[package]]
name = "httpdate"
@ -962,9 +962,9 @@ dependencies = [
[[package]]
name = "miniz_oxide"
version = "0.8.3"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924"
checksum = "b3b1c9bd4fe1f0f8b387f6eb9eb3b4a1aa26185e5750efb9140301703f62cd1b"
dependencies = [
"adler2",
]
@ -998,9 +998,9 @@ dependencies = [
[[package]]
name = "once_cell"
version = "1.20.2"
version = "1.20.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
[[package]]
name = "parking_lot"
@ -1179,9 +1179,9 @@ dependencies = [
[[package]]
name = "ryu"
version = "1.0.18"
version = "1.0.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd"
[[package]]
name = "scopeguard"
@ -1217,9 +1217,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.137"
version = "1.0.138"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b"
checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949"
dependencies = [
"itoa",
"memchr",
@ -1276,9 +1276,9 @@ dependencies = [
[[package]]
name = "smallvec"
version = "1.13.2"
version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
[[package]]
name = "socket2"
@ -1304,9 +1304,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "syn"
version = "2.0.96"
version = "2.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80"
checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
dependencies = [
"proc-macro2",
"quote",
@ -1429,9 +1429,9 @@ checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
[[package]]
name = "unicode-ident"
version = "1.0.15"
version = "1.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11cd88e12b17c6494200a9c1b683a04fcac9573ed74cd1b62aeb2727c5592243"
checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034"
[[package]]
name = "url"

View File

@ -1,6 +1,6 @@
[package]
name = "expose-dir-via-http"
version = "1.1.34"
version = "1.2.1"
edition = "2021"
[lints.rust]

View File

@ -1,6 +1,7 @@
use std::{
net::{IpAddr, SocketAddr},
num::NonZeroUsize,
path::PathBuf,
thread::available_parallelism,
};
@ -11,8 +12,8 @@ use clap::{crate_name, crate_version, Parser};
#[clap(name = crate_name!(), version = crate_version!())]
struct Args {
/// Directory to expose
#[clap(default_value = ".")]
dir: String,
#[clap(default_value = ".", value_parser = parse_valid_dir)]
dir: PathBuf,
/// IP address to use
#[clap(default_value = "0.0.0.0")]
@ -23,6 +24,15 @@ struct Args {
port: u16,
}
fn parse_valid_dir(dir: &str) -> Result<PathBuf, String> {
let path = std::path::Path::new(dir);
if path.is_dir() {
Ok(path.to_path_buf())
} else {
Err(format!("{} is not a valid directory", path.display()))
}
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
let args = Args::parse();
@ -30,7 +40,10 @@ async fn main() -> std::io::Result<()> {
let dir = args.dir;
let sock = SocketAddr::new(args.ip, args.port);
println!("Starting HTTP server on {sock} exposing dir {dir}");
println!(
"Starting HTTP server on {sock} exposing dir {}",
dir.display()
);
HttpServer::new(move || {
App::new().service(