Skip to content

Generate routing rules for smartdns #80

Generate routing rules for smartdns

Generate routing rules for smartdns #80

Workflow file for this run

name: Generate routing rules for smartdns
on:
workflow_dispatch:
schedule:
- cron: "30 22 * * *"
push:
branches:
- master
paths-ignore:
- "README.md"
- "LICENSE"
permissions:
contents: write
packages: write
actions: write
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Set variables
run: |
echo "RELEASE_NAME=Released on $(date +%Y%m%d%H%M)" >> $GITHUB_ENV
echo "TAG_NAME=$(date +%Y%m%d%H%M)" >> $GITHUB_ENV
echo "heidai_dns=https://raw.githubusercontent.com/217heidai/adblockfilters/main/rules/adblockdns.txt" >> $GITHUB_ENV
echo "AdGuardSDNSFilter=https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt" >> $GITHUB_ENV
echo "BlueSkyXN_skyrules=https://raw.githubusercontent.com/BlueSkyXN/AdGuardHomeRules/master/skyrules.txt" >> $GITHUB_ENV
echo "BlueSkyXN_ok=https://raw.githubusercontent.com/BlueSkyXN/AdGuardHomeRules/master/ok.txt" >> $GITHUB_ENV
echo "AdRules=https://raw.githubusercontent.com/Cats-Team/AdRules/main/adrules.list" >> $GITHUB_ENV
echo "neodevpro_host=https://raw.githubusercontent.com/neodevpro/neodevhost/master/domain" >> $GITHUB_ENV
echo "Hosts_mini=https://raw.githubusercontent.com/badmojr/1Hosts/master/mini/domains.txt" >> $GITHUB_ENV
echo "Hosts_Lite=https://raw.githubusercontent.com/badmojr/1Hosts/master/Lite/domains.txt" >> $GITHUB_ENV
echo "Hosts_Pro=https://raw.githubusercontent.com/badmojr/1Hosts/master/Pro/domains.txt" >> $GITHUB_ENV
echo "AWAvenue_Ads_Rule=https://raw.githubusercontent.com/TG-Twilight/AWAvenue-Ads-Rule/main/Filters/AWAvenue-Ads-Rule-AdClose.txt" >> $GITHUB_ENV
echo "hBlock_hosts=https://hblock.molinero.dev/hosts_domains.txt" >> $GITHUB_ENV
echo "OISD_small=https://small.oisd.nl/domainswild2" >> $GITHUB_ENV
echo "OISD_big=https://big.oisd.nl/domainswild2" >> $GITHUB_ENV
echo "OISD_nsfw=https://nsfw.oisd.nl/domainswild2" >> $GITHUB_ENV
echo "PiHoleBlocklist=https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV.txt" >> $GITHUB_ENV
echo "hosts_1024=https://raw.githubusercontent.com/Goooler/1024_hosts/master/hosts" >> $GITHUB_ENV
echo "ad_wars=https://raw.githubusercontent.com/jdlingyu/ad-wars/master/hosts" >> $GITHUB_ENV
echo "StevenBlack_hosts=https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts" >> $GITHUB_ENV
echo "anti_AD=https://raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/anti-ad-domains.txt" >> $GITHUB_ENV
echo "AdAway=https://adaway.org/hosts.txt" >> $GITHUB_ENV
echo "MVPS_hosts=https://winhelp2002.mvps.org/hosts.txt" >> $GITHUB_ENV
echo "YousList=https://raw.githubusercontent.com/yous/YousList/master/hosts.txt" >> $GITHUB_ENV
echo "pgl=https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext" >> $GITHUB_ENV
echo "someonewhocares=https://someonewhocares.org/hosts/hosts" >> $GITHUB_ENV
shell: bash
- name: Checkout the default branch
uses: actions/checkout@v4
- name: Make directory
run: |
mkdir -p 217heidai AdGuard BlueSkyXN AdRules neodevhost 1Hosts AWAvenue-Ads-Rule hBlock OISD PiHoleBlocklist 1024_hosts ad-wars StevenBlack anti-AD AdAway MVPS YousList pgl someonewhocares
- name: Generate 217heidai file
run: |
curl -sSL ${heidai_dns} | grep "^||" | grep -Ev ".*\*.*" | sed -e 's/^||//; s/\^.*//' > 217heidai/adblockdns.txt
curl -sSL ${heidai_dns} | grep "^@@||" | grep -Ev ".*\*.*" | sed -e 's/^@@||//; s/\^.*//' > 217heidai/adblockdns-whitelist.txt
- name: Generate AdGuard file
run: |
curl -sSL ${AdGuardSDNSFilter} | grep "^||" | grep -Ev ".*\*.*" | sed -e 's/^||//; s/\^.*//' > AdGuard/dnsfilter.txt
curl -sSL ${AdGuardSDNSFilter} | grep "^@@||" | grep -Ev ".*\*.*" | sed -e 's/^@@||//; s/\^.*//' > AdGuard/dnsfilter-whitelist.txt
- name: Generate BlueSkyXN file
run: |
curl -sSL ${BlueSkyXN_skyrules} | grep "^||" | grep -Ev ".*\*.*" | sed -e 's/^||//; s/\^.*//' > BlueSkyXN/skyrules.txt
curl -sSL ${BlueSkyXN_ok} | grep "^@@||" | grep -Ev ".*\*.*" | sed -e 's/^@@||//; s/\^.*//' > BlueSkyXN/ok.txt
- name: Generate AdRules file
run: |
curl -sSL ${AdRules} | grep "^DOMAIN-SUFFIX," | sed -e 's/^DOMAIN-SUFFIX,//' > AdRules/adrules.txt
- name: Generate neodevhost file
run: |
curl -sSL ${neodevpro_host} | grep -Ev '^(#|$)' > neodevhost/domain.txt
- name: Generate 1Hosts file
run: |
curl -sSL ${Hosts_mini} | grep -Ev '^(#|$)' > 1Hosts/1Hosts_mini_domains.txt
curl -sSL ${Hosts_Lite} | grep -Ev '^(#|$)' > 1Hosts/1Hosts_Lite_domains.txt
curl -sSL ${Hosts_Pro} | grep -Ev '^(#|$)' > 1Hosts/1Hosts_Pro_domains.txt
- name: Generate AWAvenue-Ads-Rule file
run: |
curl -sSL ${AWAvenue_Ads_Rule} | grep -Ev '^(!|$)' | grep -Ev ".*\*.*" > AWAvenue-Ads-Rule/AWAvenue-Ads-Rule-AdClose.txt
- name: Generate hBlock file
run: |
curl -sSL ${hBlock_hosts} | grep -Ev '^(#|$)' > hBlock/hosts_domains.txt
- name: Generate OISD file
run: |
curl -sSL ${OISD_small} | grep -Ev '^(#|$)' > OISD/oisd_small_domainswild2.txt
curl -sSL ${OISD_big} | grep -Ev '^(#|$)' > OISD/oisd_big_domainswild2.txt
curl -sSL ${OISD_nsfw} | grep -Ev '^(#|$)' > OISD/oisd_nsfw_domainswild2.txt
- name: Generate PiHoleBlocklist file
run: |
curl -sSL ${PiHoleBlocklist} | grep -Ev '^(#|$)' | sed 's/#.*//'> PiHoleBlocklist/SmartTV.txt
- name: Generate 1024_hosts file
run: |
curl -sSL "${hosts_1024}" | grep -Ev '^(#|$)' | grep '^127\.0\.0\.1' | sed 's/^127.0.0.1[[:space:]]*//' > 1024_hosts/hosts.txt
- name: Generate ad-wars file
run: |
curl -sSL "${ad_wars}" | grep -Ev '^(#|$)' | grep -v 'localhost' | grep '^127\.0\.0\.1' | sed 's/^127.0.0.1[[:space:]]*//' | sed 's/[[:space:]]#-*.*//' > ad-wars/hosts.txt
- name: Generate StevenBlack file
run: |
curl -sSL "${StevenBlack_hosts}" | grep -Ev '^(#|$)' | grep '^0\.0\.0\.0' | sed 's/^0.0.0.0[[:space:]]*//' | sed 's/0.0.0.0//g'> StevenBlack/hosts.txt
- name: Generate anti-AD file
run: |
curl -sSL ${anti_AD} | grep -Ev '^(#|$)' > anti-AD/anti-ad-domains.txt
- name: Generate AdAway file
run: |
curl -sSL ${AdAway} | grep -Ev '^(#|$)' | grep '^127\.0\.0\.1' | sed 's/^127.0.0.1[[:space:]]*//' | grep -v 'localhost' > AdAway/hosts.txt
- name: Generate MVPS file
run: |
curl -sSL ${MVPS_hosts} | grep -Ev '^(#|$)' | grep '^0\.0\.0\.0' | sed 's/^0.0.0.0[[:space:]]*//' | sed 's/#.*//' > MVPS/hosts.txt
- name: Generate YousList file
run: |
curl -sSL ${YousList} | grep -Ev '^(#|$)' | grep '^0\.0\.0\.0' | sed 's/^0.0.0.0[[:space:]]*//' > YousList/hosts.txt
- name: Generate pgl file
run: |
curl -sSL ${pgl} | grep -Ev '^(#|$)' | grep '^127\.0\.0\.1' | sed 's/^127.0.0.1[[:space:]]*//' > pgl/hosts.txt
- name: Generate someonewhocares file
run: |
curl -sSL ${someonewhocares} | grep -Ev '^(#|$)' | grep -v 'localhost' | grep '^127\.0\.0\.1' | sed 's/^127.0.0.1[[:space:]]*//' | sed 's/#.*//' | sed '/\./!d'> someonewhocares/hosts.txt
- name: Zip 217heidai
uses: montudor/action-zip@v1
with:
args: zip -qq -r 217heidai.zip 217heidai
- name: Zip AdGuard
uses: montudor/action-zip@v1
with:
args: zip -qq -r AdGuard.zip AdGuard
- name: Zip BlueSkyXN
uses: montudor/action-zip@v1
with:
args: zip -qq -r BlueSkyXN.zip BlueSkyXN
- name: Zip AdRules
uses: montudor/action-zip@v1
with:
args: zip -qq -r AdRules.zip AdRules
- name: Zip neodevhost
uses: montudor/action-zip@v1
with:
args: zip -qq -r neodevhost.zip neodevhost
- name: Zip 1Hosts
uses: montudor/action-zip@v1
with:
args: zip -qq -r 1Hosts.zip 1Hosts
- name: Zip AWAvenue-Ads-Rule
uses: montudor/action-zip@v1
with:
args: zip -qq -r AWAvenue-Ads-Rule.zip AWAvenue-Ads-Rule
- name: Zip hBlock
uses: montudor/action-zip@v1
with:
args: zip -qq -r hBlock.zip hBlock
- name: Zip OISD
uses: montudor/action-zip@v1
with:
args: zip -qq -r OISD.zip OISD
- name: Zip PiHoleBlocklist
uses: montudor/action-zip@v1
with:
args: zip -qq -r PiHoleBlocklist.zip PiHoleBlocklist
- name: Zip 1024_hosts
uses: montudor/action-zip@v1
with:
args: zip -qq -r 1024_hosts.zip 1024_hosts
- name: Zip ad-wars
uses: montudor/action-zip@v1
with:
args: zip -qq -r ad-wars.zip ad-wars
- name: Zip StevenBlack
uses: montudor/action-zip@v1
with:
args: zip -qq -r StevenBlack.zip StevenBlack
- name: Zip anti-AD
uses: montudor/action-zip@v1
with:
args: zip -qq -r anti-AD.zip anti-AD
- name: Zip AdAway
uses: montudor/action-zip@v1
with:
args: zip -qq -r AdAway.zip AdAway
- name: Zip MVPS
uses: montudor/action-zip@v1
with:
args: zip -qq -r MVPS.zip MVPS
- name: Zip YousList
uses: montudor/action-zip@v1
with:
args: zip -qq -r YousList.zip YousList
- name: Zip pgl
uses: montudor/action-zip@v1
with:
args: zip -qq -r pgl.zip pgl
- name: Zip someonewhocares
uses: montudor/action-zip@v1
with:
args: zip -qq -r someonewhocares.zip someonewhocares
- name: Upload files to GitHub release
uses: softprops/[email protected]
with:
tag_name: ${{ env.TAG_NAME }}
files: |
./*.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Move files to publish directory
shell: bash
run: |
DIRS=(217heidai AdGuard BlueSkyXN AdRules neodevhost 1Hosts AWAvenue-Ads-Rule hBlock OISD PiHoleBlocklist 1024_hosts ad-wars StevenBlack anti-AD AdAway MVPS YousList pgl someonewhocares)
for DIR in "${DIRS[@]}"; do
mkdir -p "publish/$DIR"
find "$DIR" -maxdepth 1 -type f -exec mv {} "./publish/$DIR/" \;
done
- name: Git push assets to "release" branch
run: |
cd publish || exit 1
git init
git config --local user.name "github-actions[bot]"
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git checkout -b release
git add .
git commit -m "${{ env.RELEASE_NAME }}"
git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f -u origin release
- name: Purge jsdelivr CDN
run: |
cd publish || exit 1
DIRS=(217heidai AdGuard BlueSkyXN AdRules neodevhost 1Hosts AWAvenue-Ads-Rule hBlock OISD PiHoleBlocklist 1024_hosts ad-wars StevenBlack anti-AD AdAway MVPS YousList pgl someonewhocares)
for DIR in "${DIRS[@]}"; do
if [ -d "$DIR" ]; then
for file in "$DIR"/*; do
if [ -f "$file" ]; then
RELATIVE_PATH="${file#$PWD/publish/}"
curl -si "https://purge.jsdelivr.net/gh/${{ github.repository }}@release/${RELATIVE_PATH}"
fi
done
fi
done