From 611c3b66f0db3ca113db6fb71534231bb87b4cef Mon Sep 17 00:00:00 2001 From: Ivan Nardi <12729895+IvanNardi@users.noreply.github.com> Date: Thu, 26 Oct 2023 20:15:44 +0200 Subject: ipv6: add support for ipv6 addresses lists (#2113) --- utils/google6.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 utils/google6.py (limited to 'utils/google6.py') diff --git a/utils/google6.py b/utils/google6.py new file mode 100644 index 000000000..2d9ffa27c --- /dev/null +++ b/utils/google6.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 + +import json +import urllib.request +import netaddr + +GOOG_URL="https://www.gstatic.com/ipranges/goog.json" +CLOUD_URL="https://www.gstatic.com/ipranges/cloud.json" + +def read_url(url): + try: + s = urllib.request.urlopen(url).read() + return json.loads(s) + except urllib.error.HTTPError: + print("Invalid HTTP response from %s" % url) + return {} + except json.decoder.JSONDecodeError: + print("Could not parse HTTP response from %s" % url) + return {} + +def main(): + goog_json=read_url(GOOG_URL) + cloud_json=read_url(CLOUD_URL) + + if goog_json and cloud_json: +# print("{} published: {}".format(GOOG_URL,goog_json.get('creationTime'))) +# print("{} published: {}".format(CLOUD_URL,cloud_json.get('creationTime'))) + goog_cidrs = netaddr.IPSet() + for pref in goog_json['prefixes']: + if pref.get('ipv6Prefix'): + goog_cidrs.add(pref.get('ipv6Prefix')) + cloud_cidrs = netaddr.IPSet() + for pref in cloud_json['prefixes']: + if pref.get('ipv6Prefix'): + cloud_cidrs.add(pref.get('ipv6Prefix')) +# print("IP ranges for Google APIs and services default domains:") + for i in goog_cidrs.difference(cloud_cidrs).iter_cidrs(): + print(i) + +if __name__=='__main__': + main() -- cgit v1.2.3