接口分三类:配置读写走保护链路,内核状态和只读透传,静态字段表。 透传用白名单而不是黑名单——写操作属于运行时面板,等做到那步再单独开, 现在不留一个什么都能转发的口子。 令牌即便在只监听本机时也强制校验:同一台机器上跑着容器和别的服务, 「只监听 127.0.0.1」不等于「只有你能访问」。比较用常数时间,避免靠响应耗时猜。 scripts/api-smoke.ts 对着真服务和真内核跑 17 项检查,端到端确认过 改配置之后内核会重载、新端口真的被监听起来。
顺序是:检查基准是否过时 → 自己校验 → 临时文件上跑 mihomo -t → 备份 → 写入 → 重载, 最后两步任一失败就从备份还原并让内核载回原样。 自己校验那一步不能省:实测 v1.19.29,入站的 proxy 指向不存在的出站时 mihomo -t 会通过、 重载会成功,直到有流量走到那个入站才在日志里报错。这类错误只有 Patchbay 查得出来。 路径在读环境变量时就转成绝对路径,因为内核的 PUT /configs 拒绝相对路径。