Compare commits

...

22 Commits

Author SHA1 Message Date
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
7a6da447ab [release] expose-dir-via-http v1.1.34 2025-01-23 15:14:47 +01:00
69a0948cf7 [deps] cargo update
Updating unicode-ident v1.0.14 -> v1.0.15
2025-01-23 15:14:41 +01:00
a738845b99 [release] expose-dir-via-http v1.1.33 2025-01-21 10:59:43 +01:00
fc8caf5f70 [deps] cargo update
Updating brotli-decompressor v4.0.1   -> v4.0.2
Updating clap_builder        v4.5.26  -> v4.5.27
Updating clap                v4.5.26  -> v4.5.27
Updating indexmap            v2.7.0   -> v2.7.1
Updating semver              v1.0.24  -> v1.0.25
Updating serde_json          v1.0.136 -> v1.0.137
2025-01-21 10:59:38 +01:00
9fed0f99fa [release] expose-dir-via-http v1.1.32 2025-01-19 21:23:36 +01:00
363d0f65a3 [deps] cargo update
Updating serde_json v1.0.135 -> v1.0.136
2025-01-19 21:23:34 +01:00
2df79f2cd9 [release] expose-dir-via-http v1.1.31 2025-01-17 15:57:15 +01:00
89ab6fbe53 [deps] cargo update
Updating cc v1.2.9 -> v1.2.10
2025-01-17 15:57:09 +01:00
f41fcb201b [release] expose-dir-via-http v1.1.30 2025-01-15 23:39:48 +01:00
c0284f8f76 [deps] cargo update
Updating bitflags v2.7.0 -> v2.8.0
2025-01-15 23:39:47 +01:00
8416ed51e7 [release] expose-dir-via-http v1.1.29 2025-01-14 22:58:51 +01:00
238f452531 [deps] cargo update
Updating anstyle-wincon v3.0.6  -> v3.0.7
Updating log            v0.4.22 -> v0.4.25
Updating miniz_oxide    v0.8.2  -> v0.8.3
2025-01-14 22:58:49 +01:00
5836b71635 [release] expose-dir-via-http v1.1.28 2025-01-12 23:15:24 +01:00
4e83bfe815 [deps] cargo update
Updating bitflags         v2.6.0   -> v2.7.0
Updating cc               v1.2.7   -> v1.2.9
Updating clap_builder     v4.5.23  -> v4.5.26
Updating clap_derive      v4.5.18  -> v4.5.24
Updating clap             v4.5.23  -> v4.5.26
Updating pin-project-lite v0.2.15  -> v0.2.16
Updating proc-macro2      v1.0.92  -> v1.0.93
Updating serde_json       v1.0.134 -> v1.0.135
Updating syn              v2.0.94  -> v2.0.96
Updating tokio            v1.42.0  -> v1.43.0
2025-01-12 23:15:18 +01:00
3 changed files with 65 additions and 51 deletions

95
Cargo.lock generated
View File

@ -301,11 +301,12 @@ dependencies = [
[[package]]
name = "anstyle-wincon"
version = "3.0.6"
version = "3.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125"
checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e"
dependencies = [
"anstyle",
"once_cell",
"windows-sys 0.59.0",
]
@ -338,9 +339,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]]
name = "bitflags"
version = "2.6.0"
version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
[[package]]
name = "block-buffer"
@ -364,9 +365,9 @@ dependencies = [
[[package]]
name = "brotli-decompressor"
version = "4.0.1"
version = "4.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362"
checksum = "74fa05ad7d803d413eb8380983b092cbbaf9a85f151b871360e7b00cd7060b37"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
@ -380,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"
@ -395,9 +396,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.2.7"
version = "1.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7"
checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda"
dependencies = [
"jobserver",
"libc",
@ -412,9 +413,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "clap"
version = "4.5.23"
version = "4.5.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84"
checksum = "3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff"
dependencies = [
"clap_builder",
"clap_derive",
@ -422,9 +423,9 @@ dependencies = [
[[package]]
name = "clap_builder"
version = "4.5.23"
version = "4.5.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838"
checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7"
dependencies = [
"anstream",
"anstyle",
@ -434,9 +435,9 @@ dependencies = [
[[package]]
name = "clap_derive"
version = "4.5.18"
version = "4.5.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab"
checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed"
dependencies = [
"heck",
"proc-macro2",
@ -475,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",
]
@ -512,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",
@ -561,7 +562,7 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
name = "expose-dir-via-http"
version = "1.1.27"
version = "1.2.0"
dependencies = [
"actix-files",
"actix-web",
@ -700,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"
@ -857,9 +858,9 @@ checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2"
[[package]]
name = "indexmap"
version = "2.7.0"
version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f"
checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652"
dependencies = [
"equivalent",
"hashbrown",
@ -933,9 +934,9 @@ dependencies = [
[[package]]
name = "log"
version = "0.4.22"
version = "0.4.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f"
[[package]]
name = "memchr"
@ -961,9 +962,9 @@ dependencies = [
[[package]]
name = "miniz_oxide"
version = "0.8.2"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394"
checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924"
dependencies = [
"adler2",
]
@ -997,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"
@ -1038,9 +1039,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
[[package]]
name = "pin-project-lite"
version = "0.2.15"
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff"
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
[[package]]
name = "pin-utils"
@ -1071,9 +1072,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.92"
version = "1.0.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
dependencies = [
"unicode-ident",
]
@ -1178,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"
@ -1190,9 +1191,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "semver"
version = "1.0.24"
version = "1.0.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba"
checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03"
[[package]]
name = "serde"
@ -1216,9 +1217,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.134"
version = "1.0.138"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d"
checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949"
dependencies = [
"itoa",
"memchr",
@ -1303,9 +1304,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "syn"
version = "2.0.94"
version = "2.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "987bc0be1cdea8b10216bd06e2ca407d40b9543468fafd3ddfb02f36e77f71f3"
checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
dependencies = [
"proc-macro2",
"quote",
@ -1366,9 +1367,9 @@ dependencies = [
[[package]]
name = "tokio"
version = "1.42.0"
version = "1.43.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551"
checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e"
dependencies = [
"backtrace",
"bytes",
@ -1428,9 +1429,9 @@ checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
[[package]]
name = "unicode-ident"
version = "1.0.14"
version = "1.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034"
[[package]]
name = "url"

View File

@ -1,6 +1,6 @@
[package]
name = "expose-dir-via-http"
version = "1.1.27"
version = "1.2.0"
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(