Per-user SIP line storage + System Console admin page for Slash SIP (Phase 9)
  • Go 58%
  • TypeScript 33.3%
  • Makefile 6.2%
  • JavaScript 2.5%
Find a file
mohlec a6e64db494
All checks were successful
Build slash-sip-plugin / build (push) Successful in 15s
Merge pull request 'ci: fix plugin bundle missing top-level directory entry' (#4) from fix/bundle-missing-dir-entries into main
Reviewed-on: #4
2026-07-07 19:18:55 +00:00
.forgejo/workflows ci: fix plugin bundle missing top-level directory entry 2026-07-07 19:15:50 +00:00
public feat: initial slash-sip-plugin (Phase 9, task #4) 2026-07-07 00:05:00 -04:00
server feat: initial slash-sip-plugin (Phase 9, task #4) 2026-07-07 00:05:00 -04:00
webapp feat: initial slash-sip-plugin (Phase 9, task #4) 2026-07-07 00:05:00 -04:00
.gitignore feat: initial slash-sip-plugin (Phase 9, task #4) 2026-07-07 00:05:00 -04:00
CHANGELOG.md feat: initial slash-sip-plugin (Phase 9, task #4) 2026-07-07 00:05:00 -04:00
LICENSE chore: repo baseline (README + AGPL-3.0 LICENSE) 2026-07-07 00:05:00 -04:00
Makefile fix(build): bundle needs plugin-id root dir or Mattermost rejects it 2026-07-07 00:15:02 -04:00
plugin.json feat: initial slash-sip-plugin (Phase 9, task #4) 2026-07-07 00:05:00 -04:00
README.md chore: repo baseline (README + AGPL-3.0 LICENSE) 2026-07-07 00:05:00 -04:00

slash-sip-plugin

Mattermost/Slash plugin: per-user SIP softphone credential storage for the Slash SIP integration (Phase 9). Stores each user's SIP line(s) — extension, password, WSS server — and serves them to the Slash SIP client (slash-sip-client). This plugin never talks to the PBX and never proxies SIP/RTP; all signaling/media is client-side over WSS.

API

Route Who What
GET /plugins/com.ncwcom.slash-sip/api/v1/lines any authed user own lines, passwords masked
GET …/lines?include_secret=true any authed user own lines with decrypted password — the endpoint the softphone registers from
GET …/api/v1/admin/users?term=x system admin user search for the console page
GET …/api/v1/admin/lines/{user_id} system admin that user's lines, masked
PUT …/api/v1/admin/lines/{user_id} system admin replace lines; password ""/******** keeps the stored one

Passwords are AES-256-GCM encrypted at rest in the plugin KV store, keyed by the auto-generated EncryptionKey plugin setting. Admin responses never contain a secret (write-only field).

Build

make bundle          # server (linux amd64/arm64) + webapp -> dist/*.tar.gz
make install MM_HOST=... MM_TOKEN=...

System Console

Plugins → Slash SIP → SIP lines: search a user, add/edit/remove lines. Extension values come from NCW's phone team after manual PBX provisioning (see slash-deploy RUNBOOK.md, task #11).