Browse Source

Google IPs (#1)

* rename

* Add google ip downloader
pull/3/head
Lord Alfred 4 years ago
committed by GitHub
parent
commit
cca54a01f7
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 29
      .github/workflows/update.yml
  2. 2
      README.md
  3. 38
      google/downloader.sh

29
.github/workflows/update.yml

@ -0,0 +1,29 @@
name: "Update"
on:
schedule:
- cron: '*/10 * * * *'
# - cron: '8 */12 * * *' # At minute 8 past every 12th hour
jobs:
updater:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Download Google IPs
run: bash google/downloader.sh
- name: Commit files
run: |
set -euo pipefail
git config --local user.email "$(git log --format='%ae' HEAD^!)"
git config --local user.name "$(git log --format='%an' HEAD^!)"
git remote add github "https://${GITHUB_ACTOR}:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git"
git pull github ${GITHUB_REF} --ff-only
git add .
if [ -z "$(git status --porcelain)" ]; then
exit 0
fi
git commit -m "Update ip ranges"
git push github HEAD:${GITHUB_REF}

2
README.md

@ -1 +1 @@
# ipranges
# IPRanges

38
google/downloader.sh

@ -0,0 +1,38 @@
#!/bin/bash
# https://cloud.google.com/compute/docs/faq#find_ip_range
# From: https://github.com/pierrocknroll/googlecloud-iprange/blob/master/list.sh
# From: https://gist.github.com/jeffmccune/e7d635116f25bc7e12b2a19efbafcdf8
set -euo pipefail
set -x
# get from public ranges
curl -s https://www.gstatic.com/ipranges/goog.txt > /tmp/goog.txt
curl -s https://www.gstatic.com/ipranges/cloud.json > /tmp/cloud.json
# get from netblocks
txt="$(dig TXT _netblocks.google.com +short @8.8.8.8)"
idx=2
while [[ -n "${txt}" ]]; do
echo "${txt}" | tr '[:space:]+' "\n" | grep ':' | cut -d: -f2- >> /tmp/netblocks.txt
txt="$(dig TXT _netblocks${idx}.google.com +short @8.8.8.8)"
((idx++))
done
# save ipv4
grep -v ':' /tmp/goog.txt > /tmp/google-ipv4.txt
jq '.prefixes[] | [.ipv4Prefix][] | select(. != null)' -r /tmp/cloud.json >> /tmp/google-ipv4.txt
grep -v ':' /tmp/netblocks.txt >> /tmp/google-ipv4.txt
# save ipv6
grep ':' /tmp/goog.txt > /tmp/google-ipv6.txt
jq '.prefixes[] | [.ipv6Prefix][] | select(. != null)' -r /tmp/cloud.json >> /tmp/google-ipv6.txt
grep ':' /tmp/netblocks.txt >> /tmp/google-ipv6.txt
# sort & uniq
sort -hu /tmp/google-ipv4.txt > google/ipv4.txt
sort -hu /tmp/google-ipv6.txt > google/ipv6.txt
Loading…
Cancel
Save