Clone
5
Task-66-Sense视频接入与Profile
ila edited this page 2026-08-27 17:10:18 +08:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

66 Sense视频接入与Profile

  • 类型:需求
  • 所属 Epic:#7
  • 所属 MVP / 版本:#8
  • 状态:已完成
  • 日期:2026-08-14
  • 验收:用户于 2026-08-14 明确验收通过
  • 工单:#66
  • Pull Request:#84
  • 主项目:Sense

背景与目标

在 #65 设备与凭据边界上重建获准网卡 ONVIF 发现、手工接入、认证、RTSP 验证和 Profile 持久化。Brain、Bell 不启动时可独立验收。

最终方案

  • WS-Discovery 只绑定 SENSE_ONVIF_DISCOVERY_IP 指定的本机地址;无配置或非本机地址给出明确提示。
  • ONVIF、Media XAddr 和 RTSP Stream URI 均受 SENSE_ONVIF_ALLOWED_CIDRS 限制;每次连接重新解析并固定目标 IP,禁用代理和重定向,拒绝 URL 用户信息及敏感查询参数。
  • ONVIF 支持 Basic、MD5/SHA-256 Digest auth;不支持的算法或 qop 拒绝。
  • 内部读取 #65 的 ONVIF/RTSP 分用途密文,HTTP 不提供凭据读取。
  • Profile、主/子码流、无凭据 Stream URI 和逐项验证状态持久化到 PostgreSQL;失败重探保留最后一次已验证 Profile。
  • 复用 GoAdmin JWT/Casbin/操作审计、迁移和 go-admin-ui BasicLayout、Element Plus Form/Dialog/Table/Tag、动态菜单与权限按钮。
  • implementation_operator、site_admin 可发现和探测,viewer 只读保存结果。

修改文件

  • 后端入口与业务:Sense/server/app/admin/router/sense_admission.go、Sense/server/app/sense/admission/**、Sense/server/app/sense/onvif/**、Sense/server/app/sense/rtsp/**。
  • 数据与验证:Sense/server/cmd/migrate/migration/version/2026081417000_profile.go、Sense/server/tests/admission/postgres_test.go。
  • 前端:Sense/ui/src/api/sense/admission.js、Sense/ui/src/views/sense/admission/**、Sense/ui/src/views/sense/device/index.vue 及对应单元测试。
  • 完整文件清单以实现提交 2bb1614 和 PR #84 的 Git diff 为准。

验收结果

标准 结果
未配置获准网卡不扫描 单元测试及错误映射通过
Digest/Basic 与 RTSP 验证 合成协议服务通过
ONVIF/RTSP 分离凭据且不回显 内部端口与严格 DTO 通过
SSRF/重定向/凭据泄漏防护 CIDR、DNS、URL、重定向测试通过
Profile 重启恢复 PostgreSQL 17 连接重开测试通过
认证失败、时间异常、重探 状态分类和失败保留 Profile 测试通过

测试

  • go test ./...:通过。
  • go vet ./...:通过。
  • go build ./...:通过。
  • 前端 lint:0 error,31 条上游继承 warning。
  • 前端单测:9 suites、34 tests 通过。
  • 前端生产构建:通过,6 条继承 warning。
  • PostgreSQL 17:迁移与重复迁移通过;migration=1、tables=2、menus=3、policies=7。
  • SENSE_ADMISSION_TEST_DATABASE_URL 隔离测试:写入 Profile、重开连接、读取主子码流通过。
  • Wiki 镜像检查:通过。 未验证部分:未连接客户或实验室真实摄像机;真实厂商 Digest/RTSP 兼容、网络 ACL、设备校时和目标浏览器留待授权现场验收,不声称已通过。

回退

回退 PR #84 的实现和文档提交可移除入口;已产生的接入表保留以避免破坏追溯数据。失败探测本身不删除最后一次已验证 Profile。

相关提交

  • 2bb1614 feat: 重建 ONVIF 与 RTSP 视频接入 (#66)
  • 26e2e63 docs: 记录 Sense 视频接入安全边界 (#66)
  • d74e1ae docs: 归档工单 #66 待验收证据