From bac9fd57ec3faf9d3fe748146568f538b7acf098 Mon Sep 17 00:00:00 2001 From: valoq Date: Sun, 4 May 2025 18:51:38 +0200 Subject: [PATCH] add pseudocode for missing features --- Cargo.toml | 2 +- src/main.rs | 39 ++++++++++++++++++++++++++++++++------- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index dee715d..24f3d5e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ sevenz-rust2 = { version = "0.13.1", features = ["compress", "aes256"] } snap = "1.1.1" tar = "0.4.42" tempfile = "3.10.1" -thiserror = "1.0.64" +thiserror = "2.0.12" time = { version = "0.3.36", default-features = false } unrar = { version = "0.5.7", optional = true } xz2 = "0.1.7" diff --git a/src/main.rs b/src/main.rs index 071d524..d73986d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -34,13 +34,6 @@ pub const EXIT_FAILURE: i32 = libc::EXIT_FAILURE; fn main() { spawn_logger_thread(); - //restrict write permissions to the current workign directory - let working_dir = get_current_working_dir().expect("Cannot get current working dir"); - let path_str = working_dir.to_str().expect("Cannot convert path"); - let status = sandbox::restrict_paths(&[path_str]).expect("failed to build the ruleset"); - - //todo: check status and report error or warning if landlock restriction failed - let result = run(); shutdown_logger_and_wait(); @@ -52,9 +45,41 @@ fn main() { fn run() -> Result<()> { let (args, skip_questions_positively, file_visibility_policy) = CliArgs::parse_and_validate_args()?; + + // check args if case A: "decompress -d " or case B: "decompress -r" is used + //if true + //Case A: + // write_dirs = outputdir + //Case B: + // write_dir = inputdir + + //init_sandbox( write_dirs ); + init_sandbox(); + commands::run(args, skip_questions_positively, file_visibility_policy) } +// init_sandbox( write_dirs +fn init_sandbox() { + + //if empty write_dirs + //{ + //restrict write permissions to the current workign directory + let working_dir = get_current_working_dir().expect("Cannot get current working dir"); + let path_str = working_dir.to_str().expect("Cannot convert path"); + + //} + //else + //path_str = write_dirs; + let status = sandbox::restrict_paths(&[path_str]).expect("failed to build the ruleset"); + //} + + // todos: + // check status and report error or warning if landlock restriction failed + // add os detection to encapsulate this feature to be executed on linux only + // add implementation for other OS +} + fn get_current_working_dir() -> std::io::Result { env::current_dir() }