Files
MoShiro/TODO.md
T
justme 0eda0600cc
ci/woodpecker/pr/verify Pipeline was successful
ci/woodpecker/pr/web-build Pipeline was successful
shared: add independent IPv4 and IPv6 collection [CI]
2026-10-07 11:44:01 +08:00

3.2 KiB
Raw Blame History

TODO

按主题记录还没做的事,做完就删掉对应的条目。已经实现的东西以 docs/ 和代码为准。

测量

  • 路由跳数、路径漂移和 trace
  • 握手耗时:TCP 连接耗时,TLS / QUIC 握手耗时(QUIC 目前没有真实握手积木)
  • 网页长截图
  • pcap / eBPF 采集

任务与面板

  • 单个 Agent 的任务(目前是线路模板加按 Agent 的覆盖,没有只属于某一个 Agent 的独立任务)
  • 原生 webhook 投递;告警(基于 webhook)
  • Agent 和 Probe 的定时重启(可选,例如早上四点)

部署

  • 后端自动下载前端资源:用 Podman、Docker 部署时,默认拉取最新的前端资源(现在前端要自己构建,镜像里没有)。

访客页面

  • 人机验证:访客页面要通过验证才能拉数据,前端访问时静默触发。候选 tiago2/cap 和 Cloudflare Turnstile。

更新

  • 更新遥测(现在面板只有每个节点的「当前更新状态」)
  • 回滚路径的实机测试:容器节点更新后观察 20 秒、失败回滚,只有单元和脚本测试,没有在真实节点上触发过。
  • 更新的灰度和自动策略:按标签分批发布;POLICY=auto 的长期验证;Backend 自身的更新(Backend 目前没有更新器,要手动拉镜像)。
  • 纯二进制节点的更新(fleet-updater、fleet-release、Windows 服务和 OpenWrt procd 适配器)。设计要点,实现时照这个来:
    • 信任来自签名:只接受离线发布密钥签名的清单,发布源可以是面板、GitHub Releases 或任意 HTTP 服务;面板被攻破也推不出恶意二进制。
    • 本地说了算:更新策略(auto / notify / pinned:<version>)和信任的公钥写在节点本地配置里,面板只能「建议」;支持多把公钥以便轮换。
    • 清单带 app、channel、version、min_from、各 RID 制品的 sha256 和大小、key_id、签名(对规范化 JSON 签名);本地记录已装过的最高版本,拒绝降级和旧清单重放。
    • 流程:下载 → 校验 → 解包到 versions/<v>/ → 原子切换 current(Linux 符号链接,Windows 目录联结)→ 重启服务 → 等健康信标确认 → 失败切回旧版本并把该版本标记为坏版本。
    • 权限分离:更新进程只能写安装目录和重启被管理的服务,读不到节点身份私钥。
    • OpenWrt:keep_versions = 1,下载前检查闪存剩余空间。
    • 容器节点已经实现的那一套(清单签名、seq 防重放、按 digest 拉取、回滚)见 docs/deployment.md。

安全

  • Agent、Backend、Probe 的零信任设计:目前 Backend 是三者之间的信任中心,需要梳理哪些信任可以去掉。
  • extension(Web SSH、TTY、更新遥测,敏感 operator):设计时必须保住「节点是纯采集器」这条边界,见 README.md 的项目边界。
  • 对 UDP 包、控制帧、RawChunk、JSON-RPC 做模糊测试;伪造签名和重放的专项测试。

打包

  • OpenWrt:procd 脚本、ipk/apk 包、sysupgrade 保留列表,在 aarch64 路由器上长时间运行验证。
  • Windows 服务适配。