OpenClash icon indicating copy to clipboard operation
OpenClash copied to clipboard

[Bug] 更新 geoip、geosite 的蛋鸡问题

Open onion83 opened this issue 6 months ago • 1 comments

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

onion83 avatar Jun 13 '25 16:06 onion83

感谢大佬解决,我之前也有这个问题,有.dat还是下载失败

metaforget avatar Jun 17 '25 01:06 metaforget

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

github-actions[bot] avatar Aug 16 '25 08:08 github-actions[bot]

/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就正常下载

bushqin avatar Oct 08 '25 03:10 bushqin