[Bug] 更新 geoip、geosite 的蛋鸡问题
Verify Steps
- [x] Tracker 我已经在 Issue Tracker 中找过我要提出的问题
- [x] Branch 我知道 OpenClash 的 Dev 分支切换开关位于插件设置-版本更新中,或者我会手动下载并安装 Dev 分支的 OpenClash
- [x] Latest 我已经使用最新 Dev 版本测试过,问题依旧存在
- [x] Relevant 我知道 OpenClash 与 内核(Core)、控制面板(Dashboard)、在线订阅转换(Subconverter)等项目之间无直接关系,仅相互调用
- [x] Definite 这确实是 OpenClash 出现的问题
- [ ] Contributors 我有能力协助 OpenClash 开发并解决此问题
- [ ] Meaningless 我提交的是无意义的催促更新或修复请求
OpenClash Version
v0.46.086
Bug on Environment
Official OpenWrt
OpenWrt Version
OpenWrt 24.10.1 r28597-0425664679
Bug on Platform
Linux-amd64(x86-64)
Describe the Bug
近期尝试第一次尝试使用 openclash 发现一个更新 geoip、geosite 的蛋鸡问题,因为 mihomo 规则中使用了 geosite、geoip 必然依赖 geosite.dat、geoip.dat 两个文件,在不打开 mihomo(core) 的情况下,直连方式是根本无法下载的,包括 openclash 内置的 (testingcf|fastly).jsdelivr.net 两个域名。
目前程序处理的逻辑是,先关闭全部 core ,然后使用 curl 下载,当下载成功后将 /tmp/Geo(Site|IP).dat 移动到 /etc/openclash 中,然后重启 core。如果失败包括下载超时,openclash 的启动脚本不做任何事情。也就是整个服务死掉了 。并且检查 geoip、geosite 似乎是这个前置条件,在 yaml 配置文件中指定使用第三方的 url geox 都无效的。
自行删除 /etc/openclash/*.dat,从其它电脑下载后这两个文件,上传到配置文件夹无效。
这个蛋鸡问题同样存在于,插件设置 / GEO数据库订阅,只要下载失败,整个服务就停止了。
To Reproduce
1、控制面板 / 关闭 OpenClash
2、cd /etc/openclash; rm -rf (GeoSite|GeoIP).dat
3、控制面板 / 启动 OpenClash
OpenClash Log
2025-06-14 00:08:56 OpenClash 关闭成功!
2025-06-14 00:08:56 第六步:删除 OpenClash 残留文件...
2025-06-14 00:08:56 第五步: 重启 Dnsmasq 程序...
2025-06-14 00:08:56 第四步: 关闭 Clash 主程序...
2025-06-14 00:08:56 第三步: 关闭 OpenClash 守护程序...
2025-06-14 00:08:55 第二步: 删除 OpenClash 防火墙规则...
2025-06-14 00:08:55 第一步: 备份当前策略组状态...
2025-06-14 00:08:55 OpenClash 开始关闭...
2025-06-14 00:08:55 GeoSite 数据库下载失败,请检查网络或稍后再试...
2025-06-14 00:08:55 【/tmp/GeoSite.dat】下载失败:【curl: (28) Operation timed out after 60000 milliseconds with 531904 out of 9544440 bytes received curl: (28) Operation timed out after 60000 milliseconds with 1716479 out of 9544440 bytes received curl: (28) Operation timed out after 60001 milliseconds with 1755509 out of 9544440 bytes received】
2025-06-14 00:05:52 开始下载 GeoSite 数据库...
2025-06-14 00:05:52 提示:检测到 GEOSITE 数据库文件不存在,准备开始下载...
2025-06-14 00:05:52 GEOIP 数据库更新成功!
2025-06-14 00:05:52 GEOIP 数据库版本有更新,开始替换数据库版本...
2025-06-14 00:05:52 GEOIP 数据库下载成功,检查数据库版本是否更新...
2025-06-14 00:05:50 开始下载 GEOIP 数据库...
2025-06-14 00:05:50 提示:检测到 GEOIP 数据库文件不存在,准备开始下载...
2025-06-14 00:05:50 第二步: 组件运行前检查...
2025-06-14 00:05:50 第一步: 获取配置...
2025-06-14 00:05:50 OpenClash 开始启动...
2025-06-14 00:05:50 OpenClash 关闭成功!
OpenClash Config
Expected Behavior
1、不要前置关掉 core,如果 Geo(Site|IP).dat 存在于 /etc/openclash 中,先把 core 启动起来,再慢慢下载 (geoip|geosite).dat,
- 下载成功后,从 /tmp 移动 etc 目录再重启 core
- 下载失败,日志输出错误即可,** 不需要对运行中进程做任何操作,避免抖动 **
- 如有可能,设计的版本管理,保留若干版本,方便随时回滚。
2、如果用户配置文件中存在自定义 geox 连接,让 core 自行管理下载的事情,外围插件不要再干预。避免逻辑冲突。
Additional Context
No response
感谢大佬解决,我之前也有这个问题,有.dat还是下载失败
This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 5 days
/tmp/GeoIP.dat】下载失败:【curl: (35) TLS connect error: error:00000000:lib(0)::reason(0)】 我的日志是这样的,[覆写设置]中,我在fallback里边把8.8.8.8和8.8.4.4.勾选上以后,curl就可以使用了,geoip dat就正常下载