Author SHA1 Message Date
ageorge156 7cfdc0fbcc fix: keep OneDrive on direct routing
CI / lite (pull_request) Successful in 3s
2026-08-30 16:00:41 +08:00
ageorge156 f05bffd587 feat: support Clash Verge global script on Windows 2026-08-30 14:31:06 +08:00
5 changed files with 1 additions and 90 deletions
-18
View File
@@ -76,21 +76,3 @@ payload:
- IP-CIDR,110.42.0.0/16,no-resolve
- IP-CIDR,43.248.128.0/17,no-resolve
- IP-CIDR,111.170.0.0/16,no-resolve
# Steam 全局直连(社区/商店/CDN/Valve 官方网段;避免下载/联机绕美节点)
- DOMAIN-SUFFIX,steampowered.com
- DOMAIN-SUFFIX,steamcommunity.com
- DOMAIN-SUFFIX,steamgames.com
- DOMAIN-SUFFIX,steamusercontent.com
- DOMAIN-SUFFIX,steam-chat.com
- DOMAIN-SUFFIX,steamstatic.com
- DOMAIN-SUFFIX,steamcontent.com
- DOMAIN-KEYWORD,csgo.
- PROCESS-NAME,steam
- PROCESS-NAME,steamwebhelper
- IP-CIDR,162.254.192.0/18,no-resolve
# Akamai Steam CDN 主段
- IP-CIDR,103.10.124.0/23,no-resolve
- IP-CIDR,103.28.54.0/23,no-resolve
- IP-CIDR,146.66.152.0/21,no-resolve
- IP-CIDR,155.133.224.0/19,no-resolve
-15
View File
@@ -33,18 +33,3 @@ DOMAIN-SUFFIX,syncthing.net
IP-CIDR,110.42.0.0/16,no-resolve
IP-CIDR,43.248.128.0/17,no-resolve
IP-CIDR,111.170.0.0/16,no-resolve
DOMAIN-SUFFIX,steampowered.com
DOMAIN-SUFFIX,steamcommunity.com
DOMAIN-SUFFIX,steamgames.com
DOMAIN-SUFFIX,steamusercontent.com
DOMAIN-SUFFIX,steam-chat.com
DOMAIN-SUFFIX,steamstatic.com
DOMAIN-SUFFIX,steamcontent.com
DOMAIN-KEYWORD,csgo.
PROCESS-NAME,steam
PROCESS-NAME,steamwebhelper
IP-CIDR,162.254.192.0/18,no-resolve
IP-CIDR,103.10.124.0/23,no-resolve
IP-CIDR,103.28.54.0/23,no-resolve
IP-CIDR,146.66.152.0/21,no-resolve
IP-CIDR,155.133.224.0/19,no-resolve
-15
View File
@@ -46,18 +46,3 @@ rules:
- IP-CIDR,110.42.0.0/16,DIRECT,no-resolve
- IP-CIDR,43.248.128.0/17,DIRECT,no-resolve
- IP-CIDR,111.170.0.0/16,DIRECT,no-resolve
- DOMAIN-SUFFIX,steampowered.com,DIRECT
- DOMAIN-SUFFIX,steamcommunity.com,DIRECT
- DOMAIN-SUFFIX,steamgames.com,DIRECT
- DOMAIN-SUFFIX,steamusercontent.com,DIRECT
- DOMAIN-SUFFIX,steam-chat.com,DIRECT
- DOMAIN-SUFFIX,steamstatic.com,DIRECT
- DOMAIN-SUFFIX,steamcontent.com,DIRECT
- DOMAIN-KEYWORD,csgo.,DIRECT
- PROCESS-NAME,steam,DIRECT
- PROCESS-NAME,steamwebhelper,DIRECT
- IP-CIDR,162.254.192.0/18,DIRECT,no-resolve
- IP-CIDR,103.10.124.0/23,DIRECT,no-resolve
- IP-CIDR,103.28.54.0/23,DIRECT,no-resolve
- IP-CIDR,146.66.152.0/21,DIRECT,no-resolve
- IP-CIDR,155.133.224.0/19,DIRECT,no-resolve
+1 -6
View File
@@ -52,12 +52,7 @@ def load_payload(path: Path) -> list[str]:
def to_rule(entry: str) -> str:
"""rule-provider 条目(无策略)→ 完整规则(补 DIRECT)。
处理:先剥掉行尾 `#` 注释,再补 DIRECT 策略,避免带注释的条目被错误拼接。
"""
# 剥掉 `#` 之后的行尾注释
entry = entry.split("#", 1)[0].rstrip()
"""rule-provider 条目(无策略)→ 完整规则(补 DIRECT)。"""
if entry.endswith(",no-resolve"):
return f"{entry[:-len(',no-resolve')]},DIRECT,no-resolve"
return f"{entry},DIRECT"
-36
View File
@@ -203,42 +203,6 @@ class ModuleSpecTests(unittest.TestCase):
"PROCESS-NAME,OneDrive.exe,DIRECT",
)
def test_to_rule_strips_inline_hash_comment_before_classifying_no_resolve(self) -> None:
# 回归测试 (b4a4769):to_rule() 在判断 entry.endswith(',no-resolve') 之前
# 没有剥掉行尾 # 注释,导致带 inline 注释的 Akamai Steam CDN 规则
# 走错分支,把注释当成 entry 的一部分拼进去,生成 mihomo 解析失败的规则。
self.assertEqual(
to_rule("IP-CIDR,162.254.192.0/18,no-resolve # Akamai Steam CDN 主段"),
"IP-CIDR,162.254.192.0/18,DIRECT,no-resolve",
)
# 注释里出现 "no-resolve" 不能误判为 suffix
self.assertEqual(
to_rule("DOMAIN-SUFFIX,example.com # 走 no-resolve 路径"),
"DOMAIN-SUFFIX,example.com,DIRECT",
)
# 注释里出现 ",DIRECT" 不能误拼到 proxy 字段
self.assertEqual(
to_rule("IP-CIDR,10.0.0.0/8 # 不是 DIRECT, 是 REJECT"),
"IP-CIDR,10.0.0.0/8,DIRECT",
)
def test_to_rule_preserves_canonical_forms(self) -> None:
# 不带注释、不带 no-resolve
self.assertEqual(
to_rule("DOMAIN-SUFFIX,bilibili.com"),
"DOMAIN-SUFFIX,bilibili.com,DIRECT",
)
# 带 no-resolve、无注释
self.assertEqual(
to_rule("IP-CIDR,127.0.0.0/8,no-resolve"),
"IP-CIDR,127.0.0.0/8,DIRECT,no-resolve",
)
# 带 no-resolve + 行尾空白
self.assertEqual(
to_rule("IP-CIDR,127.0.0.0/8,no-resolve "),
"IP-CIDR,127.0.0.0/8,DIRECT,no-resolve",
)
def test_clash_verge_script_adds_reachable_direct_dns_fallbacks(self) -> None:
script = render_script(["PROCESS-NAME,OneDrive.exe"])