import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
+import sys
+
import twisted
from twisted.internet import reactor
from twisted.logger import LogLevel
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
+import re as regexp
+
+import hippotat.slip as slip
+
defcfg = '''
[DEFAULT]
#[<client>] overrides
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):
#---------- startup ----------
-def common_startup(defcfg):
+def common_startup():
twisted.logger.globalLogPublisher.addObserver(crash_on_critical)
optparser.add_option('-c', '--config', dest='configfile',
(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():
from hippotat import *
-import sys
import os
import twisted.internet
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():
# 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')
('peer', 'relay'),
('rnets','network')))
-common_startup(defcfg)
+common_startup()
process_cfg()
start_ipif(c.ipif_command, route)
start_http()