chiark / gitweb /
wip fixes
[hippotat.git] / hippotat / __init__.py
index 08ae2fffc818994b5d7fbabb9f396e7201fdff99..3617235c138058cb45dc94bb6acd1613b3ab1ef6 100644 (file)
@@ -106,6 +106,7 @@ max_requests_outstanding = 6
 max_batch_up = 4000
 http_retry = 5
 port = 80
+vroutes = ''
 
 #[server] or [<client>] 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 = <prefix>/<len>
-# server  = <ipaddr>
-# relay   = <ipaddr>
+vvnetwork = 172.24.230.192
+# vnetwork = <prefix>/<len>
+# vadd  r  = <ipaddr>
+# vrelay   = <ipaddr>
 
 
 # [<client-ip4-or-ipv6-address>]
@@ -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 "[<servername> <client>]" part 1
         (pss,pcs) = cs.split(' ')
 
-        if pcs = 'LIMIT':
+        if pcs == 'LIMIT':
           # plan E "[<servername> 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)