chiark / gitweb /
wip
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 22 Mar 2017 00:52:39 +0000 (00:52 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 22 Mar 2017 00:52:39 +0000 (00:52 +0000)
client
hippotat/__init__.py
server
test.cfg

diff --git a/client b/client
index b60f3d177c715d6dc91be010b21428e7e51130b6..49a10efecf0b7dd81cca7c6de293ce88d2dae16f 100755 (executable)
--- a/client
+++ b/client
@@ -57,7 +57,7 @@ def check_outbound():
   while (outstanding <  and
          (queue.notempty() or outstanding < c.
 
   while (outstanding <  and
          (queue.notempty() or outstanding < c.
 
-common_startup(defcfg)
+common_startup()
 process_cfg()
 start_ipif(c.ipif_command, outbound)
 common_run()
 process_cfg()
 start_ipif(c.ipif_command, outbound)
 common_run()
index f51caf555bb0bc844be37d89d5757e3cd4e34c47..c57767ae1c2c3045def4875cdaa1efd7c7c61191 100644 (file)
@@ -3,6 +3,8 @@
 import signal
 signal.signal(signal.SIGINT, signal.SIG_DFL)
 
 import signal
 signal.signal(signal.SIGINT, signal.SIG_DFL)
 
+import sys
+
 import twisted
 from twisted.internet import reactor
 from twisted.logger import LogLevel
 import twisted
 from twisted.internet import reactor
 from twisted.logger import LogLevel
@@ -11,14 +13,16 @@ import twisted.internet.endpoints
 import ipaddress
 from ipaddress import AddressValueError
 
 import ipaddress
 from ipaddress import AddressValueError
 
-import hippotat.slip as slip
-
 from optparse import OptionParser
 from configparser import ConfigParser
 from configparser import NoOptionError
 
 import collections
 
 from optparse import OptionParser
 from configparser import ConfigParser
 from configparser import NoOptionError
 
 import collections
 
+import re as regexp
+
+import hippotat.slip as slip
+
 defcfg = '''
 [DEFAULT]
 #[<client>] overrides
 defcfg = '''
 [DEFAULT]
 #[<client>] overrides
@@ -71,6 +75,11 @@ class ConfigResults:
 
 c = ConfigResults()
 
 
 c = ConfigResults()
 
+def log_discard(packet, saddr, daddr, why):
+  print('DROP ', saddr, daddr, why)
+#  syslog.syslog(syslog.LOG_DEBUG,
+#                'discarded packet %s -> %s (%s)' % (saddr, daddr, why))
+
 #---------- packet parsing ----------
 
 def packet_addrs(packet):
 #---------- packet parsing ----------
 
 def packet_addrs(packet):
@@ -249,7 +258,7 @@ def process_cfg_clients(constructor):
 
 #---------- startup ----------
 
 
 #---------- startup ----------
 
-def common_startup(defcfg):
+def common_startup():
   twisted.logger.globalLogPublisher.addObserver(crash_on_critical)
 
   optparser.add_option('-c', '--config', dest='configfile',
   twisted.logger.globalLogPublisher.addObserver(crash_on_critical)
 
   optparser.add_option('-c', '--config', dest='configfile',
@@ -257,7 +266,8 @@ def common_startup(defcfg):
   (opts, args) = optparser.parse_args()
   if len(args): optparser.error('no non-option arguments please')
 
   (opts, args) = optparser.parse_args()
   if len(args): optparser.error('no non-option arguments please')
 
-  cfg.read_string(defcfg)
+  re = regexp.compile('#.*')
+  cfg.read_string(re.sub('', defcfg))
   cfg.read(opts.configfile)
 
 def common_run():
   cfg.read(opts.configfile)
 
 def common_run():
diff --git a/server b/server
index b746bc26e543433e78e0f08ef0065d99a2b9ac19..2daf0b0223a2f692a1494629cd4db39890440f3c 100755 (executable)
--- a/server
+++ b/server
@@ -2,7 +2,6 @@
 
 from hippotat import *
 
 
 from hippotat import *
 
-import sys
 import os
 
 import twisted.internet
 import os
 
 import twisted.internet
@@ -31,11 +30,6 @@ def route(packet, saddr, daddr):
   else:
     log_discard(packet, saddr, daddr, 'no client')
 
   else:
     log_discard(packet, saddr, daddr, 'no client')
 
-def log_discard(packet, saddr, daddr, why):
-  print('DROP ', saddr, daddr, why)
-#  syslog.syslog(syslog.LOG_DEBUG,
-#                'discarded packet %s -> %s (%s)' % (saddr, daddr, why))
-
 #---------- client ----------
 
 class Client():
 #---------- client ----------
 
 class Client():
@@ -138,7 +132,7 @@ class IphttpResource(twisted.web.resource.Resource):
     # find client, update config, etc.
     metadata = request.args['m']
     (ci_s, pw, tro) = metadata.split(b'\n')[0:3]
     # find client, update config, etc.
     metadata = request.args['m']
     (ci_s, pw, tro) = metadata.split(b'\n')[0:3]
-    ci = ipaddr(ci_s])
+    ci = ipaddr(ci_s)
     cl = clients[ci]
     if pw != cl.pw: raise ValueError('bad password')
 
     cl = clients[ci]
     if pw != cl.pw: raise ValueError('bad password')
 
@@ -184,7 +178,7 @@ def process_cfg():
                     ('peer', 'relay'),
                     ('rnets','network')))
 
                     ('peer', 'relay'),
                     ('rnets','network')))
 
-common_startup(defcfg)
+common_startup()
 process_cfg()
 start_ipif(c.ipif_command, route)
 start_http()
 process_cfg()
 start_ipif(c.ipif_command, route)
 start_http()
index ba1b09a31e39d0b61b30e63652dd729855496226..902f6c16d7b23cd1ca9cc5260d5db94d3be232ef 100644 (file)
--- a/test.cfg
+++ b/test.cfg
@@ -3,6 +3,7 @@ ipif = PATH=/usr/local/sbin:/sbin:/usr/sbin:$PATH really /home/ian/things/Userv/
 
 [server]
 addrs = 127.0.0.1
 
 [server]
 addrs = 127.0.0.1
+port = 8099
 
 [virtual]
 network = 192.0.2.0/24
 
 [virtual]
 network = 192.0.2.0/24