Skip to content

Aggregate client nodes with sensitive failover and manual routing - #20

Merged
mtmtian merged 1 commit into
mainfrom
codex/aggregate-client-routing
Sep 6, 2026
Merged

Aggregate client nodes with sensitive failover and manual routing#20
mtmtian merged 1 commit into
mainfrom
codex/aggregate-client-routing

Conversation

@mtmtian

@mtmtian mtmtian commented Sep 6, 2026

Copy link
Copy Markdown
Owner

问题与结果

原有客户端配置按服务器分开生成,普通代理默认按协议顺序故障切换,无法同时实现敏感服务固定主备与跨服务器低延迟选线。本 PR 增加每设备一份汇总配置:敏感服务使用显式 Reality/CDN 主备,普通海外与未匹配流量自动测速;各业务组保留默认策略和共用手动选择入口。

改动

  • 新增 aggregate.py render/check --profile <aggregate-profile>,从显式选定的源 profile 重新生成节点;不依赖已有 YAML 或 iCloud 副本,不修改服务器。节点使用来源别名前缀,保持设备凭据隔离。
  • 复用共享日常规则,增加 Meta 域名保护;AI / Meta、海外、国内、Apple、广告共五个业务入口。敏感服务组仅采用配置中的顺序(示例 cstone Reality → gcloud CDN),不自动退到其他出口或直连;普通海外每 300 秒测速,敏感主备每 60 秒检查。
  • 敏感服务与普通海外使用独立 DNS 出站路径;规则更新走普通海外组。完整节点列表只在手动选择组出现一次。Spotify 保持显式 DIRECT,不显示独立分组。
  • 缺少指定敏感节点/设备、源正在操作或源节点生成失败时停止;复用精确文件归属和私有文件权限。增加独立 YAML、策略图和 Mihomo 验证,记录维护及发布方式。

验证

  • 本地完整 Python 回归通过(95 项,启用 Mihomo,无跳过);最终策略调整后重跑汇总专项与引擎解析。
  • 逐脚本 bash -ngit diff --check 通过;推送前确认 git ls-files profiles 为空。
  • 从物理网卡 en0 独立探测:10 个节点均能完成 HTTP 请求;敏感默认选择主线,模拟主线失效后回退至 gcloud CDN,手动选择 lax 后 HTTPS 请求成功。未切换现有 Stash。
  • 新增独立 YAML 解析、策略引用/循环、设备凭据隔离、缺少备用线保持旧文件、源停用、生成超时脱敏和 Stash/Mihomo 字段测试。

发布与限制

此变更是客户端配置发布,不需要重新部署 VPS。合并后从 main 重新生成 routing-mac.yaml / routing-iphone.yaml,检查源一致性并同步到现有 Stash iCloud 分发目录。profiles、凭据、实际客户端 YAML 均不进入 Git 或 PR。

CF 备用保护本地到 GCP 的入口,目的站仍看到 GCP 出口;切换后 IP 会改变。HTTP 延迟探测不代表网站业务可用性或下载带宽。各业务组的“手动选择”共用一个选择器,变更影响所有已选择手动的业务组。输出沿用共享写入层的逐文件原子替换,不提供跨设备文件事务;磁盘写入失败后需重新 render/check。Stash GUI 导入/启用未验证(本机锁屏),配置文件分发不能等同于设备已启用;保留旧单服务器配置用于客户端回退。

@mtmtian
mtmtian merged commit 181e759 into main Sep 6, 2026
1 check passed
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