All checks were successful
Update Clash Rules / update-rules (push) Successful in 6s
119 lines
4.2 KiB
YAML
119 lines
4.2 KiB
YAML
name: Update Clash Rules
|
|
on:
|
|
schedule:
|
|
- cron: '0 23 * * *' # 每天北京时间早上7点执行
|
|
workflow_dispatch: # 允许手动触发
|
|
push:
|
|
branches: [ main, master ]
|
|
|
|
jobs:
|
|
update-rules:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: 创建目录结构
|
|
run: |
|
|
mkdir -p ruleset/txt
|
|
mkdir -p ruleset/yaml
|
|
|
|
- name: 下载并转换规则文件
|
|
run: |
|
|
# 定义规则文件列表
|
|
rules=(
|
|
"reject"
|
|
"icloud"
|
|
"apple"
|
|
"google"
|
|
"proxy"
|
|
"direct"
|
|
"private"
|
|
"gfw"
|
|
"tld-not-cn"
|
|
"telegramcidr"
|
|
"cncidr"
|
|
"lancidr"
|
|
"applications"
|
|
)
|
|
|
|
# 下载所有规则文件
|
|
for rule in "${rules[@]}"; do
|
|
echo "Processing $rule..."
|
|
|
|
# 下载 txt 格式
|
|
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/${rule}.txt" \
|
|
-o "ruleset/txt/${rule}.txt" \
|
|
--fail --silent --show-error
|
|
|
|
# 转换为 yaml 格式
|
|
echo "payload:" > "ruleset/yaml/${rule}.yaml"
|
|
sed 's/^/ - /' "ruleset/txt/${rule}.txt" >> "ruleset/yaml/${rule}.yaml"
|
|
done
|
|
|
|
- name: 生成 README
|
|
run: |
|
|
cat > README.md << EOF
|
|
# Clash Rules
|
|
|
|
自动同步 [Loyalsoldier/clash-rules](https://github.com/Loyalsoldier/clash-rules) 规则文件。
|
|
|
|
## 文件说明
|
|
|
|
| 规则 | 说明 | TXT | YAML |
|
|
|------|------|-----|------|
|
|
| reject | 广告拦截 | [链接](./ruleset/txt/reject.txt) | [链接](./ruleset/yaml/reject.yaml) |
|
|
| apple | 苹果服务 | [链接](./ruleset/txt/apple.txt) | [链接](./ruleset/yaml/apple.yaml) |
|
|
| google | 谷歌服务 | [链接](./ruleset/txt/google.txt) | [链接](./ruleset/yaml/google.yaml) |
|
|
| proxy | 代理列表 | [链接](./ruleset/txt/proxy.txt) | [链接](./ruleset/yaml/proxy.yaml) |
|
|
| direct | 直连列表 | [链接](./ruleset/txt/direct.txt) | [链接](./ruleset/yaml/direct.yaml) |
|
|
| gfw | GFW列表 | [链接](./ruleset/txt/gfw.txt) | [链接](./ruleset/yaml/gfw.yaml) |
|
|
| cncidr | 中国IP段 | [链接](./ruleset/txt/cncidr.txt) | [链接](./ruleset/yaml/cncidr.yaml) |
|
|
| telegramcidr | Telegram IP | [链接](./ruleset/txt/telegramcidr.txt) | [链接](./ruleset/yaml/telegramcidr.yaml) |
|
|
|
|
## 使用方法
|
|
|
|
在 Clash 配置文件中添加:
|
|
|
|
\`\`\`yaml
|
|
rule-providers:
|
|
reject:
|
|
type: http
|
|
behavior: domain
|
|
url: "https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/yaml/reject.yaml"
|
|
path: ./ruleset/reject.yaml
|
|
interval: 86400
|
|
|
|
proxy:
|
|
type: http
|
|
behavior: domain
|
|
url: "https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/yaml/proxy.yaml"
|
|
path: ./ruleset/proxy.yaml
|
|
interval: 86400
|
|
|
|
cncidr:
|
|
type: http
|
|
behavior: ipcidr
|
|
url: "https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/yaml/cncidr.yaml"
|
|
path: ./ruleset/cncidr.yaml
|
|
interval: 86400
|
|
|
|
rules:
|
|
- RULE-SET,reject,REJECT
|
|
- RULE-SET,proxy,PROXY
|
|
- RULE-SET,cncidr,DIRECT
|
|
- GEOIP,CN,DIRECT
|
|
- MATCH,PROXY
|
|
\`\`\`
|
|
|
|
最后更新: $(TZ='Asia/Shanghai' date +'%Y-%m-%d %H:%M')
|
|
EOF
|
|
|
|
- name: 提交更改
|
|
run: |
|
|
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
|
git config --local user.name "github-actions[bot]"
|
|
git add .
|
|
git diff --cached --quiet || git commit -m "Update rules: $(date +'%Y-%m-%d')"
|
|
git push |