fn_b/tools/subscription-checker
2026-10-18 18:37:20 +08:00
..
.gitignore Add isolated manual cfn subscription validator 2026-10-18 18:35:03 +08:00
check.py Supply pinned offline GeoIP data and distinguish VMess JSON variants 2026-10-18 18:37:20 +08:00
cores.json Supply pinned offline GeoIP data and distinguish VMess JSON variants 2026-10-18 18:37:20 +08:00
install_cores.py Supply pinned offline GeoIP data and distinguish VMess JSON variants 2026-10-18 18:37:20 +08:00
README.md Add isolated manual cfn subscription validator 2026-10-18 18:35:03 +08:00
run_from_mac.py Add isolated manual cfn subscription validator 2026-10-18 18:35:03 +08:00
test_check.py Supply pinned offline GeoIP data and distinguish VMess JSON variants 2026-10-18 18:37:20 +08:00

cfn 手动订阅检测

范围:从 cfn 最新已发布文章发现三类最终链接,经白色机 SSH 读取 nodehub 对应文件,验证编码/结构/字段,再串行执行固定版本 Mihomo 与 Sing-box 的配置检查。V2Ray URI 列表仅做静态导入格式检查,不冒充客户端导入成功。不连接节点,不启用 TUN、代理服务、定时器或通知。

代码通过 fn_b Git 提交/推送,白色机稀疏检出本目录到 /opt/cfn-subscription-checker,只运行明确提交。install_cores.py 从官方发布下载 cores.json 固定版本并校验官方API公布的SHA256;独立目录 /opt/cfn-checker-cores。不覆盖系统核心。依赖系统 Python3/PyYAML、SSH、systemd-run、GNU time。

手动入口(本机):python3 tools/subscription-checker/run_from_mac.py。脚本仅按需读取既有私有资源,凭据不进参数、Git或报告;通过SSH标准输入传给白色机,源站问密临时文件在退出时清理,SSH主机密钥使用本机已核实记录严格校验。未配置服务器长期认证,后续定时方案另行处理。

报告和当次样本:/var/lib/cfn-subscription-checker/<北京时间戳>/report.json,目录700、文件600。样本包含公开节点凭据,仅限root私有检查,不提交Git。错误仅记录字段、序号及脱敏核心日志;报告记录源站文件读取状态,HTTP下载因反代入口缺失明确未测。文章不是当天时标记stale,发现缺失/多义链接会失败,不猜路径、不回退旧文件。

核心检查使用独立临时systemd服务:PrivateNetwork、NoNewPrivileges、ProtectSystem=strict,只允许写当次核心工作目录;MemoryMax=256M、MemorySwapMax=0、CPUQuota=50%、RuntimeMaxSec=45;校验完退出,不开放监听。若配置需远端规则/Geo数据而离线缺失,报告blocked_dependency,不伪报配置通过。256M为核心进程的限制,主Python解析进程另占内存。

返回值:0=服务器文件结构及可执行核心检查通过(仍未HTTP/GUI验收),1=发现异常、检查未完成或获取失败。检查失败是检测结果,不等于部署失败。

回滚:本工具无常驻服务,停止当前手动命令即可;确认无人运行后移除独立代码/核心目录,报告按需保留或另行清理。不改源站业务文件、白色机Nginx、路由或现有容器。依赖包未改时不涉及系统回滚。

测试:python3 -m unittest discover -s tools/subscription-checker -v。