diff options
author | cyqsimon <28627918+cyqsimon@users.noreply.github.com> | 2023-09-05 08:32:20 +0000 |
---|---|---|
committer | cyqsimon <28627918+cyqsimon@users.noreply.github.com> | 2023-09-05 09:06:18 +0000 |
commit | 2cd6debc0906b2487bcaf794630514ec3016152c (patch) | |
tree | f0b27b853cb521830b73bdcb450ed12562e4e84b /src/config.rs | |
parent | Use distinct query type for file op APIs (diff) | |
download | miniserve-2cd6debc0906b2487bcaf794630514ec3016152c.tar.gz miniserve-2cd6debc0906b2487bcaf794630514ec3016152c.zip |
Minor code style refactors
Diffstat (limited to '')
-rw-r--r-- | src/config.rs | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/config.rs b/src/config.rs index d52b231..50b7343 100644 --- a/src/config.rs +++ b/src/config.rs @@ -234,6 +234,21 @@ impl MiniserveConfig { }) }); + let allowed_upload_dir = args + .allowed_upload_dir + .as_ref() + .map(|v| { + v.iter() + .map(|p| { + sanitize_path(p, false) + .map(|p| p.display().to_string().replace("\\", "/")) + .ok_or(anyhow!("Illegal path {p:?}: upward traversal not allowed")) + }) + .collect() + }) + .transpose()? + .unwrap_or_default(); + Ok(MiniserveConfig { verbose: args.verbose, path: args.path.unwrap_or_else(|| PathBuf::from(".")), @@ -254,18 +269,7 @@ impl MiniserveConfig { show_qrcode: args.qrcode, mkdir_enabled: args.mkdir_enabled, file_upload: args.allowed_upload_dir.is_some(), - allowed_upload_dir: args - .allowed_upload_dir - .unwrap_or_default() - .iter() - .map(|x| { - sanitize_path(x, false) - .unwrap() - .to_str() - .unwrap() - .replace('\\', "/") - }) - .collect(), + allowed_upload_dir, uploadable_media_type, tar_enabled: args.enable_tar, tar_gz_enabled: args.enable_tar_gz, |