From 7be1d52f62deffafc5f480b7e74d49a40e3237a0 Mon Sep 17 00:00:00 2001 From: Lord_Alfred <2259979+lord-alfred@users.noreply.github.com> Date: Thu, 29 Jul 2021 17:40:19 +0300 Subject: [PATCH] add ip merge script --- .github/workflows/update.yml | 23 +++++++++++++++++++++++ utils/merge.py | 23 +++++++++++++++++++++++ utils/requirements.txt | 1 + 3 files changed, 47 insertions(+) create mode 100644 utils/merge.py create mode 100644 utils/requirements.txt diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 2ce026c9..29f89fc6 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -14,6 +14,29 @@ jobs: - name: Download Google IPs run: bash google/downloader.sh + - name: Set up Python 3.7 + uses: actions/setup-python@v2 + with: + python-version: '3.7' + + - name: Cache pip + uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('utils/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + ${{ runner.os }}- + + - name: Install dependencies + run: | + pip install -r utils/requirements.txt + + - name: Merge IPv4 ranges + run: | + set -euo pipefail + python utils/merge.py --source=google/ipv4.txt | sort -h > google/ipv4_merged.txt + - name: Commit files env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/utils/merge.py b/utils/merge.py new file mode 100644 index 00000000..8d77c275 --- /dev/null +++ b/utils/merge.py @@ -0,0 +1,23 @@ +import argparse + +import netaddr + + +def read(fh): + for line in fh: + yield line.rstrip() + + fh.close() + + +def merge(fh): + for addr in netaddr.cidr_merge(read(fh)): + print(addr) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Merge IP addresses into the smallest possible list of CIDRs.') + parser.add_argument('--source', nargs='?', type=argparse.FileType('r'), required=True, help='Source file path') + args = parser.parse_args() + + merge(args.source) diff --git a/utils/requirements.txt b/utils/requirements.txt new file mode 100644 index 00000000..d065208f --- /dev/null +++ b/utils/requirements.txt @@ -0,0 +1 @@ +netaddr==0.8.0