A cross-platform WebDAV server manager with both Graphical (GUI) and Command-Line (CLI) interfaces, built on WsgiDAV and Cheroot.
- 🖥️ Dual interface — GUI (PySide6) & interactive CLI (Rich/Click)
- ⚡ One-shot mode —
python main.py serve --dir /path - 🔐 Basic authentication support
- 🔒 Read-only mode
- 📋 Real-time log viewer in both GUI and CLI
- 💾 Persistent configuration (
~/.webdav-server/config.json) - ♻️ Hot restart without losing configuration
# Install dependencies
pip install -r requirements.txt
# Launch GUI (or fallback to CLI if no display)
python main.py
# Force CLI interactive mode
python main.py --cli
# One-shot serve
python main.py serve --dir /path/to/share --port 8080Usage: python main.py [OPTIONS] COMMAND [ARGS]...
Commands:
start Start the server (blocks until Ctrl+C)
serve Quick one-shot directory serving
status Show server status
config View or reset saved configuration
Run python main.py or python main.py --cli to enter the interactive shell:
webdav> start --dir /home/share --port 9090 --auth --user admin
webdav> status
webdav> stop
webdav> config show
webdav> help
webdav> quit
The GUI provides a visual configuration panel with:
- Directory browser picker
- Host / port settings
- Read-only & authentication toggles
- Start / Stop / Restart buttons
- Live scrolling log output
Persistent config is stored at ~/.webdav-server/config.json:
{
"host": "0.0.0.0",
"port": 8080,
"root_dir": ".",
"readonly": false,
"auth": false,
"username": "",
"password": "",
"verbose": 1
}- Python 3.10+
- WsgiDAV — WebDAV server
- Cheroot — Pure-Python HTTP server
- Click — CLI framework
- Rich — Terminal UI
- PySide6 — GUI (optional, falls back to CLI)
This project is licensed under the GNU General Public License v3.0 — see the LICENSE file for details.