import twisted.internet
import twisted.internet.endpoints
from twisted.web.server import NOT_DONE_YET
-from twisted.logger import LogLevel
#import twisted.web.server import Site
#from twisted.web.resource import Resource
-from optparse import OptionParser
-from configparser import ConfigParser
-from configparser import NoOptionError
-
-import collections
-
import syslog
clients = { }
target_requests_outstanding = 10
'''
-#---------- 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):
ipif_command = cfg.get('server','ipif', vars=iic_vars)
def startup():
- global cfg
-
- op = OptionParser()
- op.add_option('-c', '--config', dest='configfile',
- default='/etc/hippottd/server.conf')
- global opts
- (opts, args) = op.parse_args()
- if len(args): op.error('no non-option arguments please')
-
- twisted.logger.globalLogPublisher.addObserver(crash_on_critical)
-
- cfg = ConfigParser()
- cfg.read_string(defcfg)
- cfg.read(opts.configfile)
+ common_startup(defcfg)
process_cfg()
-
start_ipif(ipif_command, route)
start_http()
startup()
-reactor.run()
-print('CRASHED (end)', file=sys.stderr)
+common_run()