Add WebDAV support via Apache mod_dav

Backend:
- WebDAV config managed at /etc/apache2/conf-available/micronas-webdav.conf
  with BEGIN/END markers per share; reload apache2 on every write
- htpasswd file at /etc/micronas-webdav.passwd synced automatically on
  create_user, change_password, delete_user
- Full CRUD: POST/PATCH/DELETE /api/share/webdav[/<name>]
- _validate_webdav_users(): space-separated, no @group (not supported by Apache)
- Fix: _validate_users() now allows @groupname for SMB (was incorrectly rejected)
- Dashboard: apache2 status + restart button; webdav shares in /api/dashboard

Frontend:
- WebDAV tab: create form + table with clickable access URLs
- Edit modal supports 'webdav' type (name, path, users, permissions section)
- badge-webdav CSS class (green tint) in app.css
- dashboard.js renders badge-<type> dynamically (smb/nfs/webdav)

Docs: README WebDAV mount guide (Linux davfs2, Windows, Mac), PLANNING phase 4

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Sonnet 4.6 committed 2026-06-20 01:22:19 +02:00
1 parent 1be6a05cef
commit 7c9fe07a17
7 files changed
+338 -19

No files matched your search

+13 -3
View File
@@ -102,9 +102,19 @@ MicroNAS/
- [x] **Delete confirmation modal** — replaces browser confirm().
- [x] **Auto-refresh countdown** — 30 s timer with live seconds display.
### Phase 4 — WebDAV + extras
- [ ] **WebDAV** support. Preferred approach: drop an Apache/nginx config
snippet — don't build it in Flask.
### Phase 4 — WebDAV ✅
- [x] Apache `mod_dav` + `mod_dav_fs` managed by MicroNAS.
Config written to `/etc/apache2/conf-available/micronas-webdav.conf`
with BEGIN/END markers per share; `a2enconf` + `systemctl reload apache2`.
- [x] Shares served at `http://<server>/dav/<name>` (Apache on port 80).
- [x] Auth via htpasswd (`/etc/micronas-webdav.passwd`) — passwords synced
automatically when creating/changing user passwords in the Users tab.
- [x] Full CRUD: create, edit (name/path/users/permissions), delete.
- [x] Dashboard: apache2 status dot + restart button.
- [x] WebDAV badge in dashboard shares overview.
- [x] @groupname fix in SMB valid users (was incorrectly rejected by VALID_NAME).
### Phase 5 — Nice-to-have
- [ ] Simple in-browser file browser for `/srv`.
- [ ] Auto-create share directory on add (with correct owner/permissions).