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);
}