diff options
author | Jonas Diemer <jonasdiemer@gmail.com> | 2022-08-04 09:20:37 +0000 |
---|---|---|
committer | Jonas Diemer <jonasdiemer@gmail.com> | 2022-09-18 18:25:35 +0000 |
commit | 550ae0151c1dadc6c1f00df300d88528c29fbf49 (patch) | |
tree | e533fdef6284f8c3f55e521f2c08f93d546d4a8c | |
parent | Avoid error message during testing of restricted (diff) | |
download | miniserve-550ae0151c1dadc6c1f00df300d88528c29fbf49.tar.gz miniserve-550ae0151c1dadc6c1f00df300d88528c29fbf49.zip |
Renamed option for more clarity
Diffstat (limited to '')
-rw-r--r-- | src/args.rs | 8 | ||||
-rw-r--r-- | src/config.rs | 4 | ||||
-rw-r--r-- | src/file_upload.rs | 5 | ||||
-rw-r--r-- | src/renderer.rs | 2 | ||||
-rw-r--r-- | tests/upload_files.rs | 8 |
5 files changed, 14 insertions, 13 deletions
diff --git a/src/args.rs b/src/args.rs index 6c6d6e0..56c834c 100644 --- a/src/args.rs +++ b/src/args.rs @@ -111,9 +111,11 @@ pub struct CliArgs { #[clap(short = 'u', long = "upload-files")] pub file_upload: bool, - /// Restrict upload directories - #[clap(long = "restrict-upload-dir", requires = "file-upload", value_hint = ValueHint::FilePath)] - pub restrict_upload_dir: Vec<PathBuf>, + /// Allowed upload directories (together with -u) + /// + /// If this is set, uploads are only allowed into the provided directories. + #[clap(long, requires = "file-upload", value_hint = ValueHint::FilePath)] + pub allowed_upload_dir: Vec<PathBuf>, /// Enable creating directories #[clap(short = 'U', long = "mkdir", requires = "file-upload")] diff --git a/src/config.rs b/src/config.rs index 3b5c1d7..bf67595 100644 --- a/src/config.rs +++ b/src/config.rs @@ -88,7 +88,7 @@ pub struct MiniserveConfig { pub file_upload: bool, /// Restrict file upload dirs - pub restrict_upload_dir: Vec<PathBuf>, + pub allowed_upload_dir: Vec<PathBuf>, /// HTML accept attribute value pub uploadable_media_type: Option<String>, @@ -251,7 +251,7 @@ impl MiniserveConfig { show_qrcode: args.qrcode, mkdir_enabled: args.mkdir_enabled, file_upload: args.file_upload, - restrict_upload_dir: args.restrict_upload_dir, + allowed_upload_dir: args.allowed_upload_dir, uploadable_media_type, tar_enabled: args.enable_tar, tar_gz_enabled: args.enable_tar_gz, diff --git a/src/file_upload.rs b/src/file_upload.rs index e5f6173..231999f 100644 --- a/src/file_upload.rs +++ b/src/file_upload.rs @@ -173,9 +173,8 @@ pub async fn upload_file( // Disallow paths outside of restricted directories - // TODO: Probably not the most rust-ic style... - let upload_allowed = conf.restrict_upload_dir.is_empty() || - conf.restrict_upload_dir.iter().any(|s| upload_path.starts_with(s)); + let upload_allowed = conf.allowed_upload_dir.is_empty() || + conf.allowed_upload_dir.iter().any(|s| upload_path.starts_with(s)); if !(upload_allowed) { return Err(ContextualError::InvalidPathError("Not allowed to upload to this path".to_string())); diff --git a/src/renderer.rs b/src/renderer.rs index 0ee26af..107f0a4 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -40,7 +40,7 @@ pub fn page( let title_path = breadcrumbs_to_path_string(breadcrumbs); - let upload_allowed = conf.restrict_upload_dir.is_empty() || conf.restrict_upload_dir.iter().any( + let upload_allowed = conf.allowed_upload_dir.is_empty() || conf.allowed_upload_dir.iter().any( |x| encoded_dir.starts_with(&format!("/{}", x.display())) ); html! { diff --git a/tests/upload_files.rs b/tests/upload_files.rs index 35569cb..508d7c6 100644 --- a/tests/upload_files.rs +++ b/tests/upload_files.rs @@ -83,8 +83,8 @@ fn uploading_files_is_prevented(server: TestServer) -> Result<(), Error> { // This test runs the server with --restrict-upload-dir argument and // checks that file upload to a different directory is actually prevented. #[rstest] -#[case(server_no_stderr(&["-u", "--restrict-upload-dir", "someDir"]))] -#[case(server_no_stderr(&["-u", "--restrict-upload-dir", "someDir/some_sub_dir"]))] +#[case(server_no_stderr(&["-u", "--allowed-upload-dir", "someDir"]))] +#[case(server_no_stderr(&["-u", "--allowed-upload-dir", "someDir/some_sub_dir"]))] fn uploading_files_is_restricted( #[case] server: TestServer ) -> Result<(), Error> { @@ -116,8 +116,8 @@ fn uploading_files_is_restricted( // This tests that we can upload files to the directory specified by --restrict-upload-dir #[rstest] -#[case(server(&["-u", "--restrict-upload-dir", "someDir"]), "someDir")] -#[case(server(&["-u", "--restrict-upload-dir", "someDir/some_sub_dir"]), "someDir/some_sub_dir")] +#[case(server(&["-u", "--allowed-upload-dir", "someDir"]), "someDir")] +#[case(server(&["-u", "--allowed-upload-dir", "someDir/some_sub_dir"]), "someDir/some_sub_dir")] fn uploading_files_to_restricted_dir_works( #[case] server: TestServer, #[case] upload_dir: &str, |