gost
gost copied to clipboard
关于配置文件的疑问和建议
官方给的配置文件示例如下:
{ "Debug": true, "Retries": 0, "ServeNodes": [ ":8080", "ss://chacha20:12345678@:8338" ], "ChainNodes": [ "http://192.168.1.1:8080", "https://10.0.2.1:443" ], "Routes": [ { "Retries": 1, "ServeNodes": [ "ws://:1443" ], "ChainNodes": [ "socks://:192.168.1.1:1080" ] }, { "Retries": 3, "ServeNodes": [ "quic://:443" ] } ] }
我疑惑的地方在于:为什么这个“ServeNodes”和“ChainNodes”是必选?
按道理来说,全部配置在Routes也应该是可以的,并且更符合逻辑,如下:
{ "Debug": true, "Routes": [{ "Retries": 1, "ServeNodes": [ "ws://:1443" ], "ChainNodes": [ "socks://:192.168.1.1:1080" ] }, { "Retries": 3, "ServeNodes": [ "quic://:443" ] }, { "Retries": 0, "ServeNodes": [ ":8080", "ss://chacha20:12345678@:8338" ], "ChainNodes": [ "http://192.168.1.1:8080", "https://10.0.2.1:443" ] } ] }
监听3个端口,每个监听各自走不同的路径,非常合理 反倒是在Routes外面,强制要求配置一个ServeNodes和一个ChainNodes,会让人十分疑惑
作者大大看看,有没有可能在未来的版本里,优化一下这个体验?
顺道说一句, 如果还有v3版本的话, 配置文件要不要换成toml, 至少有两个好处, 排版更灵活了, 支持注释了
官方给的配置文件示例如下:
{ "Debug": true, "Retries": 0, "ServeNodes": [ ":8080", "ss://chacha20:12345678@:8338" ], "ChainNodes": [ "http://192.168.1.1:8080", "https://10.0.2.1:443" ], "Routes": [ { "Retries": 1, "ServeNodes": [ "ws://:1443" ], "ChainNodes": [ "socks://:192.168.1.1:1080" ] }, { "Retries": 3, "ServeNodes": [ "quic://:443" ] } ] }
我疑惑的地方在于:为什么这个“ServeNodes”和“ChainNodes”是必选? 按道理来说,全部配置在Routes也应该是可以的,并且更符合逻辑,如下:
{ "Debug": true, "Routes": [{ "Retries": 1, "ServeNodes": [ "ws://:1443" ], "ChainNodes": [ "socks://:192.168.1.1:1080" ] }, { "Retries": 3, "ServeNodes": [ "quic://:443" ] }, { "Retries": 0, "ServeNodes": [ ":8080", "ss://chacha20:12345678@:8338" ], "ChainNodes": [ "http://192.168.1.1:8080", "https://10.0.2.1:443" ] } ] }
监听3个端口,每个监听各自走不同的路径,非常合理 反倒是在Routes外面,强制要求配置一个ServeNodes和一个ChainNodes,会让人十分疑惑
作者大大看看,有没有可能在未来的版本里,优化一下这个体验?
在回答一下这个, 配置文件最外面的那个 ServeNodes 和 ChainNodes 是可以留空写成一个 []的, 全部配置到 Routes当中去... 至于为什么有两种形式混在一起, 我猜测应该是为了兼容老的格式, Routes应该是后面某个版本添加的, 下面是我自己笔记中的一个范式 供参考
{
"Debug": true,
"Retries": 0,
"ServeNodes": [
//留空
]
"ChainNodes": [
// 留空
],
"Routes": [
// 第一个配置, 等同于 -L ws://:1443 -F socks://:192.168.1.1:1080
{
"Retries": 1,
"ServeNodes": [
"ws://:1443"
],
"ChainNodes": [
"socks://:192.168.1.1:1080"
]
},
// 第二个配置 等同于 -L quic://:443
{
"Retries": 3,
"ServeNodes": [
"quic://:443"
]
}
]
}
官方给的配置文件示例如下:
{ "Debug": true, "Retries": 0, "ServeNodes": [ ":8080", "ss://chacha20:12345678@:8338" ], "ChainNodes": [ "http://192.168.1.1:8080", "https://10.0.2.1:443" ], "Routes": [ { "Retries": 1, "ServeNodes": [ "ws://:1443" ], "ChainNodes": [ "socks://:192.168.1.1:1080" ] }, { "Retries": 3, "ServeNodes": [ "quic://:443" ] } ] }
我疑惑的地方在于:为什么这个“ServeNodes”和“ChainNodes”是必选? 按道理来说,全部配置在Routes也应该是可以的,并且更符合逻辑,如下:{ "Debug": true, "Routes": [{ "Retries": 1, "ServeNodes": [ "ws://:1443" ], "ChainNodes": [ "socks://:192.168.1.1:1080" ] }, { "Retries": 3, "ServeNodes": [ "quic://:443" ] }, { "Retries": 0, "ServeNodes": [ ":8080", "ss://chacha20:12345678@:8338" ], "ChainNodes": [ "http://192.168.1.1:8080", "https://10.0.2.1:443" ] } ] }
监听3个端口,每个监听各自走不同的路径,非常合理 反倒是在Routes外面,强制要求配置一个ServeNodes和一个ChainNodes,会让人十分疑惑 作者大大看看,有没有可能在未来的版本里,优化一下这个体验?在回答一下这个, 配置文件最外面的那个 ServeNodes 和 ChainNodes 是可以留空写成一个 []的, 全部配置到 Routes当中去... 至于为什么有两种形式混在一起, 我猜测应该是为了兼容老的格式, Routes应该是后面某个版本添加的, 下面是我自己笔记中的一个范式 供参考
{ "Debug": true, "Retries": 0, "ServeNodes": [ //留空 ] "ChainNodes": [ // 留空 ], "Routes": [ // 第一个配置, 等同于 -L ws://:1443 -F socks://:192.168.1.1:1080 { "Retries": 1, "ServeNodes": [ "ws://:1443" ], "ChainNodes": [ "socks://:192.168.1.1:1080" ] }, // 第二个配置 等同于 -L quic://:443 { "Retries": 3, "ServeNodes": [ "quic://:443" ] } ] }
感谢您的热心指点,ServeNodes 和 ChainNodes 是可以留空写成一个 [], 这一点,我倒是从来没想到过,更没有这样去试一下 原因是官方文档说这两个是必需字段,我就认为为空会报错。
如果真是可以留空成[],用户未填写这两个字段的时候,程序处理一下,设个默认值为[],没必要非要指定这两个字段
这个issue先就在这里,看等作者看到了,看他有啥见解,直接给我关了也没啥
这两个现在是可选的
建议增加个功能,可以把 cli上的参数转成json格式。
cli 上的参数对应配置文件上配置顶对于新手不太友好,但配置文件对于启动程序会友好一些。
比如systemd,不至于每次修改完参数后还要再systemctl daemon-reload