- 新增 internal/security/ipinfo:基于 projectdiscovery/cdncheck v1.3.0 (离线指纹、零外部请求)识别来源 IP 归属,识别失败折叠为展示标签, 不中断告警链路 - autoban 告警回调注入归属识别;告警邮件新增「网络归属」行, 命中 CDN/代理网络时提示「封禁可能无法拦截真实来源」 - 新增邮件模板渲染回归测试 internal/mail/mail_alert_test.go - dev/s3stub:webp(cgo) 本地类型检查桩,替换 s3.go 做全模块编译验证, 生产 Linux 构建不受影响;dev/overlay.json 指向该桩 - go mod tidy 顺带升级共享依赖(lipgloss/xid/testify 等), 全模块类型检查与相关包测试通过
1.5 KiB
1.5 KiB
安全告警邮件增加 IP 网络归属(2026-09-08)
- 需求:autoban 批量扫描告警邮件中展示来源 IP 的云厂商/CDN 归属(用户提到"类似 cloudranger"),选定方案 A:
projectdiscovery/cdncheck v1.3.0(MIT,离线签名,零外部请求)。 - 新增
internal/security/ipinfo:Lookup(ip) (label, proxied),依次查 CDN→WAF→Cloud,错误折叠为"识别失败"标签,不中断告警链路;缩写映射 aws→AWS 等。 mail.SendSecurityAlertMail增加provider/proxied参数;route.goSendAlert 闭包注入 lookup;模板加「网络归属」行 + 命中代理网络时的红色提示块。- 验证:全模块类型检查 + 相关包测试通过(s3.go 磁盘换桩法);smoke 实测 1.1.1.1→Cloudflare(WAF)、52.95.255.1→AWS(云厂商)。
- 新增回归测试:
internal/mail/mail_alert_test.go(模板渲染含 proxy_hint 条件分支)。 - 教训(重要):本机 Windows + go1.25.5 下
-overlay行为异常(静默不生效 / "deleted in overlay"),overlay 不可靠;本地验证用磁盘换桩法:cp dev/s3stub/s3_stub.go internal/storage/s3.go(先备份)→ build/test → 还原。chai2010/webp 是 cgo 库,用户生产编译在 Linux,无需本地真编译。 go mod tidy顺带升级了部分共享依赖(lipgloss 0.13、xid 1.5、testify 1.11 等),全量构建+测试通过。- dev/overlay.json 现指向 dev/s3stub/s3_stub.go(旧值指向已删除的 Downloads 副本,已过时)。