/asgi-webdav

An asynchronous WebDAV server implementation, Support multi-provider, multi-account and permission control.

Primary LanguagePythonMIT LicenseMIT

ASGI WebDAV Server

GitHub PyPI Pytest Workflow Status codecov Code style: black Docker Pulls PyPI - Downloads GitHub Downloads

An asynchronous WebDAV server implementation, Support multi-provider, multi-account and permission control.

Features

  • ASGI standard
  • WebDAV standard: RFC4918
  • Support multi-provider: FileSystemProvider, MemoryProvider
  • Support multi-account and permission control
  • Support optional home directory
  • Support store password in raw/hashlib/LDAP(experimental) mode
  • Full asyncio file IO
  • Passed all litmus(0.13) test, except 3 warning
  • Browse the file directory in the browser
  • Support HTTP Basic/Digest authentication
  • Support response in Gzip/Brotli
  • Compatible with macOS finder and Window10 Explorer

Python Version

v3.10+

Quickstart

中文手册

docker pull ray1ex/asgi-webdav
docker run -dit --restart unless-stopped \
  -p 8000:8000 \
  -e UID=1000 -e GID=1000 \
  -v /your/data:/data \
  --name asgi-webdav ray1ex/asgi-webdav

Default Account

value description
username username -
password password -
permission ["+"] Allow access to all directories

View in Browser

View in Browser

Documentation

Documentation at GitHub Page

TODO

  • Digest auth support neon
  • SQL database provider
  • Test big(1GB+) file in MemoryProvider
  • display server info in page /_/admin or /_/
  • Fail2ban(docker)
  • NFSProvider
  • logout at the web page
  • Fix MemoryProvider with macOS finder(create new file)
  • rewrite MemoryProvider with mmap
  • generate template URL for share(read only)

Related Projects