#!/usr/bin/python import os import sys import argparse import configobj # parse command line options parser = argparse.ArgumentParser( description='Hosts builder for py-i2phosts.', epilog='Report bugs to http://zzz.i2p/topics/733') parser.add_argument('-c', '--config', default='/etc/py-i2phosts/builder.conf', dest='config_file', help='config file to use') parser.add_argument('-f', '--file', help='write hosts into specified file') args = parser.parse_args() # read config config = configobj.ConfigObj(args.config_file, file_error=True) if 'include' in config: config_included = configobj.ConfigObj(config['include']) config.merge(config_included) # django setup DJANGO_SETTINGS_MODULE = 'settings' if 'DJANGO_PROJECT_PATH' in config: DJANGO_PROJECT_PATH = config['DJANGO_PROJECT_PATH'] else: DJANGO_PROJECT_PATH = os.path.dirname(sys.argv[0]) + '/web' sys.path.insert(1, DJANGO_PROJECT_PATH) os.environ['DJANGO_SETTINGS_MODULE'] = DJANGO_SETTINGS_MODULE from web.postkey.models import i2phost # result hosts.txt if 'hostsfile' in config: hostsfile = config['hostsfile'] if args.file: hostsfile = args.file f = open(hostsfile, 'w') # get activated hosts qs = i2phost.objects.filter(activated=True) # select theirs name and base64 hash l = qs.values('name', 'b64hash') # write final hosts.txt-format file for entry in l: f.write(entry['name'] + '=' + entry['b64hash'] + '\n') f.close()