|
|
|
#!/usr/bin/python
|
|
|
|
|
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
import argparse
|
|
|
|
|
|
|
|
# django setup
|
|
|
|
DJANGO_SETTINGS_MODULE = 'settings'
|
|
|
|
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
|
|
|
|
|
|
|
|
# parse command line options
|
|
|
|
parser = argparse.ArgumentParser(
|
|
|
|
description='Hosts injector for py-i2phosts.',
|
|
|
|
epilog='Report bugs to http://zzz.i2p/topics/733')
|
|
|
|
parser.add_argument('-f', '--file', default=os.environ['HOME'] + '/.i2p/hosts.txt', dest='hostsfile',
|
|
|
|
help='hosts.txt for parsing')
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
|
|
f = open(args.hostsfile, 'r')
|
|
|
|
for line in f:
|
|
|
|
entry = line.split('=')
|
|
|
|
# Check for already existed hosts in database to avoid adding duplicates.
|
|
|
|
# Do lookup by hostname only.
|
|
|
|
qs = i2phost.objects.filter(name=entry[0])
|
|
|
|
if qs.exists():
|
|
|
|
print 'Host %s already exists' % entry[0]
|
|
|
|
else:
|
|
|
|
print 'Adding %s' % entry[0]
|
|
|
|
host = i2phost(name=entry[0], b64hash=entry[1],
|
|
|
|
description='Auto-added from external hosts.txt',
|
|
|
|
activated=True, external=True)
|
|
|
|
host.save()
|
|
|
|
f.close()
|