vernesong / OpenClash

A Clash Client For OpenWrt
MIT License
16.79k stars 3.09k forks source link

看到新版加了 config 内字段的位置检查,可以加一个自动尝试重排的功能吗? #149

Closed Kaijun closed 4 years ago

Kaijun commented 4 years ago

很高兴看到启动时给 config 内加了 general, proxy, rule 的位置检查,当前客户端会依赖这个顺序所以需要保证顺序符合预期。

https://github.com/vernesong/OpenClash/blob/7098a5085bee36806c8bd7c5c1ee3b682f29bb0f/luci-app-openclash/files/etc/init.d/openclash#L159-L185

可惜一些订阅并没有按照这个顺序生成 config,是否考虑加个 try re-order 之类的逻辑,自动重排这个顺序,这样尽管订阅更新也没有问题不用手动介入。

vernesong commented 4 years ago

识别受限,general部分的位置无法准确定位,所有就很难截取

Kaijun commented 4 years ago

识别受限,general部分的位置无法准确定位,所有就很难截取

恩,我理解对于 clash 的 config 来说,应该是不需要强制保证顺序的。无论什么顺序都能保证正常的 unmarshal。

我们现在在配置修改阶段,强假设了 Proxy 之前都是 General,才依赖了这个顺序。 或者换个角度看,我们是否可以结构化地去修改 yaml(类似于 jq 这样的工具 yq)去修改 dns 等配置

vernesong commented 4 years ago

1.yq太占空间 2.一旦general插在中间,因为这部分没有占位标识符,其他部分就截取不了导致所有的修改都受限

EcoRIIHC commented 4 years ago

遇到了相同的问题 ,升级新版本后无法使用订阅功能了

vernesong commented 4 years ago

订阅的文件无法使用的,可以使用一键生成配置文件功能代替,因为保留配置后只会更新节点

EcoRIIHC commented 4 years ago

订阅的文件无法使用的,可以使用一键生成配置文件功能代替,因为保留配置后只会更新节点

我观察到的是更新后就会覆盖原来的配置,导致启动失败。如果只更新节点,怎么订阅远端的规则更新呢?