加密文件解密取播放地址(data/v1/decrypt)

验证状态:存在关键缺口,不可作为完整契约发布。Web 发布与应答消费已源码核验;采集服务器是 server/{采集服务器 deviceNo}/data/v1/decrypt 的最终消费者,其源码不在本工作区,应答权威 schema、密码校验规则、错误码与防暴力破解行为缺证。 适用基线:源码归纳 @ 2026-09-14

用途与场景

回放设备页播放加密文件(文件行 crypto === 1)时,弹出密码对话框;用户提交密码后 Web 将 fileId + password 发往该文件所属采集服务器,成功应答携带 ip/port/playUrl 供播放器直接构造媒体 URL(见回放媒体地址)。data.playUrl 缺失即视为"解密失败",Web 不解析错误码。

使用位置

页面/功能 角色或空间分支
加密视频播放器校验密码后取播放地址(对话框回车/按钮触发) 登录用户;加密视频播放器
消费:data.playUrl 成功分支构造 URL;否则置 verifyError

对应 inventory operationId:mqtt-verifypassword-server-var-data-v1-decrypt-c658da9c

端点

MQTT 请求 server/{serverDeviceNo}/data/v1/decrypt(Web → Broker → 采集服务器直连,应答按 reply topic 回流;中心网关不消费)— 对加密文件校验密码并换取播放地址(ip/port/playUrl)。

通道口径:该 topic 不在中心消费/发布点清单内(网关默认订阅清单无 server/+/data/#,见MQTT 主题清单 · 服务端订阅面);应答回流、凭据与 QoS 等 wire 约定见MQTT 连接与消息边界

请求形态 {id, reply, replyNumberMax:1, replyInterval:1, params:{fileId, password}}password 为用户输入明文、经 Broker 明文传输,reply topic 按 fileId 精确编址。

动线与完成判据

层级 判据
发布完成 publishAsync Promise 成功;仅代表 Broker 受理
业务成功 reply topic 应答 data.playUrl 非空 → 对话框关闭、播放 URL 生成
业务失败 data.playUrl 缺失 → "Decryption failed" 文案,可重新输入
超时 无内置请求超时;无应答时 verifying 停留 true、按钮禁用,需手动取消

错误与边界

  • 本操作不经中心 HTTP 出口,错误响应差异总表的 HTTP 条目不适用;采集服务器的错误码、密码错误计数与锁定策略缺证(待核验)。
  • password 明文进入 MQTT payload,且 reply topic 按 fileId 精确编址——Broker 侧可见性与审计属部署安全核验项;传输层加密依赖站点 wss 接入(MQTT 连接正本)。
  • 无防暴力破解的 Web 侧限制:失败后可无限次重输;服务端是否有锁定缺证。
  • 无请求超时:采集服务器不应答时 verifying 卡住,仅能取消对话框重试。

调用关系与资源清理

  • 前置:文件清单应答行提供 id/crypto/deviceNocrypto === 1 才进入本流程。
  • 下游:成功应答的 ip/port/playUrl 交给回放媒体地址构造 URL。
  • 无订阅需取消;验证状态随文件切换重置。

已知缺口

  1. 采集服务器是最终消费者:密码校验规则(哈希/盐)、data 权威 schema、错误码全集、防暴力破解与会话时效均缺证。
  2. 离线采集服务器下的失败形态缺证(本操作无在线门控)。
  3. Broker ACL 与传输加密(wss/TLS 终止点)待部署核验;未执行真实联调。