Skip to content
/ dufs Public
forked from sigoden/dufs

A file server that supports static serving, uploading, searching, accessing control, webdav...

License

Notifications You must be signed in to change notification settings

hydrionz/dufs

This branch is 256 commits behind sigoden/dufs:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jun 23, 2022
c1c6dbc · Jun 23, 2022
Jun 7, 2022
Jun 21, 2022
Jun 21, 2022
Jun 21, 2022
Jun 3, 2022
May 26, 2022
Jun 23, 2022
Jun 23, 2022
Jun 23, 2022
Jun 19, 2022
May 26, 2022
May 26, 2022
Jun 20, 2022

Repository files navigation

Dufs (Old Name: Duf)

CI Crates

Dufs is a distinctive utility file server that supports static serving, uploading, searching, accessing control, webdav...

demo

Features

  • Serve static files
  • Download folder as zip file
  • Upload files and folders (Drag & Drop)
  • Search files
  • Partial responses (Parallel/Resume download)
  • Path level access control
  • Support https
  • Support webdav
  • Easy to use with curl

Install

With cargo

cargo install dufs

With docker

docker run -v `pwd`:/data -p 5000:5000 --rm -it sigoden/dufs /data

Binaries on macOS, Linux, Windows

Download from Github Releases, unzip and add dufs to your $PATH.

CLI

Dufs is a distinctive utility file server - https://github.com/sigoden/dufs

USAGE:
    dufs [OPTIONS] [--] [path]

ARGS:
    <path>    Specific path to serve [default: .]

OPTIONS:
    -b, --bind <addr>...         Specify bind address
    -p, --port <port>            Specify port to listen on [default: 5000]
        --path-prefix <path>     Specify an path prefix
    -a, --auth <rule>...         Add auth for path
        --auth-method <value>    Select auth method [default: digest] [possible values: basic, digest]
    -A, --allow-all              Allow all operations
        --allow-upload           Allow upload files/folders
        --allow-delete           Allow delete files/folders
        --allow-search           Allow search files/folders
        --allow-symlink          Allow symlink to files/folders outside root directory
        --enable-cors            Enable CORS, sets `Access-Control-Allow-Origin: *`
        --render-index           Serve index.html when requesting a directory, returns 404 if not found index.html
        --render-try-index       Serve index.html when requesting a directory, returns file listing if not found index.html
        --render-spa             Serve SPA(Single Page Application)
        --tls-cert <path>        Path to an SSL/TLS certificate to serve with HTTPS
        --tls-key <path>         Path to the SSL/TLS certificate's private key
    -h, --help                   Print help information
    -V, --version                Print version information

Examples

Serve current working directory

dufs

Explicitly allow all operations including upload/delete

dufs -A

Only allow upload operation

dufs --allow-upload

Serve a directory

dufs Downloads

Serve a single file

dufs linux-distro.iso

Serve index.html when requesting a directory

dufs --render-index

Serve SPA(Single Page Application)

dufs --render-spa

Require username/password

dufs -a /@admin:123

Listen on a specific port

dufs -p 80

Use https

dufs --tls-cert my.crt --tls-key my.key

API

Download a file

curl http://127.0.0.1:5000/path-to-file

Download a folder as zip file

curl -o path-to-folder.zip http://127.0.0.1:5000/path-to-folder?zip

Upload a file

curl --upload-file path-to-file http://127.0.0.1:5000/path-to-file

Delete a file/folder

curl -X DELETE http://127.0.0.1:5000/path-to-file

Access Control

Dufs supports path level access control. You can control who can do what on which path with --auth/-a.

dufs -a <path>@<readwrite>[@<readonly>]
  • <path>: Path to protected
  • <readwrite>: Account with readwrite permission, required
  • <readonly>: Account with readonly permission, optional

<readonly> can be * means <path> is public, everyone can access/download it.

For example:

dufs -a /@admin:pass@* -a /ui@designer:pass1 -A
  • All files/folders are public to access/download.
  • Account admin:pass can upload/delete/download any files/folders.
  • Account designer:pass1 can upload/delete/download any files/folders in the ui folder.

License

Copyright (c) 2022 dufs-developers.

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.

About

A file server that supports static serving, uploading, searching, accessing control, webdav...

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 85.1%
  • JavaScript 10.0%
  • CSS 2.6%
  • HTML 1.9%
  • Other 0.4%