]> git.phdru.name Git - xsetbg.git/blobdiff - xsetbg-wsgi.py
Fix(DB): Fix column encoding
[xsetbg.git] / xsetbg-wsgi.py
index c90da9258c13df1d2c7b7001c2c1ee389182f1a5..aad53eea943228f9ecf29d8499d78d2949edcc13 100755 (executable)
@@ -1,47 +1,55 @@
-#! /usr/bin/env python
+#! /usr/bin/env python3
 """XSetBg (WSGI version)
 
 """
 
-__version__ = "$Revision$"[11:-2]
-__revision__ = "$Id$"[5:-2]
-__date__ = "$Date$"[7:-2]
-
-__author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 2000-2011 PhiloSoft Design"
-__license__ = "GNU GPL"
-
-
+import sys
 from wsgiref import simple_server
 from wsgiref.handlers import SimpleHandler
 from wsgiref.simple_server import WSGIServer, make_server
-simple_server.ServerHandler = SimpleHandler # Stop logging to stdout
 
-from xsetbg import host, port, change as _change
+from xsetbg_conf import xsetbg_conf
+from xsetbg import change as _change
+
+simple_server.ServerHandler = SimpleHandler  # Stop logging to stdout
+
+# get httpd settings from config
+if xsetbg_conf.has_option("httpd", "host"):
+    host = xsetbg_conf.get("httpd", "host")
+else:
+    host = 'localhost'
+
+if xsetbg_conf.has_option("httpd", "port"):
+    port = xsetbg_conf.getint("httpd", "port")
+else:
+    def error(error_str):
+        sys.exit("%s: Error: %s\n" % (sys.argv[0], error_str))
+    error("Config must specify a port to listen. Abort.")
+
+
+commands = {}
 
 
 def published(func):
-    func._wsgi_published = True
+    commands[func.__name__] = func
     return func
 
+
 @published
 def change(force=False):
     _change()
 
+
 @published
 def force():
     _change(force=True)
 
+
 @published
 def stop():
     QuitWSGIServer._quit_flag = True
 
 
-g = globals().copy()
-commands = dict([(name, g[name]) for name in g
-    if getattr(g[name], '_wsgi_published', False)])
-del g
-
 class QuitWSGIServer(WSGIServer):
     _quit_flag = False
 
@@ -49,8 +57,9 @@ class QuitWSGIServer(WSGIServer):
         while not self._quit_flag:
             self.handle_request()
 
+
 def app(env, start_response):
-    command = env['PATH_INFO'][1:] # Remove the leading slash
+    command = env['PATH_INFO'][1:]  # Remove the leading slash
     if command not in commands:
         status = '404 Not found'
         response_headers = [('Content-type', 'text/plain')]
@@ -59,7 +68,7 @@ def app(env, start_response):
 
     try:
         commands[command]()
-    except:
+    except Exception:
         status = '500 Error'
         response_headers = [('Content-type', 'text/plain')]
         start_response(status, response_headers)
@@ -70,6 +79,7 @@ def app(env, start_response):
     start_response(status, response_headers)
     return ['Ok\n']
 
+
 force()
 httpd = make_server(host, port, app, server_class=QuitWSGIServer)
 httpd.serve_forever()