#!/usr/bin/env python3 from pybl import PyBLConfig import os import sys import tarfile import urllib.request import argparse def download(url, path): try: print("Retrieving {}, storing it to {} ...".format(config.url, config.archive)) filename, _ = urllib.request.urlretrieve(url, filename=path) print("{} Successfully downloaded".format(filename)) except Exception as exp: print(exp) exit(1) def folder_exists(basedir): ret = os.path.isdir(basedir) print("Destination folder {} already exists".format(basedir)) return ret def extract(basedir, archive): print("Extracting blacklists to {} ...".format(config.basedir)) bl_file = tarfile.open(archive) bl_file.extractall(basedir) if __name__ == "__main__": parser = argparse.ArgumentParser(description='Action') parser.add_argument('--config', metavar='config', type=str, nargs=1, default='pybl.conf', help='path to config file') parser.add_argument('--force', action="store_true", help='force download and extract archive') parser.add_argument('action', metavar='action', type=str, help='action blacklists using config file', choices=["import"]) args = parser.parse_args() if args.action == "import": config = PyBLConfig() print("Parsing configuration file ...") config.getconfig(args.config[0]) exists = folder_exists(config.basedir) if not exists or args.force: download(config.url, config.archive) extract(config.basedir, config.archive)