clash-verge
clash-verge copied to clipboard
merge 文件里 rule-providers 的 Bug
用 meta core 是正常的,用 premium core 会遇到下面的 Bug:
-
主配置里同时存在 RULE-SET 和 rule-providers 时:merge 文件里不能用 rule-providers 和/或 RULE-SET。否则,整个 merge 文件的内容都不生效。
-
主配置里只存在 rule-providers,不存在 RULE-SET;或者主配置 rule-providers 和 RULE-SET 都不存在时:merge 文件里使用 rule-providers 和 RULE-SET 正常。
排除问题
试过下面的情况,Bug 还是复现
- rule-providers 的
type
设置为 file 或 url - rule-providers 的
behavior
设置为 domain、ipcidr 或 classical - merge 文件里的 rule-providers 放在文件的最前面
- 开启或关闭 tun 模式、系统代理
配置和日志
merge 文件的配置
prepend-rules:
- DOMAIN-KEYWORD,xxx,PROXY-IN-MERGE-FILE
- RULE-SET,apple,PROXY-IN-MERGE-FILE
- DOMAIN-KEYWORD,zzz,PROXY-IN-MERGE-FILE
rule-providers:
apple:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt"
path: ./ruleset/apple.yaml
interval: 86400
主配置,下面是正常情况
rules:
- DOMAIN-KEYWORD,aaa,PROXY
- DOMAIN-KEYWORD,bbb,PROXY
- MATCH,PROXY
主配置,下面是有 Bug 的
rules:
- DOMAIN-KEYWORD,aaa,PROXY
- DOMAIN-KEYWORD,bbb,PROXY
- RULE-SET,private,DIRECT
- RULE-SET,direct,DIRECT
- MATCH,PROXY
rule-providers:
private:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt"
path: ./ruleset/private.yaml
interval: 86400
direct:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
path: ./ruleset/direct.yaml
interval: 86400
正常日志。www.apple.com
在这里命中 merge 文件里的规则。
time="2022-07-31T00:02:29+08:00" level=info msg="RESTful API listening at: 127.0.0.1:9090"
time="2022-07-31T00:02:29+08:00" level=info msg="Mixed(http+socks) proxy listening at: [::]:7890"
time="2022-07-31T00:02:30+08:00" level=info msg="Start initial compatible provider PROXY"
time="2022-07-31T00:02:30+08:00" level=info msg="Start initial rule provider google"
time="2022-07-31T00:02:30+08:00" level=info msg="Start initial rule provider direct"
time="2022-07-31T00:02:30+08:00" level=info msg="Start initial rule provider lancidr"
time="2022-07-31T00:02:30+08:00" level=info msg="Start initial rule provider apple"
time="2022-07-31T00:02:30+08:00" level=info msg="Start initial rule provider private"
time="2022-07-31T00:02:30+08:00" level=info msg="Start initial rule provider greatfire"
time="2022-07-31T00:02:30+08:00" level=info msg="Start initial rule provider tld-not-cn"
time="2022-07-31T00:02:30+08:00" level=info msg="Start initial rule provider reject"
time="2022-07-31T00:02:30+08:00" level=info msg="Start initial rule provider cncidr"
time="2022-07-31T00:02:30+08:00" level=info msg="Start initial rule provider telegramcidr"
time="2022-07-31T00:02:30+08:00" level=info msg="Start initial rule provider icloud"
time="2022-07-31T00:02:30+08:00" level=info msg="Start initial rule provider proxy"
time="2022-07-31T00:02:30+08:00" level=info msg="Start initial rule provider gfw"
time="2022-07-31T00:02:31+08:00" level=info msg="Start initial compatible provider PT"
time="2022-07-31T00:02:31+08:00" level=info msg="Start initial compatible provider PROXY"
time="2022-07-31T00:02:31+08:00" level=info msg="Start initial rule provider apple"
time="2022-07-31T00:02:47+08:00" level=info msg="[TCP] 127.0.0.1:5820 --> www.apple.com:443 match RuleSet(apple) using PROXY-IN-MERGE-FILE"
有 Bug 的日志。merge 文件里的规则没有生效,www.apple.com
命中了主配置里的规则。
time="2022-07-30T23:44:14+08:00" level=info msg="RESTful API listening at: 127.0.0.1:9090"
time="2022-07-30T23:44:14+08:00" level=info msg="Mixed(http+socks) proxy listening at: [::]:7890"
time="2022-07-30T23:44:15+08:00" level=info msg="Start initial compatible provider PROXY"
time="2022-07-30T23:44:15+08:00" level=info msg="Start initial rule provider direct"
time="2022-07-30T23:44:15+08:00" level=info msg="Start initial rule provider icloud"
time="2022-07-30T23:44:15+08:00" level=info msg="Start initial rule provider google"
time="2022-07-30T23:44:15+08:00" level=info msg="Start initial rule provider proxy"
time="2022-07-30T23:44:15+08:00" level=info msg="Start initial rule provider lancidr"
time="2022-07-30T23:44:15+08:00" level=info msg="Start initial rule provider private"
time="2022-07-30T23:44:15+08:00" level=info msg="Start initial rule provider greatfire"
time="2022-07-30T23:44:15+08:00" level=info msg="Start initial rule provider telegramcidr"
time="2022-07-30T23:44:15+08:00" level=info msg="Start initial rule provider cncidr"
time="2022-07-30T23:44:15+08:00" level=info msg="Start initial rule provider reject"
time="2022-07-30T23:44:16+08:00" level=info msg="Start initial rule provider apple"
time="2022-07-30T23:44:16+08:00" level=info msg="Start initial rule provider gfw"
time="2022-07-30T23:44:16+08:00" level=info msg="Start initial rule provider tld-not-cn"
time="2022-07-30T23:44:16+08:00" level=info msg="Start initial compatible provider PT"
time="2022-07-30T23:44:16+08:00" level=info msg="Start initial compatible provider PROXY"
time="2022-07-30T23:44:16+08:00" level=info msg="Start initial rule provider apple"
time="2022-07-30T23:44:36+08:00" level=info msg="[TCP] 127.0.0.1:5107 --> www.apple.com:443 match RuleSet(direct) using DIRECT"
软件版本是 1.0.4,系统 Win 10 x64。
主配置里同时存在 RULE-SET 和 rule-providers 时:merge 文件里不能用 rule-providers 和/或 RULE-SET。否则,整个 merge 文件的内容都不生效。
因为你的merge里 用了prepend-rules 和 rule-providers,这里的rules是增量,但是rule-providers会覆盖主配置的,所以主配置配了的rule-set就异常了。这里你用prepend-rule-providers就可以了
@zzzgydi
这里你用prepend-rule-providers就可以了
试了一下不行。
这个功能是不是还没有实现?查看 src/services/enhance.ts,发现没有定义。
非常奇怪的情况是,用 meta core 的时候主配置和 merge 里的规则都能生效,只是加载有点慢。
好像是没有,sorry记错,rule-providers不是数组,没这个
#106 是不是和这个重复了
@FlyMeToTheMars 不是一样的功能,这个issue是新增enhance规则,#106是新增providers页面