Repository navigation
v0.1.9 — Authentication
What's new
Authentication (#51)
dumpstore now requires a password. No more relying solely on network access control.
- Session-based login — bcrypt-hashed password (cost 12) stored in
/etc/dumpstore/dumpstore.conf; 32-bytecrypto/randsession tokens; configurable TTL (default 24 h) --set-passwordCLI — reads from/dev/ttyso it works correctly when stdin is piped;install.shandmake installprompt automatically on first install and skip on upgrade- No password → loopback only — if the config file has no password the service binds to
127.0.0.1only and logs a loud warning instead of refusing to start - Per-IP rate limiting — 10 login attempts per 60 s window
- Reverse proxy delegation —
X-Remote-Userfrom explicitly configured trusted proxy CIDRs bypasses the password login; safe for Authelia / Caddy / nginx SSO setups - Auth settings UI — Change Password and Change Username in the Users & Groups tab; both go through Ansible and show the operation log
- Login page — dark monospace theme matching the rest of the UI, dumpstore logo, self-contained HTML
- Header — logout button and username badge when authenticated
Dependencies
Adds golang.org/x/crypto (bcrypt) and golang.org/x/term (echo-off prompting) — both official golang.org/x packages.
Upgrade notes
After upgrading, run --set-password before restarting the service, or the service will bind to 127.0.0.1 only:
sudo /usr/local/lib/dumpstore/dumpstore --set-password --config /etc/dumpstore/dumpstore.conf
sudo systemctl restart dumpstoreOr just re-run sudo ./install.sh — it detects that no password is set and prompts automatically.
What's Changed
- fix: close lagging SSE subscribers instead of silently dropping messages by @langerma in #42
- refactor: split app.js into per-tab ES modules by @langerma in #43
- fix: validate CHAP password with safePassword like Unix/SMB passwords by @langerma in #44
- fix: add existence pre-checks to snapshot/dataset/ACL handlers by @langerma in #45
- fix: validate numeric ZFS size properties before sending to playbook by @langerma in #46
- feat: client-side name validation and SSE status badge by @langerma in #47
- feat: audit logging for all mutating API operations by @langerma in #48
- feat: session-based authentication by @langerma in #64
Full Changelog: v0.1.8...v0.1.9