Skip to content

实现了一套带端到端加密的云服务中继 - #132

Open
mc373906408 wants to merge 25 commits into
try2love:mainfrom
mc373906408:main
Open

mc373906408 wants to merge 25 commits into
try2love:mainfrom
mc373906408:main

Conversation

@mc373906408

Copy link
Copy Markdown
Contributor

问题与结果

本次新增可选的加密云接入,并完善连接稳定性、Windows 状态存储和源码开发体验。

  • 云接入与设备授权:桌面网络面板新增云账号登录、邮箱验证码注册、密码重置、服务状态和兑换入口,支持托管服务及自部署 HTTPS 服务器。同账号手机自动出现在设备列表,但必须完成加密身份核验并由桌面明确开启“允许连接”后才能访问;关闭权限保留已验证密钥,方便之后恢复。
  • 云连接稳定性:新增云链路在响应结束时立即关闭通道,会与手机仍在发送的流量控制消息发生竞态;内部会话按浏览器规则在 12 小时后到期,也会使持续连接反复失败。现在响应结束后有界等待手机关闭通道,内部会话随中继连接存活,并在权限关闭或断开时清理。明确撤销不会自动补发凭据,未知写入不会重放。
  • Windows 状态文件与推送校验:状态文件被读取时,原子替换可能短暂遭遇共享冲突;现在进行最长两秒的有界重试,失败保留原文件。直连推送补充参数校验,拒绝未知供应商,避免错误回退到 APNs。
  • 开发模式:新增 npm run desktop:dev。CSS 保存后刷新样式,HTML/前端 JS 变化只重载界面,保留栏目、展开项和滚动位置;存在未保存输入、对话框或在途操作时延后重载。普通启动和打包版本不开启源码监听。
  • 测试与清理:修正 Windows 大 inode 值导致目录身份测试失效的问题;云实现只保留当前自动目录和权限开关协议,移除未交付的旧直连 U-Push 分支、旧通知库补字段逻辑及废弃界面资源。

涉及模块:bridge/app/、bridge/features/network/cloud_*、bridge/features/notifications/、Electron 主进程/preload/网络面板、共享翻译、依赖打包脚本及对应测试和文档。

验证

  • 已执行:

    • 完整 Node 回归 1,368 项通过;最终界面清理后的云 UI、IPC、翻译及开发重载专项 53 项复核通过。
    • 云 Python 专项 87 项通过;新增旧库拒绝用例后,8 项云通知专项复核通过。
    • 直连推送 13 项、通用通知 62 项、认证 12 项、资源布局 5 项通过。
    • 使用真实本地 HTTP 和模拟时钟,验证持续连接超过 13 小时、明确注销不补发、关闭后重新授权、账号退出、服务到期、公钥变化及未知 POST 不重放。
    • Edge/WebKit 宽窄屏云界面回归 160 项通过;最终文案清理后相关用例另复核 20 项通过。
    • 中继响应收尾修复阶段,Go 服务端、Python Connector 和实际 Rust/Dart Repository 的合成链路完成四轮退出重登、32 次列表读取;Android 实机完成只读列表加载和连续刷新验证。
    • 模块边界、Git 差异空白检查及 .agents/notes/ 三项校验通过。
  • 未执行或仍需真机确认:

    • 最终提交版本未重新执行完整 Python 后端套件及 Windows/macOS/Linux 桌面打包、安装验收。
    • 真实 Electron 开发重载、长时间运行和系统休眠/网络切换仍需实机确认;13 小时场景使用模拟时钟验证。
    • 最终版本的 Android/iOS 登录、发送、审批、附件、后台恢复及厂商推送送达尚未完成全流程验收;已有只读刷新验证不能替代这些检查。
    • 本描述不将本地测试结果视为 GitHub Actions 或正式发布验收结果。

契约与兼容性

  • 接口与协议:新增受字段白名单限制的本机 cloud 管理命令和 Electron IPC,接入配套服务端 /v1 API;不新增未认证的网关 HTTP 管理入口。控制通道使用 Noise KK,通知预览使用独立密钥的 Noise K。
  • 账号与权限:凭据按准确的服务器 origin 和账号隔离,保存在系统凭据库。账号登录和服务器设备目录不直接授予桌面访问权限;每次转发继续检查账号、服务资格、手机公钥和本地权限。
  • 配置与数据:新增云账号状态、可信设备、权限记录及通知 SQLite 存储。当前云协议属于未发布的开发格式,要求桌面端、手机端和服务端配套使用,不提供旧手动云配对或旧开发数据库迁移;当前格式的密钥和通知回执保留正常重启语义。源码更新不会自动清空用户数据。
  • 现有功能:局域网扫码登录、直连 HTTP/HTTPS、SSH、原共享中继及 APNs/FCM/Live Activities 保持各自入口;云通知观察不创建、恢复或切换编码会话,未知业务写入不自动重放。
  • UI 与默认值:网络面板新增云服务区域和登录对话框,默认预设 https://bridge.waken.cloudns.be:8787,允许选择自部署 HTTPS 源地址。登录后隐藏登录入口;服务有效时自动启用中继,手机连接权限仍需逐台明确开启。
  • 模块与运行依赖:云监听器由应用层工厂注入,网络功能模块不反向导入 HTTP/应用层,不增加依赖边界例外。新增 noiseprotocol,并完善 aiohttp、keyring 等运行依赖的构建前检查和打包收集。Python/IPC 更新需要重启桌面应用及网关才能生效。

对应非平凡决定:

mc373906408 and others added 9 commits November 8, 2026 10:47
Retain cloud, P2P and Web authorization integration while adopting upstream client instances, lazy discovery and notification defaults. Remove cloud-specific notification initialization and add integration regressions.
Adopt upstream main 216ee1c while retaining fork cloud, P2P and development reload integration. Keep upstream shared-relay authorization separate from cloud HTTP framing, align static resource expectations, and isolate native platform fixtures. Record decisions and verification with linked agent notes.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant