diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index b7d8c1ef..a71b264f 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -14,6 +14,7 @@ jobs: run: | bash google/downloader.sh bash amazon/downloader.sh + bash microsoft/downloader.sh - name: Set up Python 3.7 uses: actions/setup-python@v2 @@ -39,9 +40,11 @@ jobs: # ipv4 python utils/merge.py --source=google/ipv4.txt | sort -h > google/ipv4_merged.txt python utils/merge.py --source=amazon/ipv4.txt | sort -h > amazon/ipv4_merged.txt + python utils/merge.py --source=microsoft/ipv4.txt | sort -h > microsoft/ipv4_merged.txt # ipv6 python utils/merge.py --source=google/ipv6.txt | sort -h > google/ipv6_merged.txt python utils/merge.py --source=amazon/ipv6.txt | sort -h > amazon/ipv6_merged.txt + python utils/merge.py --source=microsoft/ipv6.txt | sort -h > microsoft/ipv6_merged.txt - name: Commit files env: diff --git a/microsoft/downloader.sh b/microsoft/downloader.sh new file mode 100755 index 00000000..9ffab809 --- /dev/null +++ b/microsoft/downloader.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# https://azure.microsoft.com/en-us/updates/service-tag-discovery-api-in-preview/ +# https://docs.microsoft.com/en-us/microsoft-365/enterprise/urls-and-ip-address-ranges?view=o365-worldwide +# From: https://github.com/jensihnow/AzurePublicIPAddressRanges/blob/main/.github/workflows/main.yml + +set -euo pipefail +set -x + + +# get from public ranges +download_and_parse() { + URL="$(curl -s https://www.microsoft.com/en-us/download/confirmation.aspx?id=${1} | grep -o ' /tmp/microsoft.json + jq '.values[] | [.properties] | .[].addressPrefixes[] | select(. != null)' -r /tmp/microsoft.json > /tmp/microsoft-all.txt + + # save ipv4 + grep -v ':' /tmp/microsoft-all.txt >> /tmp/microsoft-ipv4.txt + + # save ipv6 + grep ':' /tmp/microsoft-all.txt >> /tmp/microsoft-ipv6.txt +} + +# Public cloud +download_and_parse "56519" +# US Gov +download_and_parse "57063" +# Germany +download_and_parse "57064" +# China +download_and_parse "57062" + + +# sort & uniq +sort -h /tmp/microsoft-ipv4.txt | uniq > microsoft/ipv4.txt +sort -h /tmp/microsoft-ipv6.txt | uniq > microsoft/ipv6.txt