Skip to content

Build ruleset and geodata #138

Build ruleset and geodata

Build ruleset and geodata #138

Workflow file for this run

name: Build ruleset and geodata
on:
workflow_dispatch:
schedule:
- cron: "0 19 * * *"
push:
branches:
- master
paths-ignore:
- "**/README.md"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Set variables
run: |
echo "update_version=$(date -d '+8 hours' +%Y-%m-%d)" >> ${GITHUB_ENV}
echo "ads=https://raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/anti-ad-clash.yaml" >> $GITHUB_ENV
echo "private1=https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/private" >> $GITHUB_ENV
echo "private2=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Lan/Lan.list" >> $GITHUB_ENV
echo "microsoft_cn=https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/microsoft" >> $GITHUB_ENV
echo "apple_cn=https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/apple.china.conf" >> $GITHUB_ENV
echo "google_cn=https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/google.china.conf" >> $GITHUB_ENV
echo "games_cn1=https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/category-games" >> $GITHUB_ENV
echo "games_cn2=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/SteamCN/SteamCN.list" >> $GITHUB_ENV
echo "games_cn3=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Game/GameDownloadCN/GameDownloadCN.list" >> $GITHUB_ENV
echo "netflix=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Netflix/Netflix.list" >> $GITHUB_ENV
echo "disney=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Disney/Disney.list" >> $GITHUB_ENV
echo "max=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/HBO/HBO.list" >> $GITHUB_ENV
echo "primevideo=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/PrimeVideo/PrimeVideo.list" >> $GITHUB_ENV
echo "appletv=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/AppleTV/AppleTV.list" >> $GITHUB_ENV
echo "youtube=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/YouTube/YouTube.list" >> $GITHUB_ENV
echo "tiktok=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/TikTok/TikTok.list" >> $GITHUB_ENV
echo "bilibili=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/BiliBili/BiliBili.list" >> $GITHUB_ENV
echo "ai1=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/OpenAI/OpenAI.list" >> $GITHUB_ENV
echo "ai2=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Bing/Bing.list" >> $GITHUB_ENV
echo "ai3=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Gemini/Gemini.list" >> $GITHUB_ENV
echo "ai4=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Claude/Claude.list" >> $GITHUB_ENV
echo "networktest1=https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/speedtest" >> $GITHUB_ENV
echo "networktest2=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Speedtest/Speedtest.list" >> $GITHUB_ENV
echo "applications=https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/applications.txt" >> $GITHUB_ENV
echo "proxy1=https://raw.githubusercontent.com/Loyalsoldier/domain-list-custom/release/geolocation-!cn.txt" >> $GITHUB_ENV
echo "proxy2=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Global/Global.list" >> $GITHUB_ENV
echo "cn1=https://raw.githubusercontent.com/Loyalsoldier/domain-list-custom/release/cn.txt" >> $GITHUB_ENV
echo "cn2=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaMax/ChinaMax.list" >> $GITHUB_ENV
echo "netflixip=https://raw.githubusercontent.com/DustinWin/geoip/ips/netflix.txt" >> $GITHUB_ENV
echo "telegramip=https://raw.githubusercontent.com/DustinWin/geoip/ips/telegram.txt" >> $GITHUB_ENV
echo "privateip=https://raw.githubusercontent.com/DustinWin/geoip/ips/private.txt" >> $GITHUB_ENV
echo "cnip=https://raw.githubusercontent.com/DustinWin/geoip/ips/cn.txt" >> $GITHUB_ENV
shell: bash
- name: Clone Repository
uses: actions/checkout@master
with:
fetch-depth: 0
- name: Checkout v2fly/domain-list-community
uses: actions/checkout@v4
with:
repository: v2fly/domain-list-community
path: community
- name: Checkout cokebar/gfwlist2dnsmasq
uses: actions/checkout@v4
with:
repository: cokebar/gfwlist2dnsmasq
path: gfwlist2dnsmasq
- name: Checkout DustinWin/geoip
uses: actions/checkout@v4
with:
repository: DustinWin/geoip
ref: ips
path: geoip/ips
- name: Checkout DustinWin/geoip
uses: actions/checkout@v4
with:
repository: DustinWin/geoip
ref: clash
path: geoip/clash
- name: Checkout DustinWin/geoip
uses: actions/checkout@v4
with:
repository: DustinWin/geoip
ref: sing-box
path: geoip/sing-box
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.22'
cache-dependency-path: ./community/go.sum
- name: Generate ads
run: |
mkdir -p ./community/mydata/ ./domains/ ./ips/ ./clash/ ./clash-config/ ./clash-ruleset/ ./sing-box/ ./sing-box-config/ ./sing-box-ruleset/
mkdir -p ./tmp/sing-box/rules/ads/
# Download clash geodata
curl -sSL ${ads} | grep -Ev '#|payload:' | sed '/^\s*$/d' | sed "s/- '+\.//" | sed "s/- '/full:/" | sed "s/'$//" | sed 's/^[ \t]*//' > ./community/mydata/ads
# Download clash rule-set_yaml
curl -sSL ${ads} | grep -v '#' | sed '/^\s*$/d' > ./clash-ruleset/ads.yaml
# Download clash rule-set_text
curl -sSL ${ads} | grep -Ev '#|payload:' | sed '/^\s*$/d' | sed "s/- '+\./+\./" | sed "s/- '//" | sed "s/'$//" | sed 's/^[ \t]*//' > ./clash-ruleset/ads.list
# Download sing-box rule_set
curl -sSL ${ads} | grep -v '#' | sed '/^\s*$/d' | sed "s/'$//" | sed "s/'+\./DOMAIN-SUFFIX,/" | sed "s/'/DOMAIN,/" > ./tmp/sing-box/rules/ads/ads.yaml
- name: Generate private
run: |
mkdir -p ./tmp/sing-box/rules/private/
# Download clash geodata
cat <<EOF > ./tmp/temp-private.txt
full:clash.razord.top
full:clash.metacubex.one
full:yacd.haishan.me
full:yacd.metacubex.one
full:d.metacubex.one
full:metacubex.github.io
full:metacubexd.pages.dev
EOF
curl -sSL ${private1} | grep -v '#' | sed '/^\s*$/d' >> ./tmp/temp-private.txt
curl -sSL ${private2} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' >> ./tmp/temp-private.txt
sort --ignore-case -u ./tmp/temp-private.txt > ./community/mydata/private
# Download clash rule-set_yaml
cat <<EOF > ./tmp/temp-private.txt
- 'clash.razord.top'
- 'clash.metacubex.one'
- 'yacd.haishan.me'
- 'yacd.metacubex.one'
- 'd.metacubex.one'
- 'metacubex.github.io'
- 'metacubexd.pages.dev'
EOF
curl -sSL ${private1} | grep -Ev '#|full:|keyword:|regexp:' | sed '/^\s*$/d' | sed "s/^/ - '+\./" | sed "s/$/'/" >> ./tmp/temp-private.txt
curl -sSL ${private1} | grep 'full:' | sed "s/^full:/ - '/" | sed "s/$/'/" >> ./tmp/temp-private.txt
curl -sSL ${private2} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./tmp/temp-private.txt
echo 'payload:' > ./clash-ruleset/private.yaml
sort --ignore-case -u ./tmp/temp-private.txt >> ./clash-ruleset/private.yaml
# Download clash rule-set_text
cat <<EOF > ./tmp/temp-private.txt
clash.razord.top
clash.metacubex.one
yacd.haishan.me
yacd.metacubex.one
d.metacubex.one
metacubex.github.io
metacubexd.pages.dev
EOF
curl -sSL ${private1} | grep -Ev '#|full:|keyword:|regexp:' | sed '/^\s*$/d' | sed 's/^/+\./' >> ./tmp/temp-private.txt
curl -sSL ${private1} | grep 'full:' | sed 's/^full://' >> ./tmp/temp-private.txt
curl -sSL ${private2} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' >> ./tmp/temp-private.txt
sort --ignore-case -u ./tmp/temp-private.txt > ./clash-ruleset/private.list
# Download sing-box rule_set
cat <<EOF > ./tmp/temp-private.txt
- DOMAIN,clash.razord.top
- DOMAIN,clash.metacubex.one
- DOMAIN,yacd.haishan.me
- DOMAIN,yacd.metacubex.one
- DOMAIN,d.metacubex.one
- DOMAIN,metacubex.github.io
- DOMAIN,metacubexd.pages.dev
EOF
curl -sSL ${private1} | grep -Ev '#|full:|keyword:|regexp:' | sed '/^\s*$/d' | sed 's/^/ - DOMAIN-SUFFIX,/' >> ./tmp/temp-private.txt
curl -sSL ${private1} | grep 'full:' | sed 's/^full:/ - DOMAIN,/' >> ./tmp/temp-private.txt
curl -sSL ${private1} | grep 'keyword:' | sed 's/^keyword:/ - DOMAIN-KEYWORD,/' >> ./tmp/temp-private.txt
curl -sSL ${private2} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/temp-private.txt
echo 'payload:' > ./tmp/sing-box/rules/private/private.yaml
sort --ignore-case -u ./tmp/temp-private.txt >> ./tmp/sing-box/rules/private/private.yaml
- name: Generate microsoft-cn
run: |
mkdir -p ./tmp/sing-box/rules/microsoft-cn/
# Download clash geodata
count1=$(curl -sSL ${microsoft_cn} | grep 'include:' | wc -l)
curl -sSL ${microsoft_cn} | grep -v '#' | grep '@cn' | sed 's/ *@cn$//' > ./tmp/temp-microsoft-cn.txt
for((i=0;i<count1;i++)); do
archs1=$(curl -sSL ${microsoft_cn} | grep 'include:' | sed 's/^include://' | sed -n "$((i+1))p")
count2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | wc -l)
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep -v '#' | grep '@cn' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.txt
for((j=0;j<count2;j++)); do
archs2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | sed 's/^include://' | sed -n "$((j+1))p")
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep -v '#' | grep '@cn' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.txt
done
done
sort --ignore-case -u ./tmp/temp-microsoft-cn.txt > ./community/mydata/microsoft-cn
# Download clash rule-set_yaml
count1=$(curl -sSL ${microsoft_cn} | grep 'include:' | wc -l)
curl -sSL ${microsoft_cn} | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed "s/^/ - '+\./" | sed "s/ *@cn$/'/" > ./tmp/temp-microsoft-cn.txt
curl -sSL ${microsoft_cn} | grep 'full:' | grep '@cn' | sed "s/^full:/ - '/" | sed "s/ *@cn$/'/" >> ./tmp/temp-microsoft-cn.txt
for((i=0;i<count1;i++)); do
archs1=$(curl -sSL ${microsoft_cn} | grep 'include:' | sed 's/^include://g' | sed -n "$((i+1))p")
count2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | wc -l)
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed "s/^/ - '+\./" | sed "s/ *@cn$/'/" >> ./tmp/temp-microsoft-cn.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'full:' | grep '@cn' | sed "s/^full:/ - '/" | sed "s/ *@cn$/'/" >> ./tmp/temp-microsoft-cn.txt
for((j=0;j<count2;j++)); do
archs2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | sed 's/^include://' | sed -n "$((j+1))p")
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed "s/^/ - '+\./" | sed "s/ *@cn$/'/" >> ./tmp/temp-microsoft-cn.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep 'full:' | grep '@cn' | sed "s/^full:/ - '/" | sed "s/ *@cn$/'/" >> ./tmp/temp-microsoft-cn.txt
done
done
echo 'payload:' > ./clash-ruleset/microsoft-cn.yaml
sort --ignore-case -u ./tmp/temp-microsoft-cn.txt >> ./clash-ruleset/microsoft-cn.yaml
# Download clash rule-set_text
count1=$(curl -sSL ${microsoft_cn} | grep 'include:' | wc -l)
curl -sSL ${microsoft_cn} | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed 's/^/+\./' | sed 's/ *@cn$//' > ./tmp/temp-microsoft-cn.txt
curl -sSL ${microsoft_cn} | grep 'full:' | grep '@cn' | sed 's/^full://' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.txt
for((i=0;i<count1;i++)); do
archs1=$(curl -sSL ${microsoft_cn} | grep 'include:' | sed 's/^include://' | sed -n "$((i+1))p")
count2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | wc -l)
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed 's/^/+\./' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'full:' | grep '@cn' | sed 's/^full://' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.txt
for((j=0;j<count2;j++)); do
archs2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | sed 's/^include://' | sed -n "$((j+1))p")
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed 's/^/+\./' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep 'full:' | grep '@cn' | sed 's/^full://' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.txt
done
done
sort --ignore-case -u ./tmp/temp-microsoft-cn.txt > ./clash-ruleset/microsoft-cn.list
# Download sing-box rule_set
count1=$(curl -sSL ${microsoft_cn} | grep 'include:' | wc -l)
curl -sSL ${microsoft_cn} | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed 's/^/ - DOMAIN-SUFFIX,/' | sed 's/ *@cn$//' > ./tmp/temp-microsoft-cn.yaml
curl -sSL ${microsoft_cn} | grep 'full:' | grep '@cn' | sed 's/^full:/ - DOMAIN,/' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.yaml
curl -sSL ${microsoft_cn} | grep 'keyword:' | grep '@cn' | sed 's/^keyword:/ - DOMAIN-KEYWORD,/' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.yaml
for((i=0;i<count1;i++)); do
archs1=$(curl -sSL ${microsoft_cn} | grep 'include:' | sed 's/^include://' | sed -n "$((i+1))p")
count2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | wc -l)
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed 's/^/ - DOMAIN-SUFFIX,/' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.yaml
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'full:' | grep '@cn' | sed 's/^full:/ - DOMAIN,/' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.yaml
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'keyword:' | grep '@cn' | sed 's/^keyword:/ - DOMAIN-KEYWORD,/' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.yaml
for((j=0;j<count2;j++)); do
archs2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | sed 's/^include://' | sed -n "$((j+1))p")
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed 's/^/ - DOMAIN-SUFFIX,/' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.yaml
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep 'full:' | grep '@cn' | sed 's/^full:/ - DOMAIN,/' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.yaml
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep 'keyword:' | grep '@cn' | sed 's/^keyword:/ - DOMAIN-KEYWORD,/' | sed 's/ *@cn$//' >> ./tmp/temp-microsoft-cn.yaml
done
done
echo 'payload:' > ./tmp/sing-box/rules/microsoft-cn/microsoft-cn.yaml
sort --ignore-case -u ./tmp/temp-microsoft-cn.yaml >> ./tmp/sing-box/rules/microsoft-cn/microsoft-cn.yaml
- name: Generate apple-cn
run: |
mkdir -p ./tmp/sing-box/rules/apple-cn/
# Download clash geodata
curl -sSL ${apple_cn} | perl -ne '/^server=\/([^\/]+)\// && print "full:$1\n"' > ./community/mydata/apple-cn
# Download clash rule-set_yaml
echo 'payload:' > ./clash-ruleset/apple-cn.yaml
curl -sSL ${apple_cn} | perl -ne '/^server=\/([^\/]+)\// && print " - '\''$1\n"' | sed "s/$/'/" >> ./clash-ruleset/apple-cn.yaml
# Download clash rule-set_text
curl -sSL ${apple_cn} | perl -ne '/^server=\/([^\/]+)\// && print "$1\n"' > ./clash-ruleset/apple-cn.list
# Download sing-box rule_set
echo 'payload:' > ./tmp/sing-box/rules/apple-cn/apple-cn.yaml
curl -sSL ${apple_cn} | perl -ne '/^server=\/([^\/]+)\// && print " - DOMAIN,$1\n"' >> ./tmp/sing-box/rules/apple-cn/apple-cn.yaml
- name: Generate google-cn
run: |
mkdir -p ./tmp/sing-box/rules/google-cn/
# Download clash geodata
curl -sSL ${google_cn} | perl -ne '/^server=\/([^\/]+)\// && print "full:$1\n"' > ./community/mydata/google-cn
# Download clash rule-set_yaml
echo 'payload:' > ./clash-ruleset/google-cn.yaml
curl -sSL ${google_cn} | perl -ne '/^server=\/([^\/]+)\// && print " - '\''$1\n"' | sed "s/$/'/" >> ./clash-ruleset/google-cn.yaml
# Download clash rule-set_text
curl -sSL ${google_cn} | perl -ne '/^server=\/([^\/]+)\// && print "$1\n"' > ./clash-ruleset/google-cn.list
# Download sing-box rule_set
echo 'payload:' > ./tmp/sing-box/rules/google-cn/google-cn.yaml
curl -sSL ${google_cn} | perl -ne '/^server=\/([^\/]+)\// && print " - DOMAIN,$1\n"' >> ./tmp/sing-box/rules/google-cn/google-cn.yaml
- name: Generate games-cn
run: |
mkdir -p ./tmp/sing-box/rules/games-cn/
# Download clash geodata
count1=$(curl -sSL ${games_cn1} | grep 'include:' | wc -l)
curl -sSL ${games_cn1} | grep -v '#' | grep '@cn' | sed 's/ *@cn$//' > ./tmp/temp-games-cn.txt
for((i=0;i<count1;i++)); do
archs1=$(curl -sSL ${games_cn1} | grep 'include:' | sed 's/^include://' | sed -n "$((i+1))p")
count2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | wc -l)
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep -v '#' | grep '@cn' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
for((j=0;j<count2;j++)); do
archs2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | sed 's/^include://' | sed -n "$((j+1))p")
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep -v '#' | grep '@cn' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
done
done
curl -sSL ${games_cn2} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' >> ./tmp/temp-games-cn.txt
curl -sSL ${games_cn3} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' >> ./tmp/temp-games-cn.txt
sort --ignore-case -u ./tmp/temp-games-cn.txt > ./community/mydata/games-cn
# Download clash rule-set_yaml
count1=$(curl -sSL ${games_cn1} | grep 'include:' | wc -l)
curl -sSL ${games_cn1} | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed "s/^/ - '+\./" | sed "s/ *@cn$/'/" > ./tmp/temp-games-cn.txt
curl -sSL ${games_cn1} | grep 'full:' | grep '@cn' | sed "s/^full:/ - '/" | sed "s/ *@cn$/'/" >> ./tmp/temp-games-cn.txt
for((i=0;i<count1;i++)); do
archs1=$(curl -sSL ${games_cn1} | grep 'include:' | sed 's/^include://' | sed -n "$((i+1))p")
count2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | wc -l)
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed "s/^/ - '+\./" | sed "s/ *@cn$/'/" >> ./tmp/temp-games-cn.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'full:' | grep '@cn' | sed "s/^full:/ - '/" | sed "s/ *@cn$/'/" >> ./tmp/temp-games-cn.txt
for((j=0;j<count2;j++)); do
archs2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | sed 's/^include://' | sed -n "$((j+1))p")
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed "s/^/ - '+\./" | sed "s/ *@cn$/'/" >> ./tmp/temp-games-cn.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep 'full:' | grep '@cn' | sed "s/^full:/ - '/" | sed "s/ *@cn$/'/" >> ./tmp/temp-games-cn.txt
done
done
curl -sSL ${games_cn2} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./tmp/temp-games-cn.txt
curl -sSL ${games_cn3} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./tmp/temp-games-cn.txt
echo 'payload:' > ./clash-ruleset/games-cn.yaml
sort --ignore-case -u ./tmp/temp-games-cn.txt >> ./clash-ruleset/games-cn.yaml
# Download clash rule-set_text
count1=$(curl -sSL ${games_cn1} | grep 'include:' | wc -l)
curl -sSL ${games_cn1} | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed 's/^/+\./' | sed 's/ *@cn$//' > ./tmp/temp-games-cn.txt
curl -sSL ${games_cn1} | grep 'full:' | grep '@cn' | sed 's/^full://' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
for((i=0;i<count1;i++)); do
archs1=$(curl -sSL ${games_cn1} | grep 'include:' | sed 's/^include://' | sed -n "$((i+1))p")
count2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | wc -l)
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed 's/^/+\./' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'full:' | grep '@cn' | sed 's/^full://' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
for((j=0;j<count2;j++)); do
archs2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | sed 's/^include://' | sed -n "$((j+1))p")
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed 's/^/+\./' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep 'full:' | grep '@cn' | sed 's/^full://' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
done
done
curl -sSL ${games_cn2} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' >> ./tmp/temp-games-cn.txt
curl -sSL ${games_cn3} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' >> ./tmp/temp-games-cn.txt
sort --ignore-case -u ./tmp/temp-games-cn.txt > ./clash-ruleset/games-cn.list
# Download sing-box rule_set
count1=$(curl -sSL ${games_cn1} | grep 'include:' | wc -l)
curl -sSL ${games_cn1} | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed 's/^/ - DOMAIN-SUFFIX,/' | sed 's/ *@cn$//' > ./tmp/temp-games-cn.txt
curl -sSL ${games_cn1} | grep 'full:' | grep '@cn' | sed 's/^full:/ - DOMAIN,/' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
curl -sSL ${games_cn1} | grep 'keyword:' | grep '@cn' | sed 's/^keyword:/ - DOMAIN-KEYWORD,/' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
for((i=0;i<count1;i++)); do
archs1=$(curl -sSL ${games_cn1} | grep 'include:' | sed 's/^include://' | sed -n "$((i+1))p")
count2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | wc -l)
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed 's/^/ - DOMAIN-SUFFIX,/' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'full:' | grep '@cn' | sed 's/^full:/ - DOMAIN,/' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'keyword:' | grep '@cn' | sed 's/^keyword:/ - DOMAIN-KEYWORD,/' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
for((j=0;j<count2;j++)); do
archs2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | sed 's/^include://' | sed -n "$((j+1))p")
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep -Ev '#|full:|keyword:|regexp:' | grep '@cn' | sed 's/^/ - DOMAIN-SUFFIX,/' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep 'full:' | grep '@cn' | sed 's/^full:/ - DOMAIN,/' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep 'keyword:' | grep '@cn' | sed 's/^keyword:/ - DOMAIN-KEYWORD,/' | sed 's/ *@cn$//' >> ./tmp/temp-games-cn.txt
done
done
curl -sSL ${games_cn2} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/temp-games-cn.txt
curl -sSL ${games_cn3} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/temp-games-cn.txt
echo 'payload:' > ./tmp/sing-box/rules/games-cn/games-cn.yaml
sort --ignore-case -u ./tmp/temp-games-cn.txt >> ./tmp/sing-box/rules/games-cn/games-cn.yaml
- name: Generate netflix
run: |
mkdir -p ./tmp/sing-box/rules/netflix/
# Download clash geodata
curl -sSL ${netflix} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' > ./community/mydata/netflix
# Download clash rule-set_yaml
echo 'payload:' > ./clash-ruleset/netflix.yaml
curl -sSL ${netflix} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./clash-ruleset/netflix.yaml
# Download clash rule-set_text
curl -sSL ${netflix} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' > ./clash-ruleset/netflix.list
# Download sing-box rule_set
echo 'payload:' > ./tmp/sing-box/rules/netflix/netflix.yaml
curl -sSL ${netflix} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/sing-box/rules/netflix/netflix.yaml
- name: Generate disney
run: |
mkdir -p ./tmp/sing-box/rules/disney/
# Download clash geodata
curl -sSL ${disney} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' > ./community/mydata/disney
# Download clash rule-set_yaml
echo 'payload:' > ./clash-ruleset/disney.yaml
curl -sSL ${disney} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./clash-ruleset/disney.yaml
# Download clash rule-set_text
curl -sSL ${disney} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' > ./clash-ruleset/disney.list
# Download sing-box rule_set
echo 'payload:' > ./tmp/sing-box/rules/disney/disney.yaml
curl -sSL ${disney} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/sing-box/rules/disney/disney.yaml
- name: Generate max
run: |
mkdir -p ./tmp/sing-box/rules/max/
# Download clash geodata
curl -sSL ${max} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' > ./community/mydata/max
# Download clash rule-set_yaml
echo 'payload:' > ./clash-ruleset/max.yaml
curl -sSL ${max} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./clash-ruleset/max.yaml
# Download clash rule-set_text
curl -sSL ${max} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' > ./clash-ruleset/max.list
# Download sing-box rule_set
echo 'payload:' > ./tmp/sing-box/rules/max/max.yaml
curl -sSL ${max} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/sing-box/rules/max/max.yaml
- name: Generate primevideo
run: |
mkdir -p ./tmp/sing-box/rules/primevideo/
# Download clash geodata
curl -sSL ${primevideo} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' > ./community/mydata/primevideo
# Download clash rule-set_yaml
echo 'payload:' > ./clash-ruleset/primevideo.yaml
curl -sSL ${primevideo} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./clash-ruleset/primevideo.yaml
# Download clash rule-set_text
curl -sSL ${primevideo} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' > ./clash-ruleset/primevideo.list
# Download sing-box rule_set
echo 'payload:' > ./tmp/sing-box/rules/primevideo/primevideo.yaml
curl -sSL ${primevideo} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/sing-box/rules/primevideo/primevideo.yaml
- name: Generate appletv
run: |
mkdir -p ./tmp/sing-box/rules/appletv/
# Download clash geodata
curl -sSL ${appletv} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' > ./community/mydata/appletv
# Download clash rule-set_yaml
echo 'payload:' > ./clash-ruleset/appletv.yaml
curl -sSL ${appletv} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./clash-ruleset/appletv.yaml
# Download clash rule-set_text
curl -sSL ${appletv} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' > ./clash-ruleset/appletv.list
# Download sing-box rule_set
echo 'payload:' > ./tmp/sing-box/rules/appletv/appletv.yaml
curl -sSL ${appletv} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/sing-box/rules/appletv/appletv.yaml
- name: Generate youtube
run: |
mkdir -p ./tmp/sing-box/rules/youtube/
# Download clash geodata
curl -sSL ${youtube} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' > ./community/mydata/youtube
# Download clash rule-set_yaml
echo 'payload:' > ./clash-ruleset/youtube.yaml
curl -sSL ${youtube} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./clash-ruleset/youtube.yaml
# Download clash rule-set_text
curl -sSL ${youtube} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' > ./clash-ruleset/youtube.list
# Download sing-box rule_set
echo 'payload:' > ./tmp/sing-box/rules/youtube/youtube.yaml
curl -sSL ${youtube} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/sing-box/rules/youtube/youtube.yaml
- name: Generate tiktok
run: |
mkdir -p ./tmp/sing-box/rules/tiktok/
# Download clash geodata
curl -sSL ${tiktok} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' > ./community/mydata/tiktok
# Download clash rule-set_yaml
echo 'payload:' > ./clash-ruleset/tiktok.yaml
curl -sSL ${tiktok} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./clash-ruleset/tiktok.yaml
# Download clash rule-set_text
curl -sSL ${tiktok} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' > ./clash-ruleset/tiktok.list
# Download sing-box rule_set
echo 'payload:' > ./tmp/sing-box/rules/tiktok/tiktok.yaml
curl -sSL ${tiktok} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/sing-box/rules/tiktok/tiktok.yaml
- name: Generate bilibili
run: |
mkdir -p ./tmp/sing-box/rules/bilibili/
# Download clash geodata
curl -sSL ${bilibili} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' > ./community/mydata/bilibili
# Download clash rule-set_yaml
echo 'payload:' > ./clash-ruleset/bilibili.yaml
curl -sSL ${bilibili} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./clash-ruleset/bilibili.yaml
# Download clash rule-set_text
curl -sSL ${bilibili} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' > ./clash-ruleset/bilibili.list
# Download sing-box rule_set
echo 'payload:' > ./tmp/sing-box/rules/bilibili/bilibili.yaml
curl -sSL ${bilibili} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/sing-box/rules/bilibili/bilibili.yaml
- name: Generate ai
run: |
mkdir -p ./tmp/sing-box/rules/ai/
# Download clash geodata
curl -sSL ${ai1} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' > ./tmp/temp-ai.txt
curl -sSL ${ai2} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' >> ./tmp/temp-ai.txt
curl -sSL ${ai3} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' >> ./tmp/temp-ai.txt
curl -sSL ${ai4} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' >> ./tmp/temp-ai.txt
sort --ignore-case -u ./tmp/temp-ai.txt > ./community/mydata/ai
# Download clash rule-set_yaml
curl -sSL ${ai1} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" > ./tmp/temp-ai.txt
curl -sSL ${ai2} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./tmp/temp-ai.txt
curl -sSL ${ai3} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./tmp/temp-ai.txt
curl -sSL ${ai4} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./tmp/temp-ai.txt
echo 'payload:' > ./clash-ruleset/ai.yaml
sort --ignore-case -u ./tmp/temp-ai.txt >> ./clash-ruleset/ai.yaml
# Download clash rule-set_text
curl -sSL ${ai1} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' > ./tmp/temp-ai.txt
curl -sSL ${ai2} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' >> ./tmp/temp-ai.txt
curl -sSL ${ai3} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' >> ./tmp/temp-ai.txt
curl -sSL ${ai4} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' >> ./tmp/temp-ai.txt
sort --ignore-case -u ./tmp/temp-ai.txt > ./clash-ruleset/ai.list
# Download sing-box rule_set
curl -sSL ${ai1} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' > ./tmp/temp-ai.txt
curl -sSL ${ai2} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/temp-ai.txt
curl -sSL ${ai3} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/temp-ai.txt
curl -sSL ${ai4} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/temp-ai.txt
echo 'payload:' > ./tmp/sing-box/rules/ai/ai.yaml
sort --ignore-case -u ./tmp/temp-ai.txt >> ./tmp/sing-box/rules/ai/ai.yaml
- name: Generate networktest
run: |
mkdir -p ./tmp/sing-box/rules/networktest/
# Download clash geodata
count1=$(curl -sSL ${networktest1} | grep 'include:' | wc -l)
curl -sSL ${networktest1} | grep -Ev '#|include:' | sed '/^\s*$/d' > ./tmp/temp-networktest.txt
for((i=0;i<count1;i++)); do
archs1=$(curl -sSL ${networktest1} | grep 'include:' | sed 's/^include://' | sed -n "$((i+1))p")
count2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | wc -l)
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep -Ev '#|include:|@ads' | sed '/^\s*$/d' >> ./tmp/temp-networktest.txt
for((j=0;j<count2;j++)); do
archs2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | sed 's/^include://' | sed -n "$((j+1))p")
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep -Ev '#|include:|@ads' | sed '/^\s*$/d' >> ./tmp/temp-networktest.txt
done
done
curl -sSL ${networktest2} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' >> ./tmp/temp-networktest.txt
cat <<EOF >> ./tmp/temp-networktest.txt
keyword:ipv6-test
keyword:ipv6test
keyword:test-ipv6
keyword:testipv6
EOF
sort --ignore-case -u ./tmp/temp-networktest.txt > ./community/mydata/networktest
# Download clash rule-set_yaml
count1=$(curl -sSL ${networktest1} | grep 'include:' | wc -l)
curl -sSL ${networktest1} | grep -Ev '#|include:|full:|keyword:|regexp:' | sed '/^\s*$/d' | sed "s/^/ - DOMAIN-SUFFIX,/" > ./tmp/temp-networktest.txt
curl -sSL ${networktest1} | grep 'full:' | sed "s/^full:/ - DOMAIN,/" >> ./tmp/temp-networktest.txt
curl -sSL ${networktest1} | grep 'keyword:' | sed 's/^keyword:/ - DOMAIN-KEYWORD,/' >> ./tmp/temp-networktest.txt
for((i=0;i<count1;i++)); do
archs1=$(curl -sSL ${networktest1} | grep 'include:' | sed 's/^include://' | sed -n "$((i+1))p")
count2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | wc -l)
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep -Ev '#|include:|full:|keyword:|regexp:' | sed '/^\s*$/d' | sed "s/^/ - DOMAIN-SUFFIX,/" >> ./tmp/temp-networktest.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'full:' | sed "s/^full:/ - DOMAIN,/" >> ./tmp/temp-networktest.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'keyword:' | sed 's/^keyword:/ - DOMAIN-KEYWORD,/' >> ./tmp/temp-networktest.txt
for((j=0;j<count2;j++)); do
archs2=$(curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs1" | grep 'include:' | sed 's/^include://' | sed -n "$((j+1))p")
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep -Ev '#|include:|full:|keyword:|regexp:' | sed '/^\s*$/d' | sed "s/^/ - DOMAIN-SUFFIX,/" >> ./tmp/temp-networktest.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep 'full:' | sed "s/^full:/ - DOMAIN,/" >> ./tmp/temp-networktest.txt
curl -sSL "https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/$archs2" | grep 'keyword:' | sed 's/^keyword:/ - DOMAIN-KEYWORD,/' >> ./tmp/temp-networktest.txt
done
done
curl -sSL ${networktest2} | grep -v '#' | sed '/^\s*$/d' | sed "s/^/ - /" >> ./tmp/temp-networktest.txt
cat <<EOF >> ./tmp/temp-networktest.txt
- DOMAIN-KEYWORD,ipv6-test
- DOMAIN-KEYWORD,ipv6test
- DOMAIN-KEYWORD,test-ipv6
- DOMAIN-KEYWORD,testipv6
EOF
echo 'payload:' > ./clash-ruleset/networktest.yaml
sort --ignore-case -u ./tmp/temp-networktest.txt >> ./clash-ruleset/networktest.yaml
# Download clash rule-set_text
grep -v 'payload:' ./clash-ruleset/networktest.yaml | sed '/^\s*$/d' | sed 's/^[ \t]*//' | sed 's/^- //' > ./clash-ruleset/networktest.list
# Download sing-box rule_set
cp -f ./clash-ruleset/networktest.yaml ./tmp/sing-box/rules/networktest/networktest.yaml
- name: Generate applications
run: |
mkdir -p ./tmp/sing-box/rules/applications/
# Download clash rule-set_yaml
curl -sSL ${applications} | sed '/^\s*$/d' > ./clash-ruleset/applications.yaml
# Download clash rule-set_text
curl -sSL ${applications} | grep -v 'payload:' | sed '/^\s*$/d' | sed 's/^[ \t]*//' | sed 's/^- //' > ./clash-ruleset/applications.list
# Download sing-box rule_set
curl -sSL ${applications} | sed '/^\s*$/d' > ./tmp/sing-box/rules/applications/applications.yaml
- name: Generate proxy
run: |
mkdir -p ./tmp/sing-box/rules/proxy/
# Download clash geodata
cd ./gfwlist2dnsmasq/ || exit 1
chmod +x ./gfwlist2dnsmasq.sh
./gfwlist2dnsmasq.sh -l -o ../tmp/temp-proxy.txt
sort --ignore-case -u ../tmp/temp-proxy.txt > ../community/mydata/proxy
# Download clash rule-set_yaml
./gfwlist2dnsmasq.sh -l -o ../tmp/temp-proxy1.txt
sed "s/^/ - '+\./" ../tmp/temp-proxy1.txt | sed "s/$/'/" > ../tmp/temp-proxy2.txt
echo 'payload:' > ../clash-ruleset/proxy.yaml
sort --ignore-case -u ../tmp/temp-proxy2.txt >> ../clash-ruleset/proxy.yaml
# Download clash rule-set_text
./gfwlist2dnsmasq.sh -l -o ../tmp/temp-proxy3.txt
sed 's/^/+\./' ../tmp/temp-proxy3.txt > ../tmp/temp-proxy4.txt
sort --ignore-case -u ../tmp/temp-proxy4.txt > ../clash-ruleset/proxy.list
# Download sing-box rule_set
./gfwlist2dnsmasq.sh -l -o ../tmp/temp-proxy5.txt
sed "s/^/ - DOMAIN-SUFFIX,/" ../tmp/temp-proxy5.txt > ../tmp/temp-proxy6.txt
curl -sSL ${proxy1} | grep 'domain:' | sed 's/:@\!cn$//' | sed 's/^domain:/ - DOMAIN-SUFFIX,/' >> ../tmp/temp-proxy6.txt
curl -sSL ${proxy1} | grep 'full:' | sed 's/:@\!cn$//' | sed 's/^full:/ - DOMAIN,/' >> ../tmp/temp-proxy6.txt
curl -sSL ${proxy2} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ../tmp/temp-proxy6.txt
echo 'payload:' > ../tmp/sing-box/rules/proxy/proxy.yaml
sort --ignore-case -u ../tmp/temp-proxy6.txt >> ../tmp/sing-box/rules/proxy/proxy.yaml
rm -rf ../gfwlist2dnsmasq/
- name: Generate cn
run: |
mkdir -p ./tmp/sing-box/rules/cn/
# Download clash geodata
curl -sSL ${cn1} | sed 's/^domain://' | sed 's/:@cn$//' > ./tmp/temp-cn.txt
curl -sSL ${cn2} | grep -v '#' | grep 'DOMAIN' | sed 's/^DOMAIN,/full:/' | sed 's/^DOMAIN-SUFFIX,//' | sed 's/^DOMAIN-KEYWORD,/keyword:/' | sed 's/^[ \t]*//' >> ./tmp/temp-cn.txt
sort --ignore-case -u ./tmp/temp-cn.txt > ./community/mydata/cn
# Download clash rule-set_yaml
curl -sSL ${cn1} | grep 'domain:' | sed 's/:@cn$//' | sed "s/^domain:/ - '+\./" | sed "s/$/'/" > ./tmp/temp-cn.txt
curl -sSL ${cn1} | grep 'full:' | sed 's/:@cn$//' | sed "s/^full:/ - '/" | sed "s/$/'/" >> ./tmp/temp-cn.txt
curl -sSL ${cn2} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed "s/^DOMAIN,/ - '/" | sed "s/^DOMAIN-SUFFIX,/ - '+\./" | sed "s/$/'/" >> ./tmp/temp-cn.txt
echo 'payload:' > ./clash-ruleset/cn.yaml
sort --ignore-case -u ./tmp/temp-cn.txt >> ./clash-ruleset/cn.yaml
# Download clash rule-set_text
curl -sSL ${cn1} | grep 'domain:' | sed 's/:@cn$//' | sed 's/^domain:/+\./' > ./tmp/temp-cn.txt
curl -sSL ${cn1} | grep 'full:' | sed 's/:@cn$//' | sed 's/^full://' >> ./tmp/temp-cn.txt
curl -sSL ${cn2} | grep -Ev '#|DOMAIN-KEYWORD' | grep 'DOMAIN' | sed 's/^DOMAIN,//' | sed 's/^DOMAIN-SUFFIX,/+\./' >> ./tmp/temp-cn.txt
sort --ignore-case -u ./tmp/temp-cn.txt > ./clash-ruleset/cn.list
# Download sing-box rule_set
curl -sSL ${cn1} | grep 'domain:' | sed 's/:@cn$//' | sed 's/^domain:/ - DOMAIN-SUFFIX,/' > ./tmp/temp-cn.txt
curl -sSL ${cn1} | grep 'full:' | sed 's/:@cn$//' | sed 's/^full:/ - DOMAIN,/' >> ./tmp/temp-cn.txt
curl -sSL ${cn2} | grep -Ev '#|IP-CIDR' | sed '/^\s*$/d' | sed 's/^/ - /' >> ./tmp/temp-cn.txt
echo 'payload:' > ./tmp/sing-box/rules/cn/cn.yaml
sort --ignore-case -u ./tmp/temp-cn.txt >> ./tmp/sing-box/rules/cn/cn.yaml
- name: Generate netflixip
run: |
mkdir -p ./tmp/sing-box/rules/netflixip/
# Download clash rule-set_yaml
echo 'payload:' > ./clash-ruleset/netflixip.yaml
curl -sSL ${netflixip} | sed "s/^/ - '/" | sed "s/$/'/" >> ./clash-ruleset/netflixip.yaml
# Download clash rule-set_text
curl -sSL ${netflixip} > ./clash-ruleset/netflixip.list
# Download sing-box rule_set
echo 'payload:' > ./tmp/sing-box/rules/netflixip/netflixip.yaml
curl -sSL ${netflixip} | grep -v '::' | sed '/^\s*$/d' | sed 's/^/ - IP-CIDR,/' >> ./tmp/sing-box/rules/netflixip/netflixip.yaml
curl -sSL ${netflixip} | grep '::' | sed 's/^/ - IP-CIDR6,/' >> ./tmp/sing-box/rules/netflixip/netflixip.yaml
- name: Generate telegramip
run: |
mkdir -p ./tmp/sing-box/rules/telegramip/
# Download clash rule-set_yaml
echo 'payload:' > ./clash-ruleset/telegramip.yaml
curl -sSL ${telegramip} | sed "s/^/ - '/" | sed "s/$/'/" >> ./clash-ruleset/telegramip.yaml
# Download clash rule-set_text
curl -sSL ${telegramip} > ./clash-ruleset/telegramip.list
# Download sing-box rule_set
echo 'payload:' > ./tmp/sing-box/rules/telegramip/telegramip.yaml
curl -sSL ${telegramip} | grep -v '::' | sed '/^\s*$/d' | sed 's/^/ - IP-CIDR,/' >> ./tmp/sing-box/rules/telegramip/telegramip.yaml
curl -sSL ${telegramip} | grep '::' | sed 's/^/ - IP-CIDR6,/' >> ./tmp/sing-box/rules/telegramip/telegramip.yaml
- name: Generate privateip
run: |
mkdir -p ./tmp/sing-box/rules/privateip/
# Download clash rule-set_yaml
echo 'payload:' > ./clash-ruleset/privateip.yaml
curl -sSL ${privateip} | sed "s/^/ - '/" | sed "s/$/'/" >> ./clash-ruleset/privateip.yaml
# Download clash rule-set_text
curl -sSL ${privateip} > ./clash-ruleset/privateip.list
# Download sing-box rule_set
echo 'payload:' > ./tmp/sing-box/rules/privateip/privateip.yaml
curl -sSL ${privateip} | grep -v '::' | sed '/^\s*$/d' | sed 's/^/ - IP-CIDR,/' >> ./tmp/sing-box/rules/privateip/privateip.yaml
curl -sSL ${privateip} | grep '::' | sed 's/^/ - IP-CIDR6,/' >> ./tmp/sing-box/rules/privateip/privateip.yaml
- name: Generate cnip
run: |
mkdir -p ./tmp/sing-box/rules/cnip/
# Download clash rule-set_yaml
echo 'payload:' > ./clash-ruleset/cnip.yaml
curl -sSL ${cnip} | sed "s/^/ - '/" | sed "s/$/'/" >> ./clash-ruleset/cnip.yaml
# Download clash rule-set_text
curl -sSL ${cnip} > ./clash-ruleset/cnip.list
# Download sing-box rule_set
echo 'payload:' > ./tmp/sing-box/rules/cnip/cnip.yaml
curl -sSL ${cnip} | grep -v '::' | sed '/^\s*$/d' | sed 's/^/ - IP-CIDR,/' >> ./tmp/sing-box/rules/cnip/cnip.yaml
curl -sSL ${cnip} | grep '::' | sed 's/^/ - IP-CIDR6,/' >> ./tmp/sing-box/rules/cnip/cnip.yaml
- name: copy `mydata` domains to `domains`
run: |
cd ./community/mydata/ || exit 1
for file in $(ls); do
cp -f "${file}" "../../domains/${file}.txt"
done
- name: Generate `clash` geosite-all.dat
run: |
cd ./community/
go run ./ --datapath=./mydata/ --outputname geosite-all.dat
- name: Generate `clash` geosite-all-lite.dat
run: |
rm -f ./community/mydata/ads
cd ./community/
go run ./ --datapath=./mydata/ --outputname geosite-all-lite.dat
- name: Generate `clash` geosite.dat
run: |
curl -sSL ${ads} | grep -Ev '#|payload:' | sed '/^\s*$/d' | sed "s/- '+\.//" | sed "s/- '/full:/" | sed "s/'$//" | sed 's/^[ \t]*//' > ./community/mydata/ads
rm -f ./community/mydata/netflix \
./community/mydata/disney \
./community/mydata/max \
./community/mydata/primevideo \
./community/mydata/appletv \
./community/mydata/youtube \
./community/mydata/tiktok \
./community/mydata/bilibili \
./community/mydata/ai
cd ./community/
go run ./ --datapath=./mydata/ --outputname geosite.dat
- name: Generate `clash` geosite-lite.dat
run: |
rm -f ./community/mydata/ads
cd ./community/
go run ./ --datapath=./mydata/ --outputname geosite-lite.dat
- name: Get geoip relative files
run: |
cp -f ./geoip/ips/* ./ips/
cp -f ./geoip/clash/* ./clash/
cp -f ./geoip/sing-box/* ./sing-box/
rm -rf ./geoip*
- name: Build `sing-box` db file
run: |
cd ./community/ || exit 1
go install -trimpath -ldflags="-s -w -buildid=" github.com/metacubex/geo/cmd/geo@master
for file in $(ls *.dat | sed 's/\..*//'); do
geo convert site -i v2ray -o sing -f "./${file}.db" "./${file}.dat"
done
- name: Move geodata files
run: |
cd ./community/ || exit 1
for file in $(ls *.dat); do
install -Dp "./${file}" ../clash/
done
for file in $(ls *.db); do
install -Dp "./${file}" ../sing-box/
done
rm -rf ../community/
- name: Download and unzip `sing-box core`
run: |
sing_box_version=$(curl -sSL https://api.github.com/repos/SagerNet/sing-box/releases | grep 'tag_name' | grep 'rc' | head -n 1 | sed 's/.*v//' | sed 's/".*//')
wget "https://github.com/SagerNet/sing-box/releases/download/v${sing_box_version}/sing-box-${sing_box_version}-linux-amd64.tar.gz" -O - | tar -zxf - -C ./tmp/
cp -f ./tmp/sing-box-${sing_box_version}-linux-amd64/sing-box ./tmp/sing-box/
- name: Generate `sing-box` rule_set
run: |
curl -sSL https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/master/resouces/bm7.sh | sed '/# 拉文件/,/# 处理文件/d' | sed 's|./rule/Clash/|./rules/|' | grep -v 'DOMAIN-SUFFIX,\/\/g' | sed 's/DOMAIN-SUFFIX,\/.\/g/DOMAIN-SUFFIX,\/\/g/' | sed "s/DOMAIN,\/\/g' >>/DOMAIN,\/\/g' >/" > ./tmp/sing-box/bm7.sh
cd ./tmp/sing-box/
chmod +x bm7.sh && ./bm7.sh
rm -rf bm7* sing-box ./rules/
cp -f * ../../sing-box-ruleset
rm -rf ../../tmp*
- name: Generate `clash` geodata-fakeip-user.yaml
run: |
cat <<EOF > ./clash-config/geodata-fakeip-user.yaml
ipv6: true
mode: rule
log-level: error
allow-lan: true
unified-delay: false
tcp-concurrent: true
external-controller-tls: 127.0.0.1:9090
find-process-mode: strict
global-client-fingerprint: chrome
profile: {store-selected: true, store-fake-ip: true}
geodata-mode: true
geox-url:
geosite: "https://cdn.jsdelivr.net/gh/DustinWin/ruleset_geodata@clash/geosite.dat"
geoip: "https://cdn.jsdelivr.net/gh/DustinWin/ruleset_geodata@clash/geoip-lite.dat"
mmdb: "https://cdn.jsdelivr.net/gh/DustinWin/ruleset_geodata@clash/Country-lite.mmdb"
geo-auto-update: true
geo-update-interval: 24
sniffer:
enable: true
parse-pure-ip: true
sniff: {HTTP: {ports: [80, 8080-8880]}, TLS: {ports: [443, 8443]}, QUIC: {ports: [443, 8443]}}
skip-domain: [Mijia Cloud]
dns:
enable: true
prefer-h3: true
ipv6: true
listen: 0.0.0.0:1053
fake-ip-range: 198.18.0.1/16
enhanced-mode: fake-ip
fake-ip-filter:
- '*'
EOF
curl -sSL https://raw.githubusercontent.com/juewuy/ShellCrash/dev/public/fake_ip_filter.list | grep -v '#' | sed '/^\s*$/d' | sed "s/.*/'&'/" | sed 's/^/ - /' >> ./clash-config/geodata-fakeip-user.yaml
curl -sSL https://raw.githubusercontent.com/XIU2/TrackersListCollection/master/all.txt | grep 'udp:' | grep -i '\.[A-Z]' | awk -F'[/:]' '{print $4}' | sed 's/^/ - /' >> ./clash-config/geodata-fakeip-user.yaml
cat <<EOF >> ./clash-config/geodata-fakeip-user.yaml
nameserver:
- 'https://223.5.5.5/dns-query#h3=true'
- https://1.12.12.12/dns-query
EOF
- name: Generate `clash` geodata-fakeip-user-noprocess.yaml
run: |
grep -v 'find-process-mode' ./clash-config/geodata-fakeip-user.yaml > ./clash-config/geodata-fakeip-user-noprocess.yaml
- name: Generate `clash` geodata-fakeip-user-lite.yaml
run: |
sed -e 's/geosite.dat/geosite-lite.dat/' -e "s/'geosite:ads': rcode:\/\/refused/'adguardteam.github.io,adrules.top,anti-ad.net,static.adtidy.org': ['https:\/\/223.5.5.5\/dns-query#h3=true', https:\/\/1.12.12.12\/dns-query]/" ./clash-config/geodata-fakeip-user.yaml > ./clash-config/geodata-fakeip-user-lite.yaml
- name: Generate `clash` geodata-fakeip-user-lite-noprocess.yaml
run: |
grep -v 'find-process-mode' ./clash-config/geodata-fakeip-user-lite.yaml > ./clash-config/geodata-fakeip-user-lite-noprocess.yaml
- name: Generate `clash` geodata-redirhost-user.yaml
run: |
cat <<EOF > ./clash-config/geodata-redirhost-user.yaml
ipv6: true
mode: rule
log-level: error
allow-lan: true
unified-delay: false
tcp-concurrent: true
external-controller-tls: 127.0.0.1:9090
find-process-mode: strict
global-client-fingerprint: chrome
profile: {store-selected: true, store-fake-ip: true}
geodata-mode: true
geox-url:
geosite: "https://cdn.jsdelivr.net/gh/DustinWin/ruleset_geodata@clash/geosite.dat"
geoip: "https://cdn.jsdelivr.net/gh/DustinWin/ruleset_geodata@clash/geoip-lite.dat"
mmdb: "https://cdn.jsdelivr.net/gh/DustinWin/ruleset_geodata@clash/Country-lite.mmdb"
geo-auto-update: true
geo-update-interval: 24
sniffer:
enable: true
parse-pure-ip: true
sniff: {HTTP: {ports: [80, 8080-8880]}, TLS: {ports: [443, 8443]}, QUIC: {ports: [443, 8443]}}
skip-domain: [Mijia Cloud]
dns:
enable: true
prefer-h3: true
ipv6: true
listen: 0.0.0.0:1053
fake-ip-range: 198.18.0.1/16
enhanced-mode: fake-ip
fake-ip-filter: ['+.*']
nameserver:
- 'https://223.5.5.5/dns-query#h3=true'
- https://1.12.12.12/dns-query
nameserver-policy:
'geosite:ads': rcode://refused
'geosite:microsoft-cn,apple-cn,google-cn,games-cn,cn,private': ['https://223.5.5.5/dns-query#h3=true', https://1.12.12.12/dns-query]
'geosite:proxy': ['https://1.1.1.1/dns-query#🪜 代理域名&h3=true', 'https://8.8.8.8/dns-query#🪜 代理域名']
EOF
- name: Generate `clash` geodata-redirhost-user-noprocess.yaml
run: |
grep -v 'find-process-mode' ./clash-config/geodata-redirhost-user.yaml > ./clash-config/geodata-redirhost-user-noprocess.yaml
- name: Generate `clash` geodata-redirhost-user-lite.yaml
run: |
sed -e 's/geosite.dat/geosite-lite.dat/' -e "s/'geosite:ads': rcode:\/\/refused/'adguardteam.github.io,adrules.top,anti-ad.net,static.adtidy.org': ['https:\/\/223.5.5.5\/dns-query#h3=true', https:\/\/1.12.12.12\/dns-query]/" ./clash-config/geodata-redirhost-user.yaml > ./clash-config/geodata-redirhost-user-lite.yaml
- name: Generate `clash` geodata-redirhost-user-lite-noprocess.yaml
run: |
grep -v 'find-process-mode' ./clash-config/geodata-redirhost-user-lite.yaml > ./clash-config/geodata-redirhost-user-lite-noprocess.yaml
- name: Generate `clash` ruleset-fakeip-user.yaml
run: |
cat <<EOF > ./clash-config/ruleset-fakeip-user.yaml
ipv6: true
mode: rule
log-level: error
allow-lan: true
unified-delay: false
tcp-concurrent: true
external-controller-tls: 127.0.0.1:9090
find-process-mode: strict
global-client-fingerprint: chrome
profile: {store-selected: true, store-fake-ip: true}
sniffer:
enable: true
parse-pure-ip: true
sniff: {HTTP: {ports: [80, 8080-8880]}, TLS: {ports: [443, 8443]}, QUIC: {ports: [443, 8443]}}
skip-domain: [Mijia Cloud]
dns:
enable: true
prefer-h3: true
ipv6: true
listen: 0.0.0.0:1053
fake-ip-range: 198.18.0.1/16
enhanced-mode: fake-ip
fake-ip-filter:
- '*'
EOF
curl -sSL https://raw.githubusercontent.com/juewuy/ShellCrash/dev/public/fake_ip_filter.list | grep -v '#' | sed '/^\s*$/d' | sed "s/.*/'&'/" | sed 's/^/ - /' >> ./clash-config/ruleset-fakeip-user.yaml
curl -sSL https://raw.githubusercontent.com/XIU2/TrackersListCollection/master/all.txt | grep 'udp:' | grep -i '\.[A-Z]' | awk -F'[/:]' '{print $4}' | sed 's/^/ - /' >> ./clash-config/ruleset-fakeip-user.yaml
cat <<EOF >> ./clash-config/ruleset-fakeip-user.yaml
nameserver:
- 'https://223.5.5.5/dns-query#h3=true'
- https://1.12.12.12/dns-query
EOF
- name: Generate `clash` ruleset-fakeip-user-noprocess.yaml
run: |
grep -v 'find-process-mode' ./clash-config/ruleset-fakeip-user.yaml > ./clash-config/ruleset-fakeip-user-noprocess.yaml
- name: Generate `clash` ruleset-fakeip-user-lite.yaml
run: |
sed "s/'rule-set:ads': rcode:\/\/refused/'adguardteam.github.io,adrules.top,anti-ad.net,static.adtidy.org': ['https:\/\/223.5.5.5\/dns-query#h3=true', https:\/\/1.12.12.12\/dns-query]/" ./clash-config/ruleset-fakeip-user.yaml > ./clash-config/ruleset-fakeip-user-lite.yaml
- name: Generate `clash` ruleset-fakeip-user-lite-noprocess.yaml
run: |
grep -v 'find-process-mode' ./clash-config/ruleset-fakeip-user-lite.yaml > ./clash-config/ruleset-fakeip-user-lite-noprocess.yaml
- name: Generate `clash` ruleset-redirhost-user.yaml
run: |
cat <<EOF > ./clash-config/ruleset-redirhost-user.yaml
ipv6: true
mode: rule
log-level: error
allow-lan: true
unified-delay: false
tcp-concurrent: true
external-controller-tls: 127.0.0.1:9090
find-process-mode: strict
global-client-fingerprint: chrome
profile: {store-selected: true, store-fake-ip: true}
sniffer:
enable: true
parse-pure-ip: true
sniff: {HTTP: {ports: [80, 8080-8880]}, TLS: {ports: [443, 8443]}, QUIC: {ports: [443, 8443]}}
skip-domain: [Mijia Cloud]
dns:
enable: true
prefer-h3: true
ipv6: true
listen: 0.0.0.0:1053
fake-ip-range: 198.18.0.1/16
enhanced-mode: fake-ip
fake-ip-filter: ['+.*']
nameserver:
- 'https://223.5.5.5/dns-query#h3=true'
- https://1.12.12.12/dns-query
nameserver-policy:
'rule-set:ads': rcode://refused
'rule-set:microsoft-cn,apple-cn,google-cn,games-cn,cn,private': ['https://223.5.5.5/dns-query#h3=true', https://1.12.12.12/dns-query]
'rule-set:proxy': ['https://1.1.1.1/dns-query#🪜 代理域名&h3=true', 'https://8.8.8.8/dns-query#🪜 代理域名']
EOF
- name: Generate `clash` ruleset-redirhost-user-noprocess.yaml
run: |
grep -v 'find-process-mode' ./clash-config/ruleset-redirhost-user.yaml > ./clash-config/ruleset-redirhost-user-noprocess.yaml
- name: Generate `clash` ruleset-redirhost-user-lite.yaml
run: |
sed "s/'rule-set:ads': rcode:\/\/refused/'adguardteam.github.io,adrules.top,anti-ad.net,static.adtidy.org': ['https:\/\/223.5.5.5\/dns-query#h3=true', https:\/\/1.12.12.12\/dns-query]/" ./clash-config/ruleset-redirhost-user.yaml > ./clash-config/ruleset-redirhost-user-lite.yaml
- name: Generate `clash` ruleset-redirhost-user-lite-noprocess.yaml
run: |
grep -v 'find-process-mode' ./clash-config/ruleset-redirhost-user-lite.yaml > ./clash-config/ruleset-redirhost-user-lite-noprocess.yaml
- name: Generate `sing-box` geodata-dns.json
run: |
cat <<EOF > ./sing-box-config/geodata-dns.json
{
"dns": {
"servers": [
{ "tag": "dns_block", "address": "rcode://refused" },
{ "tag": "dns_alidns", "address": "h3://223.5.5.5/dns-query", "detour": "DIRECT" },
{ "tag": "dns_dnspod", "address": "https://1.12.12.12/dns-query", "detour": "DIRECT" },
{ "tag": "dns_fakeip", "address": "fakeip" }
],
"rules": [
{ "outbound": "any", "server": [ "dns_alidns", "dns_dnspod" ] },
{ "clash_mode": "Direct", "server": [ "dns_alidns", "dns_dnspod" ] },
{ "clash_mode": "Global", "server": "dns_fakeip", "rewrite_ttl": 1 },
{ "geosite": [ "ads" ], "server": "dns_block" },
{ "geosite": [ "microsoft-cn", "apple-cn", "google-cn", "games-cn", "cn", "private" ], "query_type": [ "A", "AAAA" ], "server": [ "dns_alidns", "dns_dnspod" ] },
{ "geosite": [ "proxy" ], "query_type": [ "A", "AAAA" ], "server": "dns_fakeip", "rewrite_ttl": 1 }
],
"final": [ "dns_alidns", "dns_dnspod" ],
"strategy": "prefer_ipv4",
"independent_cache": true,
"reverse_mapping": true,
"fakeip": { "enabled": true, "inet4_range": "198.18.0.0/15", "inet6_range": "fc00::/18" }
}
}
EOF
- name: Generate `sing-box` geodata-dns-lite.json
run: |
sed 's/"geosite": \[ "ads" \], "server": "dns_block"/"domain": \[ "adguardteam.github.io", "adrules.top", "anti-ad.net", "static.adtidy.org" \], "query_type": \[ "A", "AAAA" \], "server": [ "dns_alidns", "dns_dnspod" ]/' ./sing-box-config/geodata-dns.json | grep -v 'dns_block' > ./sing-box-config/geodata-dns-lite.json
- name: Generate `sing-box` ruleset-dns.json
run: |
cat <<EOF > ./sing-box-config/ruleset-dns.json
{
"dns": {
"servers": [
{ "tag": "dns_block", "address": "rcode://refused" },
{ "tag": "dns_alidns", "address": "h3://223.5.5.5/dns-query", "detour": "DIRECT" },
{ "tag": "dns_dnspod", "address": "https://1.12.12.12/dns-query", "detour": "DIRECT" },
{ "tag": "dns_fakeip", "address": "fakeip" }
],
"rules": [
{ "outbound": "any", "server": [ "dns_alidns", "dns_dnspod" ] },
{ "clash_mode": "Direct", "server": [ "dns_alidns", "dns_dnspod" ] },
{ "clash_mode": "Global", "server": "dns_fakeip", "rewrite_ttl": 1 },
{ "rule_set": [ "ads" ], "server": "dns_block" },
{ "rule_set": [ "microsoft-cn", "apple-cn", "google-cn", "games-cn", "cn", "private" ], "query_type": [ "A", "AAAA" ], "server": [ "dns_alidns", "dns_dnspod" ] },
{ "rule_set": [ "proxy" ], "query_type": [ "A", "AAAA" ], "server": "dns_fakeip", "rewrite_ttl": 1 }
],
"final": [ "dns_alidns", "dns_dnspod" ],
"strategy": "prefer_ipv4",
"independent_cache": true,
"reverse_mapping": true,
"fakeip": { "enabled": true, "inet4_range": "198.18.0.0/15", "inet6_range": "fc00::/18" }
}
}
EOF
- name: Generate `sing-box` ruleset-dns-lite.json
run: |
sed 's/"rule_set": \[ "ads" \], "server": "dns_block"/"domain": \[ "adguardteam.github.io", "adrules.top", "anti-ad.net", "static.adtidy.org" \], "query_type": \[ "A", "AAAA" \], "server": [ "dns_alidns", "dns_dnspod" ]/' ./sing-box-config/ruleset-dns.json | grep -v 'dns_block' > ./sing-box-config/ruleset-dns-lite.json
- name: Commit and push `domains` branch
run: |
cd ./domains/ || exit 1
git init
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git checkout -b domains
git add . && git commit -m "域名列表更新于 ${update_version}"
git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f -u origin domains
- name: Commit and push `ips` branch
run: |
cd ./ips/ || exit 1
git init
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git checkout -b ips
git add . && git commit -m "IP 段列表更新于 ${update_version}"
git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f -u origin ips
- name: Release and upload `clash` assets
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
release_name: clash
tag: clash
overwrite: true
body: "[Clash](https://github.com/Dreamacro/clash) 规则集文件(包含 .dat、.mmdb 和 .metadb 文件)"
file_glob: true
file: ./clash/*
- name: Git push assets to "clash" branch
run: |
cd ./clash/ || exit 1
git init
git config --local user.name "github-actions[bot]"
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git checkout -b clash
git add .
git commit -m "Clash ruleset_geodata 文件更新于 ${update_version}"
git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f -u origin clash
- name: Commit and push `clash-config` branch
run: |
cd ./clash-config/ || exit 1
git init
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git checkout -b clash-config
git add . && git commit -m "Clash 配置文件更新于 ${update_version}"
git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f -u origin clash-config
- name: Commit and push `clash-ruleset` branch
run: |
cd ./clash-ruleset/ || exit 1
git init
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git checkout -b clash-ruleset
git add . && git commit -m "Clash rule-set 规则集文件更新于 ${update_version}"
git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f -u origin clash-ruleset
- name: Release and upload `sing-box` assets
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
release_name: sing-box
tag: sing-box
overwrite: true
body: "[sing-box](https://github.com/SagerNet/sing-box) 规则集文件(包含 .db 文件)"
file_glob: true
file: ./sing-box/*
- name: Git push assets to "sing-box" branch
run: |
cd ./sing-box/ || exit 1
git init
git config --local user.name "github-actions[bot]"
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git checkout -b sing-box
git add .
git commit -m "sing-box ruleset_geodata 文件更新于 ${update_version}"
git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f -u origin sing-box
- name: Commit and push `sing-box-config` branch
run: |
cd ./sing-box-config/ || exit 1
git init
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git checkout -b sing-box-config
git add . && git commit -m "sing-box 配置文件更新于 ${update_version}"
git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f -u origin sing-box-config
- name: Commit and push `sing-box-ruleset` branch
run: |
cd ./sing-box-ruleset/ || exit 1
git init
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git checkout -b sing-box-ruleset
git add . && git commit -m "sing-box rule_set 规则集文件更新于 ${update_version}"
git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f -u origin sing-box-ruleset
- name: Purge jsDelivr CDN
run: |
cd ./domains/ || exit 1
for file in $(ls); do
curl -i "https://purge.jsdelivr.net/gh/${{ github.repository }}@domains/${file}"
done
cd ../ips/ || exit 1
for file in $(ls); do
curl -i "https://purge.jsdelivr.net/gh/${{ github.repository }}@ips/${file}"
done
cd ../clash/ || exit 1
for file in $(ls); do
curl -i "https://purge.jsdelivr.net/gh/${{ github.repository }}@clash/${file}"
done
cd ../clash-config/ || exit 1
for file in $(ls); do
curl -i "https://purge.jsdelivr.net/gh/${{ github.repository }}@clash-config/${file}"
done
cd ../clash-ruleset/ || exit 1
for file in $(ls); do
curl -i "https://purge.jsdelivr.net/gh/${{ github.repository }}@clash-ruleset/${file}"
done
cd ../sing-box/ || exit 1
for file in $(ls); do
curl -i "https://purge.jsdelivr.net/gh/${{ github.repository }}@sing-box/${file}"
done
cd ../sing-box-config/ || exit 1
for file in $(ls); do
curl -i "https://purge.jsdelivr.net/gh/${{ github.repository }}@sing-box-config/${file}"
done
cd ../sing-box-ruleset/ || exit 1
for file in $(ls); do
curl -i "https://purge.jsdelivr.net/gh/${{ github.repository }}@sing-box-ruleset/${file}"
done
- name: Delete old workflow runs
uses: Mattraks/delete-workflow-runs@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
repository: ${{ github.repository }}
retain_days: 3
keep_minimum_runs: 1