chiark / gitweb /
wip fixes
[hippotat.git] / hippotat / __init__.py
index 08ae2fffc818994b5d7fbabb9f396e7201fdff99..9f72b48abcee4f225cb0917dbf5dcece16450a0e 100644 (file)
@@ -86,6 +86,7 @@ class LogNotBoringTwisted:
       if event.get('log_level') != LogLevel.info:
         return yes
       dflag = event.get('dflag')
+      if dflag is False                            : return yes
       if dflag                         in debug_set: return yes
       if dflag is None and DBG.TWISTED in debug_set: return yes
       return no
@@ -106,6 +107,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 +121,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 +356,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 +374,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
 
@@ -399,7 +400,7 @@ def _cfg_process_putatives():
 
   return (servers, clients)
 
-def cfg_process_common(ss):
+def cfg_process_common(c, ss):
   c.mtu = cfg.getint(ss, 'mtu')
 
 def cfg_process_saddrs(c, ss):
@@ -430,22 +431,22 @@ def cfg_process_saddrs(c, ss):
     c.saddrs.append(sa)
 
 def cfg_process_vnetwork(c, ss):
-  c.network = ipnetwork(cfg.get(ss,'network'))
-  if c.network.num_addresses < 3 + 2:
-    raise ValueError('network needs at least 2^3 addresses')
+  c.vnetwork = ipnetwork(cfg.get(ss,'vnetwork'))
+  if c.vnetwork.num_addresses < 3 + 2:
+    raise ValueError('vnetwork 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,'vaddr')
   except NoOptionError:
-    process_cfg_network()
-    c.server = next(c.network.hosts())
+    cfg_process_vnetwork(c, ss)
+    c.vaddr = next(c.vnetwork.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 +454,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']
@@ -469,19 +470,21 @@ def cfg_process_client_common(cc,ss,cs,ci):
   except NoOptionError: return None
     
   pw = cfg.get(pwsection, 'password')
-  pw = pw.encode('utf-8')
+  cc.password = pw.encode('utf-8')
 
   cfg_process_client_limited(cc,ss,sections,'target_requests_outstanding')
   cfg_process_client_limited(cc,ss,sections,'http_timeout')
 
   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 +605,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)