chiark / gitweb /
hippotatd: support --pidfile
[hippotat.git] / hippotatlib / __init__.py
index 48ece836b33ad624248618b93f6d91b900b8d489..bf599e7559407bc6bae98340294c098eebbaf509 100644 (file)
@@ -1,4 +1,26 @@
 # -*- python -*-
+#
+# Hippotat - Asinine IP Over HTTP program
+# hippotatlib/__init__.py - common library code
+#
+# Copyright 2017 Ian Jackson
+#
+# GPLv3+
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program, in the file GPLv3.  If not,
+#    see <http://www.gnu.org/licenses/>.
+
 
 import signal
 signal.signal(signal.SIGINT, signal.SIG_DFL)
@@ -40,6 +62,7 @@ class DBG(twisted.python.constants.Names):
   CONFIG = NamedConstant()
   ROUTE = NamedConstant()
   DROP = NamedConstant()
+  OWNSOURCE = NamedConstant()
   FLOW = NamedConstant()
   HTTP = NamedConstant()
   TWISTED = NamedConstant()
@@ -544,7 +567,8 @@ def common_startup(process_cfg):
 
   def ds_default(od,os,dl,op):
     global debug_set
-    debug_set = set(dfs_less_detailed(debug_def_detail))
+    debug_set.clear
+    debug_set |= set(dfs_less_detailed(debug_def_detail))
 
   def ds_select(od,os, spec, op):
     for it in spec.split(','):
@@ -610,13 +634,14 @@ just `+': all DFLAGs.
 
   try:
     (pss, pcs) = _cfg_process_putatives()
-    process_cfg(pss, pcs)
+    process_cfg(opts, pss, pcs)
   except (configparser.Error, ValueError):
     traceback.print_exc(file=sys.stderr)
     print('\nInvalid configuration, giving up.', file=sys.stderr)
     sys.exit(12)
 
-  #print(repr(debug_set), file=sys.stderr)
+
+  #print('X', debug_set, file=sys.stderr)
 
   log_formatter = twisted.logger.formatEventAsClassicLogText
   stdout_obs = twisted.logger.FileLogObserver(sys.stdout, log_formatter)
@@ -625,15 +650,16 @@ just `+': all DFLAGs.
   stdsomething_obs = twisted.logger.FilteringLogObserver(
     stderr_obs, [pred], stdout_obs
   )
-  log_observer = twisted.logger.FilteringLogObserver(
+  global file_log_observer
+  file_log_observer = twisted.logger.FilteringLogObserver(
     stdsomething_obs, [LogNotBoringTwisted()]
   )
   #log_observer = stdsomething_obs
   twisted.logger.globalLogBeginner.beginLoggingTo(
-    [ log_observer, crash_on_critical ]
+    [ file_log_observer, crash_on_critical ]
     )
 
 def common_run():
   log_debug(DBG.INIT, 'entering reactor')
   if not _crashing: reactor.run()
-  print('CRASHED (end)', file=sys.stderr)
+  print('ENDED', file=sys.stderr)