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_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")
+ host = xsetbg_conf.get("httpd", "host")
else:
- host = 'localhost'
+ host = 'localhost'
if xsetbg_conf.has_option("httpd", "port"):
- port = xsetbg_conf.getint("httpd", "port")
+ port = xsetbg_conf.getint("httpd", "port")
else:
- error("Config must specify a port to listen. Abort.")
+ error("Config must specify a port to listen. Abort.")
commands = {}
+
def published(func):
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
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')]
try:
commands[command]()
- except:
+ except Exception:
status = '500 Error'
response_headers = [('Content-type', 'text/plain')]
start_response(status, response_headers)
start_response(status, response_headers)
return ['Ok\n']
+
force()
httpd = make_server(host, port, app, server_class=QuitWSGIServer)
httpd.serve_forever()