subconverter
subconverter copied to clipboard
[BUG] TOML 配置文件生成错误的 Surge load-balance配置
确认版本最新
- [X] 我已经确认在最新Action编译的版本中复现
检索issue
- [X] 我已经确认之前没有issue涉及此BUG
subconverter版本
0.7.2
转换过程
通过profile将list输出成surge配置
转换设置
groups.toml:
[[custom_groups]]
name = "负载均衡节点"
type = "load-balance"
rule = ["^(?!.*(中国|CN)).*"] # 排除所有国内节点
url = "http://www.gstatic.com/generate_204"
interval = 150
tolerance = 120
strategy = "round-robin"
复现步骤
参考上面的配置
期望结果
Surge 版本可以正常输出 load-balance 节点结果:
auto-lb = load-balance,节点1,节点2,节点99,url=http://www.gstatic.com/generate_204,interval=150,tolerance=120
实际结果
Surge 配置的输出结果为:
负载均衡= load-balance,default=^(?!.*(中国|CN)).*,
而 Clash 就可以输出正确结果:
- name: 负载均衡
type: load-balance
strategy: round-robin
url: http://www.gstatic.com/generate_204
interval: 150
proxies:
- "节点1"
- "节点2"
- "节点999"
错误信息
没有报错:
subconverter | 2022/04/08 Fri 15:23:38.209896 [1 281472803240696][INFO] Trying to load profile 'profiles/test.ini'.
subconverter | 2022/04/08 Fri 15:23:38.210007 [1 281472803240696][INFO] Trying to parse profile 'profiles/test.ini'.
subconverter | 2022/04/08 Fri 15:23:38.210060 [1 281472803240696][INFO] Loading preference settings...
subconverter | 2022/04/08 Fri 15:23:38.236469 [1 281472803240696][INFO] Load preference settings in TOML format completed.
subconverter | 2022/04/08 Fri 15:23:38.237045 [1 281472803240696][INFO] Fetching node data from url 'xxx'.
subconverter | 2022/04/08 Fri 15:23:38.589347 [1 281472803240696][INFO] Fetching node data from url 'xxx'.
subconverter | 2022/04/08 Fri 15:23:40.130695 [1 281472803240696][INFO] Fetching node data from url 'xxx'.
subconverter | 2022/04/08 Fri 15:23:52.766926 [1 281472803240696][INFO] Generate target: Surge 4
subconverter | 2022/04/08 Fri 15:23:52.782978 [1 281472803240696][INFO] Generate completed.
我好像也遇到了这个问题。用TOML 配置文件自定义节点组,Clash获取到的配置文件就是正常的,Surge/Surfboard获取到的节点组就是异常的,具体如下:
- 我有三个机场的订阅链接放到的默认sub url,所以我再Group.toml中添加了三组类似的自定义组,通过节点名的区别把三个机场的同区域节点分离出来。完整Group.toml如下:
[[custom_groups]]
name = "🚀 节点选择"
type = "select"
rule = ["[]🇭🇰 香港", "[]🫳 手动切换", "[]DIRECT"]
[[custom_groups]]
name = "🫳 手动切换"
type = "select"
rule = [
"[]🇯🇵 日本",
"[]🇨🇳 台湾",
"[]🇺🇸 美国",
"[]🇸🇬 新加坡",
"[]🇰🇷 韩国",
"[]1 - 其他",
"^((?!云|🇯🇵|🇭🇰|🇸🇬|🇨🇳|🇺🇸|🇰🇷).)*$"
]
[[custom_groups]]
name = "🎥 Emby"
type = "select"
rule = [
"[]🇸🇬 新加坡",
"[]🇨🇳 台湾",
"[]🇭🇰 香港",
"[]🚀 节点选择",
"[]🫳 手动切换"
]
[[custom_groups]]
name = "🌍 国外媒体"
type = "select"
rule = [
"[]🇸🇬 新加坡",
"[]🇨🇳 台湾",
"[]🇭🇰 香港",
"[]🚀 节点选择",
"[]🫳 手动切换"
]
[[custom_groups]]
name = "🐟 多邻国"
type = "select"
rule = [
"[]🚀 节点选择",
"[]DIRECT",
"[]🫳 手动切换"
]
[[custom_groups]]
name = "Ⓜ️ OneDrive"
type = "select"
rule = [
"[]DIRECT",
"[]🚀 节点选择",
"[]🫳 手动切换"
]
[[custom_groups]]
name = "🎮 游戏平台"
type = "select"
rule = [
"[]DIRECT",
"[]🚀 节点选择",
"[]🫳 手动切换"
]
[[custom_groups]]
name = "🇭🇰 香港"
type = "select"
rule = [
"[]🇭🇰 1-香港",
"[]🇭🇰 2-香港",
"[]🇭🇰 3-香港",
"(香港|HK|Hong Kong)"
]
[[custom_groups]]
name = "🇸🇬 新加坡"
type = "select"
rule = [
"[]🇸🇬 1-新加坡",
"[]🇸🇬 2-新加坡",
"[]🇸🇬 3-新加坡",
"(新加坡|Singapore)"
]
[[custom_groups]]
name = "🇨🇳 台湾"
type = "select"
rule = [
"(台湾|Taiwan)"
]
[[custom_groups]]
name = "🇯🇵 日本"
type = "select"
rule = [
"(日本|Japan)"
]
[[custom_groups]]
name = "🇺🇸 美国"
type = "select"
rule = [
"(美国|United States)"
]
[[custom_groups]]
name = "🇰🇷 韩国"
type = "select"
rule = [
"(KR|Korea|KOR|首尔|韩|韓)"
]
[[custom_groups]]
name = "⛔️ 广告拦截"
type = "select"
rule = [
"[]🛑 全球拦截",
"[]DIRECT",
"[]🚀 节点选择"
]
[[custom_groups]]
name = "🚫 运营劫持"
type = "select"
rule = ["[]🛑 全球拦截",
"[]DIRECT",
"[]🚀 节点选择"]
[[custom_groups]]
name = "🛑 全球拦截"
type = "select"
rule = ["[]REJECT", "[]DIRECT"]
[[custom_groups]]
name = "🐟 漏网之鱼"
type = "select"
rule = [
"[]🚀 节点选择",
"[]DIRECT",
"[]🫳 手动切换"
]
[[custom_groups]]
name = "🎯 全球直连"
type = "select"
rule = ["[]DIRECT"]
[[custom_groups]]
name = "🇭🇰 1-香港"
type = "url-test"
rule = ["(- 香港|-香港)"]
url = "http://www.gstatic.com/generate_204"
interval = 300
[[custom_groups]]
name = "🇸🇬 1-新加坡"
type = "url-test"
rule = ["(- 新加坡)"]
url = "http://www.gstatic.com/generate_204"
interval = 300
[[custom_groups]]
name = "🇭🇰 2-香港"
type = "url-test"
rule = ["(Hong Kong)"]
url = "http://www.gstatic.com/generate_204"
interval = 300
[[custom_groups]]
name = "🇸🇬 2-新加坡"
type = "url-test"
rule = ["(Singapore)"]
url = "http://www.gstatic.com/generate_204"
interval = 300
[[custom_groups]]
name = "🇭🇰 3-香港"
type = "url-test"
rule = ["(香港 0|香港 1)"]
url = "http://www.gstatic.com/generate_204"
interval = 300
[[custom_groups]]
name = "🇸🇬 3-新加坡"
type = "url-test"
rule = ["(新加坡 0)"]
url = "http://www.gstatic.com/generate_204"
interval = 300
[[custom_groups]]
name = "1 - 其他"
type = "select"
rule = ["^((?!🇯🇵|🇭🇰|🇸🇬|🇨🇳|🇺🇸|🇰🇷).)*$"]
- 通过Clash订阅时,Clash能够正常获取到上述的节点分组信息。
- 通过Surge/Surfboard订阅时,Group.toml中的部分分组就会被直接转为直连节点,如下是Surge/Surfboard订阅时或许到的配置文件,Group.toml中的最后四个节点组被弄成了直连节点放到了节点组中,debug log中打印了完整的节点信息,并非是没有相应节点:
#!MANAGED-CONFIG http://xxxxx.xxxx interval=86400 strict=false
[General]
loglevel = notify
interface = 127.0.0.1
skip-proxy = 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local
ipv6 = false
dns-server = system, 223.5.5.5
exclude-simple-hostnames = true
enhanced-mode-by-rule = true
[Proxy]
DIRECT = direct
proxy 01 = ******节点信息*********
proxy 02 = ******节点信息*********
.
.
.
proxy xx = ******节点信息*********
🎯 全球直连 = direct
🇸🇬 1-新加坡 = direct
🇭🇰 3-香港 = direct
🇸🇬 3-新加坡 = direct
1-其他 = direct
[Proxy Group]
🚀 节点选择 = select,🇭🇰 3-香港,🇭🇰 香港,🫳 手动切换,DIRECT
🫳 手动切换 = select,🇯🇵 日本,🇨🇳 台湾,🇺🇸 美国,🇸🇬 新加坡,🇰🇷 韩国,1-其他,proxy 01...
🎥 Emby = select,DIRECT,🇸🇬 新加坡,🇨🇳 台湾,🇭🇰 香港,🚀 节点选择,🫳 手动切换
🌍 国外媒体 = select,🇸🇬 新加坡,🇨🇳 台湾,🇭🇰 香港,🚀 节点选择,🫳 手动切换
Ⓜ️ OneDrive = select,DIRECT,🚀 节点选择,🫳 手动切换
🎮 游戏平台 = select,DIRECT,🚀 节点选择,🫳 手动切换
🇭🇰 香港 = select,🇭🇰 3-香港,🇭🇰 1-香港,🇭🇰 2-香港,proxy 01...
🇸🇬 新加坡 = select,🇸🇬 1-新加坡,🇸🇬 2-新加坡,🇸🇬 3-新加坡,proxy 01...
⛔️ 广告拦截 = select,🛑 全球拦截,DIRECT,🚀 节点选择
🚫 运营劫持 = select,🛑 全球拦截,DIRECT,🚀 节点选择
🛑 全球拦截 = select,REJECT,DIRECT
🐟 漏网之鱼 = select,🚀 节点选择,DIRECT,🫳 手动切换
🇭🇰 1-香港 = url-test,proxy 01...,url=http://www.gstatic.com/generate_204,interval=300,timeout=5
🇭🇰 2-香港 = url-test,proxy 01...,url=http://www.gstatic.com/generate_204,interval=300,timeout=5
🇸🇬 2-新加坡 = url-test,proxy 01...,url=http://www.gstatic.com/generate_204,interval=300,timeout=5
[Rule]
DOMAIN-SUFFIX,acl4.ssr,🎯 全球直连
DOMAIN-SUFFIX,ip6-localhost,🎯 全球直连
DOMAIN-SUFFIX,ip6-loopback,🎯 全球直连
DOMAIN-SUFFIX,lan,🎯 全球直连
DOMAIN-SUFFIX,local,🎯 全球直连
DOMAIN-SUFFIX,localhost,🎯 全球直连
省略……
发现是因为第一二机场是SS,第三个机场是SSR协议的缘故。我都改成SS之后就没问题了
我也遇到了相同问题,经过测试,别人提供的转换服务中,clash和surfboard都可以正常获取使用,本地端只有clash正常,surfboard报错:
java.lang.IllegalArgumentException: 40: 🔮 负载均衡 not found
在禁用负载均衡条目后,才能正常获取。
故怀疑是新版本中存在的问题,云端提供服务的可能是老版本。