#!/usr/bin/python3
+import signal
+signal.signal(signal.SIGINT, signal.SIG_DFL)
+
import sys
import os
[server]
ipif = userv root ipif %(host)s,%(relay)s,%(mtu)s,slip %(network)s
addrs = 127.0.0.1 ::1
-port = 80
+port = 8099
[limits]
max_batch_down = 262144
max_request_time = 121
'''
+#---------- error handling ----------
+
+def crash(err):
+ print('CRASH ', err, file=sys.stderr)
+ try: reactor.stop()
+ except twisted.internet.error.ReactorNotRunning: pass
+
+def crash_on_defer(defer):
+ defer.addErrback(lambda err: crash(err))
+
+def crash_on_critical(event):
+ if event.get('log_level') >= LogLevel.critical:
+ crash(twisted.logger.formatEvent(event))
+
#---------- "router" ----------
def route(packet, saddr, daddr):
addr = ipaddress.IPv6Address(addrspec)
endpointfactory = twisted.internet.endpoints.TCP6ServerEndpoint
ep = endpointfactory(reactor, cfg.getint('server','port'), addr)
- defer = ep.listen(sitefactory)
- defer.addErrback(lambda err: err.raiseException())
+ crash_on_defer(ep.listen(sitefactory))
#---------- config and setup ----------
ipif_command = cfg.get('server','ipif', vars=iic_vars)
-def crash_on_critical(event):
- if event.get('log_level') >= LogLevel.critical:
- print('crashing: ', twisted.logger.formatEvent(event), file=sys.stderr)
- #print('crashing!', file=sys.stderr)
- #os._exit(1)
- try: reactor.stop()
- except twisted.internet.error.ReactorNotRunning: pass
-
def startup():
global cfg
startup()
reactor.run()
+print('CRASHED (end)', file=sys.stderr)