aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonas Diemer <jonasdiemer@gmail.com>2022-08-04 09:20:37 +0000
committerJonas Diemer <jonasdiemer@gmail.com>2022-09-18 18:25:35 +0000
commit550ae0151c1dadc6c1f00df300d88528c29fbf49 (patch)
treee533fdef6284f8c3f55e521f2c08f93d546d4a8c
parentAvoid error message during testing of restricted (diff)
downloadminiserve-550ae0151c1dadc6c1f00df300d88528c29fbf49.tar.gz
miniserve-550ae0151c1dadc6c1f00df300d88528c29fbf49.zip
Renamed option for more clarity
-rw-r--r--src/args.rs8
-rw-r--r--src/config.rs4
-rw-r--r--src/file_upload.rs5
-rw-r--r--src/renderer.rs2
-rw-r--r--tests/upload_files.rs8
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,