Files
yovision/docs/task/66-Sense视频接入与Profile.md
T

3.9 KiB
Raw Blame History

generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件) wiki_page: Task-66-Sense视频接入与Profile wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-66-Sense%E8%A7%86%E9%A2%91%E6%8E%A5%E5%85%A5%E4%B8%8EProfile.- wiki_revision: 87b3a59f3f27df1f1fb357f6c13a1e31cdde5e05 synchronized_at: 2026-08-27T09:13:37Z

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 待验收证据