noelorin
91b4f01310
feat(distro): sfu distributor abstraction + fanout manager + cdn stub
2026-08-23 14:01:26 +08:00
noelorin
46a6bd02d9
feat: 接入 sync-live 后端重构,前端全面对齐新协议与接口
...
- proto: live_sfu.proto -> sync_live.proto (synclive.v1/SyncLive),重生成 gen/sync_live.*
- module: example.com/live-sfu -> sync-live,go.mod/go.sum 同步
- 后端: 新增 internal/room (role/member/room/service/store/permission),manage 治理面 internal/server/manage.go,auth(jwt/policy) 与 gateway/server 重构,适配 token_type/access+refresh 与 HttpOnly Cookie
- 前端: types/api/auth/permissions 全量对齐,rooms 优先 query 分页、manage 创建,login 双模式+角色降级,用户管理封禁/解封,新增 /manage 5 Tab 治理页,主题与路由同步
- 构建: web 产物直出 internal/server/static,role 字符串序列化兼容数字,libsql 链接告警忽略
验证: web tsc --noEmit / go test / vite build / go build 常驻联调通过 (role:"creator" / manage/overview/rooms/query/create/members/refresh)
2026-08-21 00:31:51 +08:00
noelorin
7274cf58f3
feat(chat): room chat/danmaku over SSE with history replay, host broadcast API and rate limit
...
- chatHub broadcasts room danmaku over SSE; new subscribers replay the
last N messages on join so they don't face an empty room.
- Add a host-only external push endpoint POST /api/room/{room}/broadcast
(requires room:publish, Bearer token) that marks messages host:true.
- Slide-window rate limiter (room+sender+IP, 5 per 3s) guards both the
public chat and the broadcast endpoint.
- Wire RBAC room:chat policy, SPA routing and the room-creation route.
2026-08-20 15:03:18 +08:00
noelorin
115b34dcd3
feat(auth): 基于 casbin 的登录与 RBAC 权限系统
...
- 引入 github.com/casbin/casbin/v2 实现 RBAC (model.conf + policy.csv)
- 角色: admin/publisher/viewer/guest,资源: config/room/user/srs,动作: read/list/publish/subscribe/stop/watch/manage
- JWT 登录 (golang-jwt/jwt/v5,bcrypt 存储,data/users.json 持久化,种子用户 admin/publisher/viewer)
- 中间件: HTTP AuthorizeMiddleware + gRPC Unary/Stream 拦截器,支持 Authorization Bearer/Cookie/Query/X-Token
- 新增 API: POST /api/auth/login|register|logout, GET /api/auth/me|users|check, POST /api/auth/users/role (Casbin 鉴权)
- 保护业务路由: /api/publish/subscribe/stop/rooms/room/*/events/srs/streams 及媒体代理 /rtc/v1/* /api/cf/*
- gRPC 契约新增 Login/Register/GetMe/ListUsers/UpdateUserRole (api/live_sfu.proto + gen)
- 前端 login.html + app.js 自动附加 Authorization,SSE 通过 ?token 传递,未登录自动跳转
- 配置: JWT_SECRET/JWT_TTL/CASBIN_MODEL/CASBIN_POLICY/AUTH_USER_FILE/ALLOW_REGISTER
- 集成 TursoDB 持久化与测试覆盖 (auth_test.go)
2026-08-19 16:42:17 +08:00
noelorin
c4a50b07c6
feat: live SFU fan-out demo (Cloudflare Realtime + SRS)
...
- protobuf/gRPC control plane (LiveSFU service, buf generated)
- Cloudflare Realtime as primary SFU, SRS as secondary backend
- WHIP/WHEP + Cloudflare Realtime media proxies (server injects credentials)
- room fan-out state with SSE; publish/watch frontend
2026-08-17 15:14:51 +08:00