Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e978a636d9 | ||
|
|
804007096f | ||
|
|
2df8593e8b | ||
|
|
f58e8c3603 |
@@ -9,3 +9,7 @@ Thumbs.db
|
||||
secrets/
|
||||
*.pem
|
||||
*.key
|
||||
|
||||
# Python
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
@@ -8,8 +8,13 @@ Clash Verge 和华硕路由器上的 mihomo(Magic Catling2)等消费端同
|
||||
```
|
||||
vpn-rules/
|
||||
├── direct.yaml # 规则真源(mihomo rule-provider 格式)
|
||||
├── router/
|
||||
│ ├── direct-rules.yaml # 路由器手动粘贴版(`- ` 前缀 + DIRECT 策略)
|
||||
│ └── direct-plain.txt # 无 `- ` 前缀纯文本版(规则逐行、无策略)
|
||||
└── scripts/
|
||||
└── gen_clash_verge_script.py # 真源 → Clash Verge Script.js 生成器
|
||||
├── gen_clash_verge_script.py # 真源 → Clash Verge Script.js 生成器
|
||||
├── gen_router_paste.py # 真源 → 路由器手动粘贴版生成器
|
||||
└── gen_plain_list.py # 真源 → 纯文本版生成器
|
||||
```
|
||||
|
||||
## 为什么需要它
|
||||
@@ -51,6 +56,8 @@ rules:
|
||||
|
||||
> 路由器内网自建 Gitea(192.168.50.2:3000)也可直连:`http://192.168.50.2:3000/ageorge156/vpn-rules/raw/branch/main/direct.yaml`。
|
||||
|
||||
**拉不到 URL 时(手动粘贴版)**:打开 `router/direct-rules.yaml`,把里面的规则行粘贴到路由器现有规则列表最前面即可,无需联网(生成命令 `python3 scripts/gen_router_paste.py`)。若工具不支持 `- ` 前缀,用 `router/direct-plain.txt`(生成命令 `python3 scripts/gen_plain_list.py`)。
|
||||
|
||||
## 维护流程
|
||||
|
||||
1. 改 `direct.yaml`(rule-provider 条目,**不含**策略字段)。
|
||||
|
||||
+10
@@ -41,6 +41,14 @@ payload:
|
||||
- DOMAIN-SUFFIX,hailuoai.com
|
||||
- DOMAIN,minimax-public-cdn.oss-cn-wulanchabu.aliyuncs.com
|
||||
|
||||
# HuggingFace 模型下载直连(LM Studio 换源 hf-mirror)
|
||||
# hf-mirror.com → 镜像元数据
|
||||
# *.cdn.hf.co → 权重内容 CDN(us.aws.cdn.hf.co 等,xet-bridge)
|
||||
# lmstudio.ai → LM Studio 官方服务(模型目录/更新)
|
||||
- DOMAIN-SUFFIX,hf-mirror.com
|
||||
- DOMAIN-SUFFIX,cdn.hf.co
|
||||
- DOMAIN-SUFFIX,lmstudio.ai
|
||||
|
||||
# 内网 / 私有段绝不上代理
|
||||
- IP-CIDR,127.0.0.0/8,no-resolve
|
||||
- IP-CIDR,10.0.0.0/8,no-resolve
|
||||
@@ -60,6 +68,8 @@ payload:
|
||||
- DOMAIN-KEYWORD,ugreen
|
||||
- DOMAIN-KEYWORD,ugnas
|
||||
- DOMAIN-KEYWORD,ugreengroup
|
||||
# SyncSpace 底层用 Syncthing 协议做 P2P(STUN/discovery/relay)
|
||||
- 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
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
DOMAIN,frp.puyuanfh.cn
|
||||
IP-CIDR,8.133.177.3/32,no-resolve
|
||||
DOMAIN-SUFFIX,bilibili.com
|
||||
DOMAIN-SUFFIX,bilibili.cn
|
||||
DOMAIN-SUFFIX,bilivideo.com
|
||||
DOMAIN-SUFFIX,bili2233.cn
|
||||
DOMAIN-SUFFIX,hdslb.com
|
||||
GEOIP,CN,no-resolve
|
||||
DOMAIN-SUFFIX,deepseek.com
|
||||
DOMAIN-SUFFIX,minimaxi.com
|
||||
DOMAIN-SUFFIX,minimax.chat
|
||||
DOMAIN-SUFFIX,hailuoai.com
|
||||
DOMAIN,minimax-public-cdn.oss-cn-wulanchabu.aliyuncs.com
|
||||
DOMAIN-SUFFIX,hf-mirror.com
|
||||
DOMAIN-SUFFIX,cdn.hf.co
|
||||
DOMAIN-SUFFIX,lmstudio.ai
|
||||
IP-CIDR,127.0.0.0/8,no-resolve
|
||||
IP-CIDR,10.0.0.0/8,no-resolve
|
||||
IP-CIDR,172.16.0.0/12,no-resolve
|
||||
IP-CIDR,192.168.0.0/16,no-resolve
|
||||
IP-CIDR,100.64.0.0/10,no-resolve
|
||||
DOMAIN-SUFFIX,.local
|
||||
DOMAIN-SUFFIX,icloud.com.cn
|
||||
DOMAIN-SUFFIX,ug.link
|
||||
DOMAIN-SUFFIX,ugreen.com
|
||||
DOMAIN-SUFFIX,ugnas.cloud
|
||||
DOMAIN-SUFFIX,ugos.cn
|
||||
DOMAIN-KEYWORD,ugreen
|
||||
DOMAIN-KEYWORD,ugnas
|
||||
DOMAIN-KEYWORD,ugreengroup
|
||||
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
|
||||
@@ -0,0 +1,47 @@
|
||||
# vpn-rules 手动粘贴版(无需联网拉取)— 由 direct.yaml 生成,勿手改。
|
||||
#
|
||||
# 用法(Magic Catling2 等拉不到 rule-provider 时):
|
||||
# 1. 打开路由器的规则设置;
|
||||
# 2. 把下面 `rules:` 里的每一行 `- 规则` 粘贴到【现有规则列表的最前面】;
|
||||
# 3. 只粘贴规则行,不要用整个文件替换你原来的 rules(否则订阅自带规则会丢)。
|
||||
#
|
||||
# 重新生成:python3 scripts/gen_router_paste.py(改真源 direct.yaml 后重跑)。
|
||||
# 规则与 direct.yaml 逐条对应;对应拉取版 URL:
|
||||
# https://gitea.puyuanfh.cn/ageorge156/vpn-rules/raw/branch/main/direct.yaml
|
||||
# 内网源:http://192.168.50.2:3000/ageorge156/vpn-rules/raw/branch/main/direct.yaml
|
||||
|
||||
rules:
|
||||
- DOMAIN,frp.puyuanfh.cn,DIRECT
|
||||
- IP-CIDR,8.133.177.3/32,DIRECT,no-resolve
|
||||
- DOMAIN-SUFFIX,bilibili.com,DIRECT
|
||||
- DOMAIN-SUFFIX,bilibili.cn,DIRECT
|
||||
- DOMAIN-SUFFIX,bilivideo.com,DIRECT
|
||||
- DOMAIN-SUFFIX,bili2233.cn,DIRECT
|
||||
- DOMAIN-SUFFIX,hdslb.com,DIRECT
|
||||
- GEOIP,CN,DIRECT,no-resolve
|
||||
- DOMAIN-SUFFIX,deepseek.com,DIRECT
|
||||
- DOMAIN-SUFFIX,minimaxi.com,DIRECT
|
||||
- DOMAIN-SUFFIX,minimax.chat,DIRECT
|
||||
- DOMAIN-SUFFIX,hailuoai.com,DIRECT
|
||||
- DOMAIN,minimax-public-cdn.oss-cn-wulanchabu.aliyuncs.com,DIRECT
|
||||
- DOMAIN-SUFFIX,hf-mirror.com,DIRECT
|
||||
- DOMAIN-SUFFIX,cdn.hf.co,DIRECT
|
||||
- DOMAIN-SUFFIX,lmstudio.ai,DIRECT
|
||||
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
|
||||
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
|
||||
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
|
||||
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
|
||||
- IP-CIDR,100.64.0.0/10,DIRECT,no-resolve
|
||||
- DOMAIN-SUFFIX,.local,DIRECT
|
||||
- DOMAIN-SUFFIX,icloud.com.cn,DIRECT
|
||||
- DOMAIN-SUFFIX,ug.link,DIRECT
|
||||
- DOMAIN-SUFFIX,ugreen.com,DIRECT
|
||||
- DOMAIN-SUFFIX,ugnas.cloud,DIRECT
|
||||
- DOMAIN-SUFFIX,ugos.cn,DIRECT
|
||||
- DOMAIN-KEYWORD,ugreen,DIRECT
|
||||
- DOMAIN-KEYWORD,ugnas,DIRECT
|
||||
- DOMAIN-KEYWORD,ugreengroup,DIRECT
|
||||
- DOMAIN-SUFFIX,syncthing.net,DIRECT
|
||||
- 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
|
||||
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env python3
|
||||
"""从 direct.yaml(真源)生成无 `- ` 前缀的纯文本规则列表。
|
||||
|
||||
格式:每条规则一行,无 YAML 列表前缀、无注释、无策略字段
|
||||
(同 rule-provider payload 内容,只是去掉 `- `)。
|
||||
|
||||
适用于把规则直接粘贴进不支持 YAML 列表 / 不需要策略前缀的工具。
|
||||
"""
|
||||
from pathlib import Path
|
||||
|
||||
from gen_clash_verge_script import load_payload
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parent.parent
|
||||
OUT = REPO_ROOT / "router" / "direct-plain.txt"
|
||||
|
||||
|
||||
def main() -> None:
|
||||
payload = load_payload(REPO_ROOT / "direct.yaml")
|
||||
OUT.parent.mkdir(parents=True, exist_ok=True)
|
||||
OUT.write_text("\n".join(payload) + "\n", encoding="utf-8")
|
||||
print(f"✅ 已生成 {OUT}({len(payload)} 条规则,无 - 前缀)")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env python3
|
||||
"""从 direct.yaml(真源)生成路由器「手动粘贴版」规则文件 router/direct-rules.yaml。
|
||||
|
||||
适用于 Magic Catling2 等无法联网拉取 rule-provider 的场景:
|
||||
把生成的规则行粘贴进现有 rules 列表最前面即可,无需 URL 拉取。
|
||||
"""
|
||||
from pathlib import Path
|
||||
|
||||
from gen_clash_verge_script import load_payload, to_rule
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parent.parent
|
||||
OUT = REPO_ROOT / "router" / "direct-rules.yaml"
|
||||
|
||||
TEMPLATE = """# vpn-rules 手动粘贴版(无需联网拉取)— 由 direct.yaml 生成,勿手改。
|
||||
#
|
||||
# 用法(Magic Catling2 等拉不到 rule-provider 时):
|
||||
# 1. 打开路由器的规则设置;
|
||||
# 2. 把下面 `rules:` 里的每一行 `- 规则` 粘贴到【现有规则列表的最前面】;
|
||||
# 3. 只粘贴规则行,不要用整个文件替换你原来的 rules(否则订阅自带规则会丢)。
|
||||
#
|
||||
# 重新生成:python3 scripts/gen_router_paste.py(改真源 direct.yaml 后重跑)。
|
||||
# 规则与 direct.yaml 逐条对应;对应拉取版 URL:
|
||||
# https://gitea.puyuanfh.cn/ageorge156/vpn-rules/raw/branch/main/direct.yaml
|
||||
# 内网源:http://192.168.50.2:3000/ageorge156/vpn-rules/raw/branch/main/direct.yaml
|
||||
|
||||
rules:
|
||||
{rules}
|
||||
"""
|
||||
|
||||
|
||||
def main() -> None:
|
||||
payload = load_payload(REPO_ROOT / "direct.yaml")
|
||||
lines = "\n".join(f" - {to_rule(e)}" for e in payload)
|
||||
OUT.parent.mkdir(parents=True, exist_ok=True)
|
||||
OUT.write_text(TEMPLATE.format(rules=lines), encoding="utf-8")
|
||||
print(f"✅ 已生成 {OUT}({len(payload)} 条规则,可直接粘贴)")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user