Only serve static files, disable editing operations such as update or delete
```
-duf --no-change
+duf --readonly
```
Finally, run this command to see a list of all available option
.help("Path to a directory for serving files"),
)
.arg(
- Arg::new("no-change")
- .short('C')
- .long("no-change")
+ Arg::new("readonly")
+ .short('r')
+ .long("readonly")
.help("Disable change operations such as update or delete"),
)
.arg(
Arg::new("auth")
.short('a')
.long("auth")
- .help("Authenticate with user and pass")
+ .help("Use HTTP authentication for all operations")
.value_name("user:pass"),
)
+ .arg(
+ Arg::new("no-auth-read")
+ .long("no-auth-read")
+ .help("Do not authenticate read operations like static serving"),
+ )
.arg(
Arg::new("cors")
.long("cors")
pub path: PathBuf,
pub readonly: bool,
pub auth: Option<String>,
+ pub no_auth_read: bool,
pub cors: bool,
}
let port = matches.value_of_t::<u16>("port")?;
let path = matches.value_of_os("path").unwrap_or_default();
let path = Args::parse_path(path)?;
- let readonly = matches.is_present("no-change");
+ let readonly = matches.is_present("readonly");
let cors = matches.is_present("cors");
let auth = matches.value_of("auth").map(|v| v.to_owned());
+ let no_auth_read = matches.is_present("no-auth-read");
Ok(Args {
address,
path,
readonly,
auth,
+ no_auth_read,
cors,
})
}
let value = std::str::from_utf8(&value)?;
return Ok(value == auth);
} else {
+ if self.args.no_auth_read && req.method() == Method::GET {
+ return Ok(true);
+ }
return Ok(false);
}
}