diff --git a/README.md b/README.md index f2e0ba0..78d0d24 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,12 @@ Duf is a fully functional file server. cargo install duf ``` +### With docker + +``` +docker run -v /tmp:/tmp -p 5000:5000 --rm -it docker.io/sigoden/duf /tmp +``` + ### Binaries on macOS, Linux, Windows Download from [Github Releases](https://github.com/sigoden/duf/releases), unzip and add duf to your $PATH. @@ -50,7 +56,7 @@ OPTIONS: --allow-delete Allow delete files/folders --allow-symlink Allow symlink to files/folders outside root directory --allow-upload Allow upload files/folders - -b, --bind
Specify bind address [default: 127.0.0.1] + -b, --bind
Specify bind address [default: 0.0.0.0] --cors Enable CORS, sets `Access-Control-Allow-Origin: *` -h, --help Print help information -p, --port Specify port to listen on [default: 5000] @@ -76,18 +82,10 @@ duf duf folder_name ``` -Listen on all Interfaces and port 3000 - -``` -duf -b 0.0.0.0 -p 3000 -``` - Allow all operations such as upload, delete ```sh duf --allow-all -# or -duf -A ``` Only allow upload operation @@ -102,7 +100,7 @@ Serve a single page application (SPA) duf --render-spa ``` -Serve https +Use https ``` duf --tls-cert my.crt --tls-key my.key diff --git a/src/args.rs b/src/args.rs index 63fa556..c5e510d 100644 --- a/src/args.rs +++ b/src/args.rs @@ -16,7 +16,7 @@ fn app() -> clap::Command<'static> { Arg::new("address") .short('b') .long("bind") - .default_value("127.0.0.1") + .default_value("0.0.0.0") .help("Specify bind address") .value_name("address"), ) @@ -173,7 +173,7 @@ impl Args { fn parse_path>(path: P) -> BoxResult { let path = path.as_ref(); if !path.exists() { - bail!("error: path \"{}\" doesn't exist", path.display()); + return Err(format!("Path `{}` doesn't exist", path.display()).into()); } env::current_dir() @@ -181,27 +181,14 @@ impl Args { p.push(path); // If path is absolute, it replaces the current path. std::fs::canonicalize(p) }) - .or_else(|err| { - bail!( - "error: failed to access path \"{}\": {}", - path.display(), - err, - ) - }) + .map_err(|err| format!("Failed to access path `{}`: {}", path.display(), err,).into()) } /// Construct socket address from arguments. pub fn address(&self) -> BoxResult { format!("{}:{}", self.address, self.port) .parse() - .or_else(|err| { - bail!( - "error: invalid address {}:{} : {}", - self.address, - self.port, - err, - ) - }) + .map_err(|_| format!("Invalid bind address `{}:{}`", self.address, self.port).into()) } } diff --git a/src/main.rs b/src/main.rs index 53f237f..e6c8e25 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,3 @@ -macro_rules! bail { - ($($tt:tt)*) => { - return Err(From::from(format!($($tt)*))) - } -} - mod args; mod server; @@ -23,6 +17,6 @@ async fn run() -> BoxResult<()> { } fn handle_err(err: Box) -> T { - eprintln!("Server error: {}", err); + eprintln!("error: {}", err); std::process::exit(1); }