lightproxy
lightproxy copied to clipboard
不支持配置换行
Describe the bug 配置脚本使用换行的方式写,在 whistle 网页端查看 Rules,会发现配置无法写入
To Reproduce Steps to reproduce the behavior:
- 在 LightProxy 规则配置页面添加一个分组,使用换行语法配置一条规则
- 点击 LightProxy 右侧的 Whistle,打开 Rules 页面,会发现之前配置的规则没有被写入
- OS: macOS 10.15.4
- LightProxy: 1.1.3
换行语法是指什么?可以提供一个例子么
换行语法是指什么?可以提供一个例子么
https://wproxy.org/whistle/mode.html
www.test.com file://(test) filter://*/cgi-bin
# 等价于
line`
www.test.com file://(test)
filter://*/cgi-bin
`
# 或
line`
www.test.com
file://(test)
filter://*/cgi-bin
`
我配置了多组规则,换行语法是配置在第二个组里的。 昨天在 whistle 配置页面上查看,是由于在规则前插入了多个空格导致,手动删除空格后正常。
刚才又试了下在 LightProxy 中添加配置,在 Whistle 的 Rules 页面中,添加的那条规则变成了一条文件引用地址。不知道是不是因为我昨天直接在 Whistle 中修改配置导致的。
其他我没有直接在 Whistle 中修改的配置,前面还是有空格,只有我改过的那组才出现了上面描述的问题

变成文件是符合预期的,因为 whistle 本身并不支持多行语法,所以 LightProxy 会把多行内容写入到临时文件后,把规则翻译成一个临时文件。
所以
test.test.com `heyhey
hey
会被翻译成
test.test.com /var/path-to-temp-file
然后访问会得到正确的结果
Whistle 的文档中是有说明支持配置换行的,在 配置方式 最下方可以看到
whistle v1.13.4及以上版本支持,配置换行:
我在 Whistle 的配置页面使用换行的方式来配置也是可以正常命中的
但是在 LightProxy 中配置,输出到 Whistle 的配置出现错误
如下配置
line`
www.test.com file://(test)
filter://*/cgi-bin
`
输出到 Whistle 的路径变成了 line/var/path-to-temp-file,换行配置的前面的 line 没被一起写入到配置文件,导致加载不到正确的配置文件,另外还有些情况,不会生成临时文件,但是会在规则前面加很多空格,也会导致 Whistle 无法正确识别
哦😯看了一下和 LightProxy 的多行配置含义不太一样,但是类似的语法冲突了。
确认是 bug,需要识别到 line 开头的 `` 字符串不启用临时文件的逻辑。
相关代码: https://github.com/alibaba/lightproxy/blob/develop/src/renderer/extensions/rule-editor/components/rule-list/remote.ts#L10
修改一下正则逻辑,排除 line`` 的语法,和 whistle 不冲突应该可以解决这个问题