Skip to content

Update China IP list and generate GeoIP2 database #33291

Update China IP list and generate GeoIP2 database

Update China IP list and generate GeoIP2 database #33291

name: Update China IP list and generate GeoIP2 database
on:
push:
branches: [ master ]
workflow_dispatch:
schedule:
- cron: '30 * * * *'
jobs:
build:
name: Generate GeoIP2 database
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.x
uses: actions/setup-go@v2
with:
go-version: ^1.14
id: go
- name: Check out code into the Go module directory
uses: actions/checkout@v2
- name: Get dependencies
run: |
go get -v -t -d ./...
if [ -f Gopkg.toml ]; then
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
dep ensure
fi
- name: Create dist folder
run: mkdir -p dist
- name: Compile GeoIP conversion bin (Golang)
run: ./build.sh
- name: Obtain CN IP lists
run: |
curl -LR -o- "https://raw.githubusercontent.com/misakaio/chnroutes2/master/chnroutes.txt" | grep -v "#" > dist/CN-ip-cidr.txt
cat dist/CN-ip-cidr.txt | sed "s/^\(.*\)$/ - '\1'/g;1ipayload:" > dist/clash-rule-provider.yml
cat dist/CN-ip-cidr.txt | sed "s/^\(.*\)$/IP-CIDR,\1/g" > dist/clash-ruleset.list
cat dist/CN-ip-cidr.txt | sed "s/^\(.*\)$/IP-CIDR,\1/g" > dist/surge-ruleset.list
echo 'create chnroute hash:net family inet hashsize 1024 maxelem 65536' > dist/chnroute.ipset
cat dist/CN-ip-cidr.txt | sed 's/^/add chnroute /g' >> dist/chnroute.ipset
- name: Generate GeoIP2 database
run: |
CURRENT_DIR=$(pwd)
cd dist
./ipip2mmdb -s ./CN-ip-cidr.txt -d Country.mmdb
cd $CURRENT_DIR
- name: Push artifacts to release branch
run: |
git config --local user.email "891708+soffchen@users.noreply.github.com"
git config --local user.name "github-action[bot]"
git fetch
git checkout release
git checkout --orphan release-orphan
git rm -rf .
cp -f dist/* .
git add Country.mmdb
git add CN-ip-cidr.txt
git add clash-rule-provider.yml
git add clash-ruleset.list
git add surge-ruleset.list
git add chnroute.ipset
git commit -am "Updated at $(date)"
git branch -D release
git branch -m release
- name: GitHub Push
uses: ad-m/github-push-action@v0.6.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: release
force: true
- name: Purge CDN Cache
run: |
curl -L https://purge.jsdelivr.net/gh/soffchen/GeoIP2-CN@release/CN-ip-cidr.txt > /dev/null 2>&1
curl -L https://purge.jsdelivr.net/gh/soffchen/GeoIP2-CN@release/Country.mmdb > /dev/null 2>&1
curl -L https://purge.jsdelivr.net/gh/soffchen/GeoIP2-CN@release/clash-rule-provider.yml > /dev/null 2>&1
curl -L https://purge.jsdelivr.net/gh/soffchen/GeoIP2-CN@release/clash-ruleset.list > /dev/null 2>&1
curl -L https://purge.jsdelivr.net/gh/soffchen/GeoIP2-CN@release/surge-ruleset.list > /dev/null 2>&1
curl -L https://purge.jsdelivr.net/gh/soffchen/GeoIP2-CN@release/chnroute.ipset > /dev/null 2>&1