Skip to content

v0.1.9 — Authentication

Choose a tag to compare

@langerma langerma released this 03 Apr 12:22
· 104 commits to main since this release
aebf792

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-byte crypto/rand session tokens; configurable TTL (default 24 h)
  • --set-password CLI — reads from /dev/tty so it works correctly when stdin is piped; install.sh and make install prompt 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.1 only 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-User from 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 dumpstore

Or 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