Compare commits

...

11 Commits

Author SHA1 Message Date
e66ef328a1 [release] expose-dir-via-http v1.3.3 2025-02-28 15:26:13 +01:00
e44eb495ac [deps] cargo update
Updating cc              v1.2.14  -> v1.2.16
Updating clap_builder    v4.5.30  -> v4.5.31
Updating clap            v4.5.30  -> v4.5.31
Updating flate2          v1.0.35  -> v1.1.0
Updating libc            v0.2.169 -> v0.2.170
Updating litemap         v0.7.4   -> v0.7.5
Updating miniz_oxide     v0.8.4   -> v0.8.5
Updating redox_syscall   v0.5.8   -> v0.5.9
Updating zerofrom-derive v0.1.5   -> v0.1.6
Updating zerofrom        v0.1.5   -> v0.1.6
2025-02-28 15:26:12 +01:00
73cd4a27ac [release] expose-dir-via-http v1.3.2 2025-02-21 10:31:14 +01:00
6b050f3a05 [deps] cargo update
Updating log       v0.4.25            -> v0.4.26
Updating zstd-safe v7.2.1             -> v7.2.3
Updating zstd-sys  v2.0.13+zstd.1.5.6 -> v2.0.14+zstd.1.5.7
Updating zstd      v0.13.2            -> v0.13.3
2025-02-21 10:31:12 +01:00
8b94b630be [release] expose-dir-via-http v1.3.1 2025-02-20 19:05:12 +01:00
e35b0c9fd9 [code] small improvements suggested by Grok 3
- differentiate between "not a directory" and a real error while reading the path
- don't clone the PathBuf, instead use Arc
2025-02-20 19:04:53 +01:00
b5a2c750c5 [release] expose-dir-via-http v1.3.0 2025-02-20 18:27:24 +01:00
c7b0ca62f6 [deps] cargo update
Updating clap_builder  v4.5.29  -> v4.5.30
Updating clap          v4.5.29  -> v4.5.30
Updating serde_derive  v1.0.217 -> v1.0.218
Updating serde_json    v1.0.138 -> v1.0.139
Updating serde         v1.0.217 -> v1.0.218
Updating typenum       v1.17.0  -> v1.18.0
Updating unicode-ident v1.0.16  -> v1.0.17
2025-02-20 18:27:22 +01:00
34457d1cc1 [rust] edition 2024 2025-02-20 18:27:17 +01:00
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
3 changed files with 55 additions and 53 deletions

86
Cargo.lock generated
View File

@ -396,9 +396,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.2.13"
version = "1.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda"
checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c"
dependencies = [
"jobserver",
"libc",
@ -413,9 +413,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "clap"
version = "4.5.28"
version = "4.5.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff"
checksum = "027bb0d98429ae334a8698531da7077bdf906419543a35a55c2cb1b66437d767"
dependencies = [
"clap_builder",
"clap_derive",
@ -423,9 +423,9 @@ dependencies = [
[[package]]
name = "clap_builder"
version = "4.5.27"
version = "4.5.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7"
checksum = "5589e0cba072e0f3d23791efac0fd8627b49c829c196a492e88168e6a669d863"
dependencies = [
"anstream",
"anstyle",
@ -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.2.0"
version = "1.3.3"
dependencies = [
"actix-files",
"actix-web",
@ -571,9 +571,9 @@ dependencies = [
[[package]]
name = "flate2"
version = "1.0.35"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c"
checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc"
dependencies = [
"crc32fast",
"miniz_oxide",
@ -895,15 +895,15 @@ checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388"
[[package]]
name = "libc"
version = "0.2.169"
version = "0.2.170"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828"
[[package]]
name = "litemap"
version = "0.7.4"
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104"
checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856"
[[package]]
name = "local-channel"
@ -934,9 +934,9 @@ dependencies = [
[[package]]
name = "log"
version = "0.4.25"
version = "0.4.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f"
checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
[[package]]
name = "memchr"
@ -962,9 +962,9 @@ dependencies = [
[[package]]
name = "miniz_oxide"
version = "0.8.3"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924"
checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5"
dependencies = [
"adler2",
]
@ -1120,9 +1120,9 @@ dependencies = [
[[package]]
name = "redox_syscall"
version = "0.5.8"
version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834"
checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f"
dependencies = [
"bitflags",
]
@ -1197,18 +1197,18 @@ checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03"
[[package]]
name = "serde"
version = "1.0.217"
version = "1.0.218"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70"
checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.217"
version = "1.0.218"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0"
checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b"
dependencies = [
"proc-macro2",
"quote",
@ -1217,9 +1217,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.138"
version = "1.0.139"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949"
checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6"
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"
@ -1417,9 +1417,9 @@ dependencies = [
[[package]]
name = "typenum"
version = "1.17.0"
version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
[[package]]
name = "unicase"
@ -1429,9 +1429,9 @@ checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
[[package]]
name = "unicode-ident"
version = "1.0.16"
version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034"
checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
[[package]]
name = "url"
@ -1621,18 +1621,18 @@ dependencies = [
[[package]]
name = "zerofrom"
version = "0.1.5"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e"
checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
dependencies = [
"zerofrom-derive",
]
[[package]]
name = "zerofrom-derive"
version = "0.1.5"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808"
checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
dependencies = [
"proc-macro2",
"quote",
@ -1664,27 +1664,27 @@ dependencies = [
[[package]]
name = "zstd"
version = "0.13.2"
version = "0.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9"
checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a"
dependencies = [
"zstd-safe",
]
[[package]]
name = "zstd-safe"
version = "7.2.1"
version = "7.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059"
checksum = "f3051792fbdc2e1e143244dc28c60f73d8470e93f3f9cbd0ead44da5ed802722"
dependencies = [
"zstd-sys",
]
[[package]]
name = "zstd-sys"
version = "2.0.13+zstd.1.5.6"
version = "2.0.14+zstd.1.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa"
checksum = "8fb060d4926e4ac3a3ad15d864e99ceb5f343c6b34f5bd6d81ae6ed417311be5"
dependencies = [
"cc",
"pkg-config",

View File

@ -1,7 +1,7 @@
[package]
name = "expose-dir-via-http"
version = "1.2.0"
edition = "2021"
version = "1.3.3"
edition = "2024"
[lints.rust]
unsafe_code = "forbid"

View File

@ -2,11 +2,12 @@ use std::{
net::{IpAddr, SocketAddr},
num::NonZeroUsize,
path::PathBuf,
sync::Arc,
thread::available_parallelism,
};
use actix_web::{App, HttpServer};
use clap::{crate_name, crate_version, Parser};
use clap::{Parser, crate_name, crate_version};
#[derive(Parser, Debug)]
#[clap(name = crate_name!(), version = crate_version!())]
@ -25,11 +26,11 @@ struct Args {
}
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()))
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)),
}
}
@ -37,7 +38,7 @@ fn parse_valid_dir(dir: &str) -> Result<PathBuf, String> {
async fn main() -> std::io::Result<()> {
let args = Args::parse();
let dir = args.dir;
let dir = Arc::new(args.dir);
let sock = SocketAddr::new(args.ip, args.port);
println!(
@ -46,8 +47,9 @@ async fn main() -> std::io::Result<()> {
);
HttpServer::new(move || {
let dir = dir.clone();
App::new().service(
actix_files::Files::new("/", dir.clone())
actix_files::Files::new("/", dir.as_ref())
.show_files_listing()
.prefer_utf8(true),
)