更新 .gitea/workflows/update-rules.yml
All checks were successful
Update Clash Rules / update-rules (push) Successful in 15s
All checks were successful
Update Clash Rules / update-rules (push) Successful in 15s
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
name: Download and Publish Clash Rules
|
name: Update Clash Rules
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '0 23 * * *' # 每天北京时间早上7点执行
|
- cron: '0 23 * * *' # 每天北京时间早上7点执行
|
||||||
@@ -7,24 +7,20 @@ on:
|
|||||||
branches: [ main, master ]
|
branches: [ main, master ]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
download-and-publish:
|
update-rules:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
- name: 创建目录结构
|
||||||
|
|
||||||
- name: 创建规则目录
|
|
||||||
run: |
|
run: |
|
||||||
mkdir -p ruleset/txt
|
mkdir -p ruleset/txt
|
||||||
mkdir -p ruleset/yaml
|
mkdir -p ruleset/yaml
|
||||||
|
|
||||||
- name: 下载规则文件
|
- name: 下载并转换规则文件
|
||||||
run: |
|
run: |
|
||||||
echo "开始下载规则文件..."
|
|
||||||
|
|
||||||
# 定义规则文件列表
|
# 定义规则文件列表
|
||||||
rules=(
|
rules=(
|
||||||
"reject"
|
"reject"
|
||||||
@@ -44,97 +40,58 @@ jobs:
|
|||||||
|
|
||||||
# 下载所有规则文件
|
# 下载所有规则文件
|
||||||
for rule in "${rules[@]}"; do
|
for rule in "${rules[@]}"; do
|
||||||
echo "下载 $rule.txt..."
|
echo "Processing $rule..."
|
||||||
|
|
||||||
|
# 下载 txt 格式
|
||||||
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/${rule}.txt" \
|
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/${rule}.txt" \
|
||||||
-o "ruleset/txt/${rule}.txt" \
|
-o "ruleset/txt/${rule}.txt" \
|
||||||
--fail \
|
--fail --silent --show-error
|
||||||
--silent \
|
|
||||||
--show-error \
|
|
||||||
--retry 3 \
|
|
||||||
--retry-delay 5
|
|
||||||
|
|
||||||
# 生成 YAML 格式(Clash 需要)
|
# 转换为 yaml 格式
|
||||||
echo "payload:" > "ruleset/yaml/${rule}.yaml"
|
echo "payload:" > "ruleset/yaml/${rule}.yaml"
|
||||||
sed 's/^/ - /' "ruleset/txt/${rule}.txt" >> "ruleset/yaml/${rule}.yaml"
|
sed 's/^/ - /' "ruleset/txt/${rule}.txt" >> "ruleset/yaml/${rule}.yaml"
|
||||||
done
|
done
|
||||||
|
|
||||||
- name: 生成 README(根目录)
|
- name: 生成 README
|
||||||
run: |
|
run: |
|
||||||
cat > README.md << 'EOF'
|
cat > README.md << 'EOF'
|
||||||
# Clash Rules 规则仓库
|
# Clash Rules
|
||||||
|
|
||||||
[](https://github.com/${{ github.repository }}/actions/workflows/clash-rules.yml)
|
自动同步 [Loyalsoldier/clash-rules](https://github.com/Loyalsoldier/clash-rules) 规则文件。
|
||||||
[-blue)](https://github.com/${{ github.repository }}/tree/main/ruleset)
|
|
||||||
|
|
||||||
自动同步 [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) |
|
||||||
|
|
||||||
```
|
## 使用方法
|
||||||
.
|
|
||||||
├── README.md # 本文档
|
|
||||||
└── ruleset/
|
|
||||||
├── txt/ # 原始文本格式规则
|
|
||||||
│ ├── reject.txt
|
|
||||||
│ ├── proxy.txt
|
|
||||||
│ └── ...
|
|
||||||
└── yaml/ # Clash YAML 格式规则
|
|
||||||
├── reject.yaml
|
|
||||||
├── proxy.yaml
|
|
||||||
└── ...
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📊 规则文件说明
|
|
||||||
|
|
||||||
| 规则名称 | 类型 | 描述 | 文本格式 | YAML格式 |
|
|
||||||
|---------|------|------|---------|----------|
|
|
||||||
| reject | 域名 | 广告和跟踪域名 | [txt](./ruleset/txt/reject.txt) | [yaml](./ruleset/yaml/reject.yaml) |
|
|
||||||
| icloud | 域名 | iCloud 域名 | [txt](./ruleset/txt/icloud.txt) | [yaml](./ruleset/yaml/icloud.yaml) |
|
|
||||||
| apple | 域名 | Apple 服务域名 | [txt](./ruleset/txt/apple.txt) | [yaml](./ruleset/yaml/apple.yaml) |
|
|
||||||
| google | 域名 | Google 服务域名 | [txt](./ruleset/txt/google.txt) | [yaml](./ruleset/yaml/google.yaml) |
|
|
||||||
| proxy | 域名 | 需要代理的域名 | [txt](./ruleset/txt/proxy.txt) | [yaml](./ruleset/yaml/proxy.yaml) |
|
|
||||||
| direct | 域名 | 直连域名 | [txt](./ruleset/txt/direct.txt) | [yaml](./ruleset/yaml/direct.yaml) |
|
|
||||||
| private | 域名 | 私有网络域名 | [txt](./ruleset/txt/private.txt) | [yaml](./ruleset/yaml/private.yaml) |
|
|
||||||
| gfw | 域名 | GFW 域名列表 | [txt](./ruleset/txt/gfw.txt) | [yaml](./ruleset/yaml/gfw.yaml) |
|
|
||||||
| tld-not-cn | 域名 | 非中国顶级域名 | [txt](./ruleset/txt/tld-not-cn.txt) | [yaml](./ruleset/yaml/tld-not-cn.yaml) |
|
|
||||||
| telegramcidr | IP段 | Telegram IP 段 | [txt](./ruleset/txt/telegramcidr.txt) | [yaml](./ruleset/yaml/telegramcidr.yaml) |
|
|
||||||
| cncidr | IP段 | 中国 IP 段 | [txt](./ruleset/txt/cncidr.txt) | [yaml](./ruleset/yaml/cncidr.yaml) |
|
|
||||||
| lancidr | IP段 | 局域网 IP 段 | [txt](./ruleset/txt/lancidr.txt) | [yaml](./ruleset/yaml/lancidr.yaml) |
|
|
||||||
| applications | 进程 | 应用程序规则 | [txt](./ruleset/txt/applications.txt) | [yaml](./ruleset/yaml/applications.yaml) |
|
|
||||||
|
|
||||||
## 🚀 使用方法
|
|
||||||
|
|
||||||
### 方式一:远程规则订阅(推荐)
|
|
||||||
|
|
||||||
在 Clash 配置文件中添加:
|
在 Clash 配置文件中添加:
|
||||||
|
|
||||||
\`\`\`yaml
|
```yaml
|
||||||
rule-providers:
|
rule-providers:
|
||||||
# 广告拦截
|
|
||||||
reject:
|
reject:
|
||||||
type: http
|
type: http
|
||||||
behavior: domain
|
behavior: domain
|
||||||
url: "https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/yaml/reject.yaml"
|
url: "https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/yaml/reject.yaml"
|
||||||
path: ./ruleset/reject.yaml
|
path: ./ruleset/reject.yaml
|
||||||
interval: 86400
|
interval: 86400
|
||||||
|
|
||||||
# 代理规则
|
|
||||||
proxy:
|
proxy:
|
||||||
type: http
|
type: http
|
||||||
behavior: domain
|
behavior: domain
|
||||||
url: "https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/yaml/proxy.yaml"
|
url: "https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/yaml/proxy.yaml"
|
||||||
path: ./ruleset/proxy.yaml
|
path: ./ruleset/proxy.yaml
|
||||||
interval: 86400
|
interval: 86400
|
||||||
|
|
||||||
# 直连规则
|
|
||||||
direct:
|
|
||||||
type: http
|
|
||||||
behavior: domain
|
|
||||||
url: "https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/yaml/direct.yaml"
|
|
||||||
path: ./ruleset/direct.yaml
|
|
||||||
interval: 86400
|
|
||||||
|
|
||||||
# 中国IP段
|
|
||||||
cncidr:
|
cncidr:
|
||||||
type: http
|
type: http
|
||||||
behavior: ipcidr
|
behavior: ipcidr
|
||||||
@@ -145,215 +102,18 @@ jobs:
|
|||||||
rules:
|
rules:
|
||||||
- RULE-SET,reject,REJECT
|
- RULE-SET,reject,REJECT
|
||||||
- RULE-SET,proxy,PROXY
|
- RULE-SET,proxy,PROXY
|
||||||
- RULE-SET,direct,DIRECT
|
|
||||||
- RULE-SET,cncidr,DIRECT
|
- RULE-SET,cncidr,DIRECT
|
||||||
- GEOIP,CN,DIRECT
|
- GEOIP,CN,DIRECT
|
||||||
- MATCH,PROXY
|
- MATCH,PROXY
|
||||||
\`\`\`
|
```
|
||||||
|
|
||||||
### 方式二:本地规则文件
|
最后更新: $(date +'%Y-%m-%d %H:%M UTC')
|
||||||
|
|
||||||
1. 下载所需的规则文件到本地
|
|
||||||
2. 在 Clash 配置中引用本地文件:
|
|
||||||
|
|
||||||
\`\`\`yaml
|
|
||||||
rule-providers:
|
|
||||||
reject:
|
|
||||||
type: file
|
|
||||||
behavior: domain
|
|
||||||
path: ./ruleset/reject.yaml
|
|
||||||
\`\`\`
|
|
||||||
|
|
||||||
## 🔗 CDN 加速地址
|
|
||||||
|
|
||||||
提供多个 CDN 地址,选择最适合你的:
|
|
||||||
|
|
||||||
### jsDelivr(推荐,国内可访问)
|
|
||||||
\`\`\`
|
|
||||||
https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/yaml/[规则名].yaml
|
|
||||||
https://fastly.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/yaml/[规则名].yaml
|
|
||||||
\`\`\`
|
|
||||||
|
|
||||||
### GitHub Raw
|
|
||||||
\`\`\`
|
|
||||||
https://raw.githubusercontent.com/${{ github.repository }}/main/ruleset/yaml/[规则名].yaml
|
|
||||||
\`\`\`
|
|
||||||
|
|
||||||
### Statically
|
|
||||||
\`\`\`
|
|
||||||
https://cdn.statically.io/gh/${{ github.repository }}/main/ruleset/yaml/[规则名].yaml
|
|
||||||
\`\`\`
|
|
||||||
|
|
||||||
## 📈 更新统计
|
|
||||||
|
|
||||||
最后更新时间: $(date +'%Y-%m-%d %H:%M:%S UTC')
|
|
||||||
|
|
||||||
查看详细更新日志: [UPDATE_LOG.md](./ruleset/UPDATE_LOG.md)
|
|
||||||
|
|
||||||
## ⚙️ 自动更新
|
|
||||||
|
|
||||||
- **更新频率**: 每日自动更新(UTC 23:00 / 北京时间 07:00)
|
|
||||||
- **手动更新**: 可在 [Actions](https://github.com/${{ github.repository }}/actions) 页面手动触发
|
|
||||||
- **数据来源**: [Loyalsoldier/clash-rules](https://github.com/Loyalsoldier/clash-rules)
|
|
||||||
|
|
||||||
## 📝 许可证
|
|
||||||
|
|
||||||
本项目规则文件来自上游项目,仅做格式转换和分发。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
如果这个项目对你有帮助,请给个 ⭐ Star!
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
- name: 生成更新日志
|
|
||||||
run: |
|
|
||||||
cat > ruleset/UPDATE_LOG.md << EOF
|
|
||||||
# 更新日志
|
|
||||||
|
|
||||||
## $(date +'%Y-%m-%d %H:%M:%S UTC')
|
|
||||||
|
|
||||||
### 📊 文件大小统计
|
|
||||||
|
|
||||||
#### TXT 文件
|
|
||||||
\`\`\`
|
|
||||||
$(ls -lh ruleset/txt/*.txt | awk '{print $NF ": " $5}' | sed 's|.*/||')
|
|
||||||
\`\`\`
|
|
||||||
|
|
||||||
#### YAML 文件
|
|
||||||
\`\`\`
|
|
||||||
$(ls -lh ruleset/yaml/*.yaml | awk '{print $NF ": " $5}' | sed 's|.*/||')
|
|
||||||
\`\`\`
|
|
||||||
|
|
||||||
### 📈 规则数量统计
|
|
||||||
\`\`\`
|
|
||||||
EOF
|
|
||||||
|
|
||||||
for file in ruleset/txt/*.txt; do
|
|
||||||
name=$(basename "$file" .txt)
|
|
||||||
count=$(wc -l < "$file")
|
|
||||||
printf "%-20s %6d 条规则\n" "$name:" "$count" >> ruleset/UPDATE_LOG.md
|
|
||||||
done
|
|
||||||
|
|
||||||
echo '```' >> ruleset/UPDATE_LOG.md
|
|
||||||
|
|
||||||
echo "" >> ruleset/UPDATE_LOG.md
|
|
||||||
echo "### 🔄 更新内容" >> ruleset/UPDATE_LOG.md
|
|
||||||
echo "- 同步上游最新规则" >> ruleset/UPDATE_LOG.md
|
|
||||||
echo "- 生成 YAML 格式文件" >> ruleset/UPDATE_LOG.md
|
|
||||||
echo "- 更新文档和统计信息" >> ruleset/UPDATE_LOG.md
|
|
||||||
|
|
||||||
- name: 生成规则集 README
|
|
||||||
run: |
|
|
||||||
cat > ruleset/README.md << EOF
|
|
||||||
# Clash 规则文件目录
|
|
||||||
|
|
||||||
## 目录结构
|
|
||||||
|
|
||||||
- \`txt/\` - 原始文本格式规则文件
|
|
||||||
- \`yaml/\` - Clash YAML 格式规则文件
|
|
||||||
|
|
||||||
## 快速链接
|
|
||||||
|
|
||||||
### YAML 格式(Clash 直接使用)
|
|
||||||
- [reject.yaml](./yaml/reject.yaml) - 广告拦截
|
|
||||||
- [proxy.yaml](./yaml/proxy.yaml) - 代理列表
|
|
||||||
- [direct.yaml](./yaml/direct.yaml) - 直连列表
|
|
||||||
- [gfw.yaml](./yaml/gfw.yaml) - GFW 列表
|
|
||||||
- [cncidr.yaml](./yaml/cncidr.yaml) - 中国 IP 段
|
|
||||||
|
|
||||||
### TXT 格式(原始规则)
|
|
||||||
- [reject.txt](./txt/reject.txt) - 广告拦截
|
|
||||||
- [proxy.txt](./txt/proxy.txt) - 代理列表
|
|
||||||
- [direct.txt](./txt/direct.txt) - 直连列表
|
|
||||||
- [gfw.txt](./txt/gfw.txt) - GFW 列表
|
|
||||||
- [cncidr.txt](./txt/cncidr.txt) - 中国 IP 段
|
|
||||||
|
|
||||||
更多使用说明请查看 [项目主页](https://github.com/${{ github.repository }})
|
|
||||||
EOF
|
|
||||||
|
|
||||||
- name: 配置 Git
|
|
||||||
run: |
|
|
||||||
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
|
||||||
git config --local user.name "github-actions[bot]"
|
|
||||||
|
|
||||||
- name: 提交更改
|
- name: 提交更改
|
||||||
run: |
|
run: |
|
||||||
git add README.md ruleset/
|
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
git diff --cached --quiet || git commit -m "🔄 Update clash rules - $(date +'%Y-%m-%d')"
|
git config --local user.name "github-actions[bot]"
|
||||||
|
git add .
|
||||||
- name: 推送到仓库
|
git diff --cached --quiet || git commit -m "Update rules: $(date +'%Y-%m-%d')"
|
||||||
run: |
|
git push
|
||||||
git push origin main || git push origin master
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: 创建 Release(每周日)
|
|
||||||
if: github.event_name == 'schedule' && $(date +%u) == 7
|
|
||||||
uses: softprops/action-gh-release@v1
|
|
||||||
with:
|
|
||||||
tag_name: v$(date +'%Y%m%d')
|
|
||||||
name: Clash Rules $(date +'%Y-%m-%d')
|
|
||||||
body: |
|
|
||||||
## 📦 Clash 规则文件更新
|
|
||||||
|
|
||||||
**更新时间**: $(date +'%Y-%m-%d %H:%M:%S UTC')
|
|
||||||
|
|
||||||
### 📥 下载方式
|
|
||||||
|
|
||||||
#### CDN 加速链接(推荐)
|
|
||||||
```
|
|
||||||
https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/yaml/[规则名].yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 直接下载
|
|
||||||
点击下方的 Assets 下载压缩包
|
|
||||||
|
|
||||||
### 📊 本次更新统计
|
|
||||||
查看 [UPDATE_LOG.md](https://github.com/${{ github.repository }}/blob/main/ruleset/UPDATE_LOG.md)
|
|
||||||
|
|
||||||
### 🔗 相关链接
|
|
||||||
- [使用说明](https://github.com/${{ github.repository }}#使用方法)
|
|
||||||
- [数据来源](https://github.com/Loyalsoldier/clash-rules)
|
|
||||||
draft: false
|
|
||||||
prerelease: false
|
|
||||||
|
|
||||||
- name: 创建规则压缩包
|
|
||||||
if: github.event_name == 'workflow_dispatch'
|
|
||||||
run: |
|
|
||||||
cd ruleset
|
|
||||||
zip -r ../clash-rules-txt.zip txt/*.txt
|
|
||||||
zip -r ../clash-rules-yaml.zip yaml/*.yaml
|
|
||||||
zip -r ../clash-rules-all.zip txt/ yaml/ *.md
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
- name: 上传压缩包作为 Artifact
|
|
||||||
if: github.event_name == 'workflow_dispatch'
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: clash-rules-${{ github.run_number }}
|
|
||||||
path: |
|
|
||||||
clash-rules-txt.zip
|
|
||||||
clash-rules-yaml.zip
|
|
||||||
clash-rules-all.zip
|
|
||||||
retention-days: 7
|
|
||||||
|
|
||||||
- name: 输出访问信息
|
|
||||||
run: |
|
|
||||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
||||||
echo "✅ 规则文件已成功发布!"
|
|
||||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
||||||
echo ""
|
|
||||||
echo "📁 文件结构:"
|
|
||||||
echo "├── README.md (根目录)"
|
|
||||||
echo "└── ruleset/"
|
|
||||||
echo " ├── txt/ (文本格式规则)"
|
|
||||||
echo " └── yaml/ (YAML格式规则)"
|
|
||||||
echo ""
|
|
||||||
echo "🔗 访问地址:"
|
|
||||||
echo "主页: https://github.com/${{ github.repository }}"
|
|
||||||
echo ""
|
|
||||||
echo "📦 CDN 加速示例:"
|
|
||||||
echo "https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/yaml/reject.yaml"
|
|
||||||
echo "https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/txt/reject.txt"
|
|
||||||
echo ""
|
|
||||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
||||||
Reference in New Issue
Block a user