v0.4.0
这一版把 Cloudflare Worker 形态整个删掉了,只剩 Docker 一种。这是破坏性变更。
跑在 Worker 上的部署没有升级路径:0.4.0 不认 KV,池数据要先从 KV 导出再导入文件存储。留在 0.3.1 不动是安全的。
为什么砍
Worker 那一侧有两条不是靠写代码能绕开的限制:
- 注册机在 Worker 上铸不出 key。Agnes 上游的注册限流是按 IP 的,Worker 的出口 IP 池不但没帮上忙,还让同一个池里的别人先把额度用掉。同一份代码在 Docker 上正常出 key。
waitUntil会在响应后约 30 秒静默取消整轮补池(v0.3.0 实测 3/3),取消不抛异常,try/catch/finally两层都拦不住。
顺带修好三处已经变成假话的说法
- 面板把子密钥吊销上界多报了 1 分钟(6 → 5 分钟),传播上界 120/90 → 60/30 秒。多出来的那一分钟是 KV 的边缘缓存,文件存储上没有这一层。这是安全相关的数:一把泄露的 key 到底多久真正失效。
- 一条启动期告警的后半句在摘形态之前就是假的。
TRUST_PROXY的CF-Connecting-IP优先从「由平台保证的事实」降级成有前提的取舍——只挂自建 nginx/Caddy 时,攻击者自带这个头就会压过反代写的X-Forwarded-For。
如实说明:两处判别力下降
摘形态的口径是「只摘不补」,以下两处今天真的没人守:删除持久性契约只剩内存存储在跑;「补池抛错的那一轮也会释放锁」没人钉了。
完整条目见 CHANGELOG。