X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=hippotat%2F__init__.py;fp=hippotat%2F__init__.py;h=3617235c138058cb45dc94bb6acd1613b3ab1ef6;hb=8d374606ca84ba38d068daa4d077bce5fd337e18;hp=08ae2fffc818994b5d7fbabb9f396e7201fdff99;hpb=c7fb640effd718bb66548327c4feddcc64416234;p=hippotat.git diff --git a/hippotat/__init__.py b/hippotat/__init__.py index 08ae2ff..3617235 100644 --- a/hippotat/__init__.py +++ b/hippotat/__init__.py @@ -106,6 +106,7 @@ max_requests_outstanding = 6 max_batch_up = 4000 http_retry = 5 port = 80 +vroutes = '' #[server] or [] overrides ipif = userv root ipif %(local)s,%(peer)s,%(mtu)s,slip %(rnets)s @@ -119,11 +120,10 @@ server = SERVER # url # relating to virtual network -routes = '' -vnetwork = 172.24.230.192 -# network = / -# server = -# relay = +vvnetwork = 172.24.230.192 +# vnetwork = / +# vadd r = +# vrelay = # [] @@ -355,7 +355,7 @@ def _cfg_process_putatives(): serverclient_re = regexp.compile(server_pat + r' ' + client_pat) for cs in cfg.sections(): - if cs = 'LIMIT': + if cs == 'LIMIT': # plan A "[LIMIT]" continue @@ -373,7 +373,7 @@ def _cfg_process_putatives(): # plan D "[ ]" part 1 (pss,pcs) = cs.split(' ') - if pcs = 'LIMIT': + if pcs == 'LIMIT': # plan E "[ LIMIT]" continue @@ -434,18 +434,18 @@ def cfg_process_vnetwork(c, ss): if c.network.num_addresses < 3 + 2: raise ValueError('network needs at least 2^3 addresses') -def cfg_process_vaddr(): +def cfg_process_vaddr(c, ss): try: - c.server = cfg.get('virtual','server') + c.vaddr = cfg.get(ss,'server') except NoOptionError: - process_cfg_network() - c.server = next(c.network.hosts()) + cfg_process_vnetwork(c, ss) + c.vaddr = next(c.network.hosts()) def cfg_search_section(key,sections): for section in sections: if cfg.has_option(section, key): return section - raise NoOptionError('missing %s %s' % (key, repr(sections))) + raise NoOptionError(key, repr(sections)) def cfg_search(getter,key,sections): section = cfg_search_section(key,sections) @@ -453,14 +453,14 @@ def cfg_search(getter,key,sections): def cfg_process_client_limited(cc,ss,sections,key): val = cfg_search(cfg.getint, key, sections) - lim = cfg_search(cfg.getint, key, '%s LIMIT' % ss, 'LIMIT') + lim = cfg_search(cfg.getint, key, ['%s LIMIT' % ss, 'LIMIT']) cc.__dict__[key] = min(val,lim) def cfg_process_client_common(cc,ss,cs,ci): # returns sections to search in, iff password is defined, otherwise None cc.ci = ci - sections = ['%s %s' % section, + sections = ['%s %s' % (ss,cs), cs, ss, 'DEFAULT'] @@ -476,12 +476,14 @@ def cfg_process_client_common(cc,ss,cs,ci): return sections -def process_cfg_ipif(c, sections, varmap): +def cfg_process_ipif(c, sections, varmap): for d, s in varmap: try: v = getattr(c, s) except AttributeError: continue setattr(c, d, v) + print('CFGIPIF',repr((varmap, sections, c.__dict__)),file=sys.stderr) + section = cfg_search_section('ipif', sections) c.ipif_command = cfg.get(section,'ipif', vars=c.__dict__) @@ -602,7 +604,7 @@ just `+': all DFLAGs. readconfig('/etc/hippotat/config.d', False) try: - (pss, pcs) = process_cfg_putatives() + (pss, pcs) = _cfg_process_putatives() process_cfg(pss, pcs) except (configparser.Error, ValueError): traceback.print_exc(file=sys.stderr)