49 lines
1.5 KiB
Python
Executable File
49 lines
1.5 KiB
Python
Executable File
#!/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)
|