From: Ian Jackson Date: Sun, 19 Mar 2017 19:13:26 +0000 (+0000) Subject: wip X-Git-Tag: hippotat/1.0.0~55^2~243 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=hippotat.git;a=commitdiff_plain;h=e75e9c176dde9a52258bc43631c8a4a2973d59fe wip --- diff --git a/server b/server index 6c229a9..9d83386 100755 --- a/server +++ b/server @@ -5,7 +5,9 @@ from twisted.web.resource import Resource from twisted.web.server import NOT_DONE_YET from twisted.internet import reactor -import configparser +from optparse import OptionParser +from configparser import ConfigParser +from configparser import NoOptionError import ipaddress import collections @@ -28,12 +30,21 @@ def ipnetwork(input): r = ipaddress.IPv6Network(input) return r -defcfg = u''' +defcfg = ''' [DEFAULT] max_batch_down = 65536 max_queue_time = 10 max_request_time = 54 +[virtual] +mtu = 1500 +# network +# [host] +# [relay] + +[server] +ipif_program = userv root ipif %(host),%(relay),%(mtu),slip %(network) + [limits] max_batch_down = 262144 max_queue_time = 121 @@ -136,13 +147,25 @@ class Client(): def process_cfg(): global network - global ourself + global host + global relay network = ipnetwork(cfg.get('virtual','network')) + if network.num_addresses < 3 + 2: + raise ValueError('network needs at least 2^3 addresses') + try: - ourself = cfg.get('virtual','server') - except ConfigParser.NoOptionError: - ourself = network.hosts().next() + host = cfg.get('virtual','host') + except NoOptionError: + host = network.hosts().next() + + try: + relay = cfg.get('virtual','relay') + except OptionError: + for search in network.hosts(): + if search = host: continue + relay = search + break for cs in cfg.sections(): if not (':' in cs or '.' in cs): continue @@ -175,3 +198,14 @@ class FormPage(Resource): c.process_arriving_data(d) c.new_request(request) + +def startup(): + op = OptionParser() + op.add_option('-c', '--config', dest='configfile', + default='/etc/hippottd/server.conf') + global opts + (opts, args) = op.parse_args() + if len(args): op.error('no non-option arguments please') + + cfg = ConfigParser() +