feat: rename to dufs (#59)
close #50 BREAKING CHANGE: rename duf to dufs
This commit is contained in:
parent
3260b52c47
commit
a67da8bdd3
10 changed files with 36 additions and 36 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -570,7 +570,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
|
checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "duf"
|
name = "dufs"
|
||||||
version = "0.18.0"
|
version = "0.18.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"assert_cmd",
|
"assert_cmd",
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
[package]
|
[package]
|
||||||
name = "duf"
|
name = "dufs"
|
||||||
version = "0.18.0"
|
version = "0.18.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
authors = ["sigoden <sigoden@gmail.com>"]
|
authors = ["sigoden <sigoden@gmail.com>"]
|
||||||
description = "Duf is a simple file server."
|
description = "Dufs is a simple file server."
|
||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
homepage = "https://github.com/sigoden/duf"
|
homepage = "https://github.com/sigoden/dufs"
|
||||||
repository = "https://github.com/sigoden/duf"
|
repository = "https://github.com/sigoden/dufs"
|
||||||
categories = ["command-line-utilities", "web-programming::http-server"]
|
categories = ["command-line-utilities", "web-programming::http-server"]
|
||||||
keywords = ["static", "file", "server", "webdav", "cli"]
|
keywords = ["static", "file", "server", "webdav", "cli"]
|
||||||
|
|
||||||
|
|
|
@ -6,5 +6,5 @@ COPY . .
|
||||||
RUN cargo build --target x86_64-unknown-linux-musl --release
|
RUN cargo build --target x86_64-unknown-linux-musl --release
|
||||||
|
|
||||||
FROM scratch
|
FROM scratch
|
||||||
COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/duf /bin/
|
COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/dufs /bin/
|
||||||
ENTRYPOINT ["/bin/duf"]
|
ENTRYPOINT ["/bin/dufs"]
|
38
README.md
38
README.md
|
@ -1,11 +1,11 @@
|
||||||
# Duf
|
# Dufs (Old Name: Duf)
|
||||||
|
|
||||||
[![CI](https://github.com/sigoden/duf/actions/workflows/ci.yaml/badge.svg)](https://github.com/sigoden/duf/actions/workflows/ci.yaml)
|
[![CI](https://github.com/sigoden/dufs/actions/workflows/ci.yaml/badge.svg)](https://github.com/sigoden/dufs/actions/workflows/ci.yaml)
|
||||||
[![Crates](https://img.shields.io/crates/v/duf.svg)](https://crates.io/crates/duf)
|
[![Crates](https://img.shields.io/crates/v/dufs.svg)](https://crates.io/crates/dufs)
|
||||||
|
|
||||||
Duf is a simple file server. Support static serve, search, upload, webdav...
|
Dufs is a simple file server. Support static serve, search, upload, webdav...
|
||||||
|
|
||||||
![demo](https://user-images.githubusercontent.com/4012553/171526189-09afc2de-793f-4216-b3d5-31ea408d3610.png)
|
![demo](https://user-images.githubusercontent.com/4012553/174486522-7af350e6-0195-4f4a-8480-d9464fc6452f.png)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
|
@ -24,26 +24,26 @@ Duf is a simple file server. Support static serve, search, upload, webdav...
|
||||||
### With cargo
|
### With cargo
|
||||||
|
|
||||||
```
|
```
|
||||||
cargo install duf
|
cargo install dufs
|
||||||
```
|
```
|
||||||
|
|
||||||
### With docker
|
### With docker
|
||||||
|
|
||||||
```
|
```
|
||||||
docker run -v `pwd`:/data -p 5000:5000 --rm -it sigoden/duf /data
|
docker run -v `pwd`:/data -p 5000:5000 --rm -it sigoden/dufs /data
|
||||||
```
|
```
|
||||||
|
|
||||||
### Binaries on macOS, Linux, Windows
|
### Binaries on macOS, Linux, Windows
|
||||||
|
|
||||||
Download from [Github Releases](https://github.com/sigoden/duf/releases), unzip and add duf to your $PATH.
|
Download from [Github Releases](https://github.com/sigoden/dufs/releases), unzip and add dufs to your $PATH.
|
||||||
|
|
||||||
## CLI
|
## CLI
|
||||||
|
|
||||||
```
|
```
|
||||||
Duf is a simple file server. - https://github.com/sigoden/duf
|
Dufs is a simple file server. - https://github.com/sigoden/dufs
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
duf [OPTIONS] [--] [path]
|
dufs [OPTIONS] [--] [path]
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<path> Path to a root directory for serving files [default: .]
|
<path> Path to a root directory for serving files [default: .]
|
||||||
|
@ -72,31 +72,31 @@ OPTIONS:
|
||||||
Serve current working directory, no upload/delete
|
Serve current working directory, no upload/delete
|
||||||
|
|
||||||
```
|
```
|
||||||
duf
|
dufs
|
||||||
```
|
```
|
||||||
|
|
||||||
Allow upload/delete
|
Allow upload/delete
|
||||||
|
|
||||||
```
|
```
|
||||||
duf -A
|
dufs -A
|
||||||
```
|
```
|
||||||
|
|
||||||
Listen on a specific port
|
Listen on a specific port
|
||||||
|
|
||||||
```
|
```
|
||||||
duf -p 80
|
dufs -p 80
|
||||||
```
|
```
|
||||||
|
|
||||||
For a single page application (SPA)
|
For a single page application (SPA)
|
||||||
|
|
||||||
```
|
```
|
||||||
duf --render-spa
|
dufs --render-spa
|
||||||
```
|
```
|
||||||
|
|
||||||
Use https
|
Use https
|
||||||
|
|
||||||
```
|
```
|
||||||
duf --tls-cert my.crt --tls-key my.key
|
dufs --tls-cert my.crt --tls-key my.key
|
||||||
```
|
```
|
||||||
|
|
||||||
## API
|
## API
|
||||||
|
@ -156,7 +156,7 @@ The `--render-*` options change the render logic:
|
||||||
</summary>
|
</summary>
|
||||||
|
|
||||||
```
|
```
|
||||||
duf -a <path>@<readwrite>[@<readonly>]
|
dufs -a <path>@<readwrite>[@<readonly>]
|
||||||
```
|
```
|
||||||
|
|
||||||
- `<path>`: Path to protected
|
- `<path>`: Path to protected
|
||||||
|
@ -168,7 +168,7 @@ duf -a <path>@<readwrite>[@<readonly>]
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
```
|
```
|
||||||
duf -a /@admin:pass@* -a /ui@designer:pass1 -A
|
dufs -a /@admin:pass@* -a /ui@designer:pass1 -A
|
||||||
```
|
```
|
||||||
- All files/folders are public to access/download.
|
- All files/folders are public to access/download.
|
||||||
- Account `admin:pass` can upload/delete/download any files/folders.
|
- Account `admin:pass` can upload/delete/download any files/folders.
|
||||||
|
@ -184,8 +184,8 @@ curl --digest -u designer:pass1 http://127.0.0.1:5000/ui/path-to-file
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Copyright (c) 2022 duf-developers.
|
Copyright (c) 2022 dufs-developers.
|
||||||
|
|
||||||
duf is made available under the terms of either the MIT License or the Apache License 2.0, at your option.
|
dufs is made available under the terms of either the MIT License or the Apache License 2.0, at your option.
|
||||||
|
|
||||||
See the LICENSE-APACHE and LICENSE-MIT files for license details.
|
See the LICENSE-APACHE and LICENSE-MIT files for license details.
|
|
@ -11,7 +11,7 @@ use uuid::Uuid;
|
||||||
use crate::utils::encode_uri;
|
use crate::utils::encode_uri;
|
||||||
use crate::BoxResult;
|
use crate::BoxResult;
|
||||||
|
|
||||||
const REALM: &str = "DUF";
|
const REALM: &str = "DUFS";
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref NONCESTARTHASH: Context = {
|
static ref NONCESTARTHASH: Context = {
|
||||||
|
|
|
@ -698,7 +698,7 @@ impl Server {
|
||||||
"__SLOT__",
|
"__SLOT__",
|
||||||
&format!(
|
&format!(
|
||||||
r#"
|
r#"
|
||||||
<title>Index of {} - Duf</title>
|
<title>Index of {} - Dufs</title>
|
||||||
<style>{}</style>
|
<style>{}</style>
|
||||||
<script>
|
<script>
|
||||||
const DATA =
|
const DATA =
|
||||||
|
|
|
@ -35,7 +35,7 @@ fn path_prefix_propfind(
|
||||||
#[rstest]
|
#[rstest]
|
||||||
#[case("index.html")]
|
#[case("index.html")]
|
||||||
fn serve_single_file(tmpdir: TempDir, port: u16, #[case] file: &str) -> Result<(), Error> {
|
fn serve_single_file(tmpdir: TempDir, port: u16, #[case] file: &str) -> Result<(), Error> {
|
||||||
let mut child = Command::cargo_bin("duf")?
|
let mut child = Command::cargo_bin("dufs")?
|
||||||
.env("RUST_LOG", "false")
|
.env("RUST_LOG", "false")
|
||||||
.arg(tmpdir.path().join(file))
|
.arg(tmpdir.path().join(file))
|
||||||
.arg("-p")
|
.arg("-p")
|
||||||
|
|
|
@ -12,7 +12,7 @@ use std::process::{Command, Stdio};
|
||||||
#[rstest]
|
#[rstest]
|
||||||
#[case(&["-b", "20.205.243.166"])]
|
#[case(&["-b", "20.205.243.166"])]
|
||||||
fn bind_fails(tmpdir: TempDir, port: u16, #[case] args: &[&str]) -> Result<(), Error> {
|
fn bind_fails(tmpdir: TempDir, port: u16, #[case] args: &[&str]) -> Result<(), Error> {
|
||||||
Command::cargo_bin("duf")?
|
Command::cargo_bin("dufs")?
|
||||||
.env("RUST_LOG", "false")
|
.env("RUST_LOG", "false")
|
||||||
.arg(tmpdir.path())
|
.arg(tmpdir.path())
|
||||||
.arg("-p")
|
.arg("-p")
|
||||||
|
@ -50,7 +50,7 @@ fn bind_ipv4_ipv6(
|
||||||
#[case(&[] as &[&str])]
|
#[case(&[] as &[&str])]
|
||||||
#[case(&["--path-prefix", "/prefix"])]
|
#[case(&["--path-prefix", "/prefix"])]
|
||||||
fn validate_printed_urls(tmpdir: TempDir, port: u16, #[case] args: &[&str]) -> Result<(), Error> {
|
fn validate_printed_urls(tmpdir: TempDir, port: u16, #[case] args: &[&str]) -> Result<(), Error> {
|
||||||
let mut child = Command::cargo_bin("duf")?
|
let mut child = Command::cargo_bin("dufs")?
|
||||||
.env("RUST_LOG", "false")
|
.env("RUST_LOG", "false")
|
||||||
.arg(tmpdir.path())
|
.arg(tmpdir.path())
|
||||||
.arg("-p")
|
.arg("-p")
|
||||||
|
|
|
@ -83,7 +83,7 @@ pub fn port() -> u16 {
|
||||||
free_local_port().expect("Couldn't find a free local port")
|
free_local_port().expect("Couldn't find a free local port")
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Run duf as a server; Start with a temporary directory, a free port and some
|
/// Run dufs as a server; Start with a temporary directory, a free port and some
|
||||||
/// optional arguments then wait for a while for the server setup to complete.
|
/// optional arguments then wait for a while for the server setup to complete.
|
||||||
#[fixture]
|
#[fixture]
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
|
@ -94,7 +94,7 @@ where
|
||||||
{
|
{
|
||||||
let port = port();
|
let port = port();
|
||||||
let tmpdir = tmpdir();
|
let tmpdir = tmpdir();
|
||||||
let child = Command::cargo_bin("duf")
|
let child = Command::cargo_bin("dufs")
|
||||||
.expect("Couldn't find test binary")
|
.expect("Couldn't find test binary")
|
||||||
.env("RUST_LOG", "false")
|
.env("RUST_LOG", "false")
|
||||||
.arg(tmpdir.path())
|
.arg(tmpdir.path())
|
||||||
|
@ -122,7 +122,7 @@ where
|
||||||
{
|
{
|
||||||
let port = port();
|
let port = port();
|
||||||
let tmpdir = tmpdir();
|
let tmpdir = tmpdir();
|
||||||
let child = Command::cargo_bin("duf")
|
let child = Command::cargo_bin("dufs")
|
||||||
.expect("Couldn't find test binary")
|
.expect("Couldn't find test binary")
|
||||||
.env("RUST_LOG", "false")
|
.env("RUST_LOG", "false")
|
||||||
.arg(tmpdir.path())
|
.arg(tmpdir.path())
|
||||||
|
|
|
@ -29,7 +29,7 @@ fn tls_works(#[case] server: TestServer) -> Result<(), Error> {
|
||||||
/// Wrong path for cert throws error.
|
/// Wrong path for cert throws error.
|
||||||
#[rstest]
|
#[rstest]
|
||||||
fn wrong_path_cert() -> Result<(), Error> {
|
fn wrong_path_cert() -> Result<(), Error> {
|
||||||
Command::cargo_bin("duf")?
|
Command::cargo_bin("dufs")?
|
||||||
.args(&["--tls-cert", "wrong", "--tls-key", "tests/data/key.pem"])
|
.args(&["--tls-cert", "wrong", "--tls-key", "tests/data/key.pem"])
|
||||||
.assert()
|
.assert()
|
||||||
.failure()
|
.failure()
|
||||||
|
@ -41,7 +41,7 @@ fn wrong_path_cert() -> Result<(), Error> {
|
||||||
/// Wrong paths for key throws errors.
|
/// Wrong paths for key throws errors.
|
||||||
#[rstest]
|
#[rstest]
|
||||||
fn wrong_path_key() -> Result<(), Error> {
|
fn wrong_path_key() -> Result<(), Error> {
|
||||||
Command::cargo_bin("duf")?
|
Command::cargo_bin("dufs")?
|
||||||
.args(&["--tls-cert", "tests/data/cert.pem", "--tls-key", "wrong"])
|
.args(&["--tls-cert", "tests/data/cert.pem", "--tls-key", "wrong"])
|
||||||
.assert()
|
.assert()
|
||||||
.failure()
|
.failure()
|
||||||
|
|
Loading…
Reference in a new issue