feat: initial slash-sip-plugin — per-user SIP line storage (Phase 9, task #4) #1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/initial-plugin"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Spec #4 implementation (PRD-slash-sip.md). Mirrors slash-dispatch-plugin structure.
DoD status (verification results follow in comments):
SIPLinesAdmin)Mattermost-User-Idonly)?include_secret=truefetch. Taken literally, DoD 3 would also forbid that — but then the softphone could never register. Flagged in PRD session notes; if you want strict DoD 3, delete the query param and decide credential delivery in #5.Also: AES-256-GCM at rest via auto-generated
EncryptionKey(there is no literal "KV encryption helper" in the plugin API — this is the standard plugin pattern, e.g. mattermost-plugin-github).Spec #4 DoD verification — 2026-07-07 session (dev instance: vanilla Mattermost 9.11.6 team + throwaway postgres in the session sandbox; no staging slash-server exists, chat-staging.ncwcom.com is NXDOMAIN — noted in PRD).
PUT /api/v1/admin/lines/{id}(the endpoint the console page drives) — accepted, echoed maskedGET /linesreturns the line; a different authed user gets[]; non-admin on admin endpoint → 403********) in admin PUT/GET and owner GET; at-rest KV holds AES-GCM ciphertext (checked thepluginkeyvaluestorerow directly — no plaintext). Exception is the documented owner-only?include_secret=truefetch, which returned the secret to the owner only — see PR description flaggo vet/go testclean; installs+enables viammctl --local plugin add/enableafter the bundle root-dir fix (commit above)Unit tests cover crypto round-trip, masked-password preservation on update, and response masking.
Caveats: verified against vanilla MM 9.11.6, not the slash-server 11.7 fork; System Console React page not exercised in a browser (API it drives is). CI on this PR builds both.