tindy2013 / subconverter

Utility to convert between various subscription format
GNU General Public License v3.0
13.13k stars 2.8k forks source link

[BUG] <RULE-SET规则无法成功添加"no-resolve"后缀> #763

Open Odyssey-2061 opened 4 months ago

Odyssey-2061 commented 4 months ago

确认版本最新

检索issue

subconverter版本

v0.9.0-6974910

转换过程

SS to Clash

转换设置

[custom]
; Options for custom groups
custom_proxy_group=Proxy`select`[]Auto`.*`[]DIRECT
custom_proxy_group=Auto`url-test`.*`http://www.google-analytics.com/generate_204`160,16,160

; Options for custom rulesets
enable_rule_generator=true
overwrite_original_rules=true

ruleset=Proxy,clash-domain:https://ghproxy.net/https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/geolocation-!cn.yaml
ruleset=DIRECT,clash-domain:https://ghproxy.net/https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/geolocation-cn.yaml
ruleset=DIRECT,clash-ipcidr:https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/private.yaml,no-resolve
ruleset=DIRECT,clash-classic:https://ghproxy.net/https://raw.githubusercontent.com/deezertidal/shadowrocket-rules/main/rule/ASN-lite.rule
ruleset=DIRECT,https://raw.githubusercontent.com/Loyalsoldier/surge-rules/release/cncidr.txt,no-resolve
ruleset=DIRECT,clash-classic:https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaIPs/ChinaIPs_Classical.yaml,no-resolve
ruleset=Proxy,[]DST-PORT,80
ruleset=Proxy,[]DST-PORT,443
ruleset=DIRECT,[]FINAL

; Options for custom base configuration file
clash_rule_base=(下方列出)

; Options for adding emoji
add_emoji=false
remove_old_emoji=true

; Options for filtering nodes
exclude_remarks=(s801|Game|Gaming|游戏|隐私|Korea|KR|韩国)

clash_rule_base

mixed-port: 7890
allow-lan: false
bind-address: '*'
mode: rule
log-level: silent
ipv6: false
external-controller: 127.0.0.1:9090
secret: '123456'
find-process-mode: off
keep-alive-interval: 800
geo-auto-update: true
geo-update-interval: 24
profile: 
   store-selected: true
   store-fake-ip: false
ntp:
   enable: true
   server: ntp.aliyun.com
   port: 123
   interval: 30
hosts:
   mtalk.google.com: [173.194.174.188]
   alt1-mtalk.google.com: [142.251.8.188]
   alt2-mtalk.google.com: [108.177.97.188]
dns:
   enable: true
   listen: 0.0.0.0:1053
   ipv6: false
   default-nameserver:
      - 'udp://114.114.114.114'
   proxy-server-nameserver:
      - 'https://223.6.6.6/dns-query'
   use-hosts: false
   enhanced-mode: redir-host
   fake-ip-filter:
      - '+.lan'
      - '+.local'
      - 'localhost.ptlogin2.qq.com'
      - 'localhost.sec.qq.com'
   nameserver:
      - 'https://doh-pure.onedns.net/dns-query'

复现步骤

使用原版转换地址进行转换 https://sub.xeton.dev/sub?target=clash&url=()&config=(在"转换设置"里展示)&expand=true https://sub.xeton.dev/sub?target=clash&url=()&config=(在"转换设置"里展示)&expand=false

BUG所涉及的RULE-SET规则

ruleset=DIRECT,clash-ipcidr:https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/private.yaml,no-resolve
ruleset=DIRECT,clash-classic:https://ghproxy.net/https://raw.githubusercontent.com/deezertidal/shadowrocket-rules/main/rule/ASN-lite.rule,no-resolve
ruleset=DIRECT,https://raw.githubusercontent.com/Loyalsoldier/surge-rules/release/cncidr.txt,no-resolve
ruleset=DIRECT,clash-classic:https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaIPs/ChinaIPs_Classical.yaml,no-resolve

期望结果

  1. 在"&expand=false"情况下:在最终生成的订阅文件中为指定的RULE-SET规则保留",no-resolve"后缀;
  2. 在"&expand=true"情况下:在最终生成的订阅文件中为指定的RULE-SET规则所展开的子规则增加",no-resolve"后缀。

实际结果

转换效果(全都没有no-resolve后缀)

  1. with "&expand=false"
    - RULE-SET,private,DIRECT
    - RULE-SET,ASN-lite,DIRECT
    - RULE-SET,cncidr_ipcidr,DIRECT
    - RULE-SET,ChinaIPs_Classical,DIRECT
  2. with "&expand=true"
    列举一个片段:
    - IP-CIDR,52.93.127.104/31,DIRECT
    - IP-CIDR,52.93.127.92/30,DIRECT
    - IP-CIDR,52.93.127.96/29,DIRECT
    - IP-CIDR,52.93.156.0/22,DIRECT
    - IP-CIDR,52.93.242.120/29,DIRECT
    - IP-CIDR,52.93.242.128/25,DIRECT

错误信息

No response

Serenity2077 commented 2 months ago

请问这个有解决办法了么

Odyssey-2061 commented 2 months ago

请问这个有解决办法了么

莫得,等待中,保持乐观保持耐心

Wrandz commented 2 months ago

在ruleset里面加是可以的,不过一般第三方ip类规则都会有no-resolve,如果没有的话,建议你fork了以后自己加上,我目前使用的ACL4SSR的ip类规则都会有no-resolve。

Odyssey-2061 commented 2 months ago

在ruleset里面加是可以的,不过一般第三方ip类规则都会有no-resolve,如果没有的话,建议你fork了以后自己加上,我目前使用的ACL4SSR的ip类规则都会有no-resolve。

嗯嗯,这也是个方法! 另外从我内心来说,希望这个问题能在项目里得到修复(因能力所限我开了issue而不是pr)