diff options
Diffstat (limited to 'module/web/ServerThread.py')
-rw-r--r-- | module/web/ServerThread.py | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/module/web/ServerThread.py b/module/web/ServerThread.py deleted file mode 100644 index a86ecca70..000000000 --- a/module/web/ServerThread.py +++ /dev/null @@ -1,143 +0,0 @@ -#!/usr/bin/env python -from __future__ import with_statement -from time import time, sleep - -import threading -import logging - -from module.utils.fs import exists - -core = None -setup = None -log = logging.getLogger("log") - -class WebServer(threading.Thread): - def __init__(self, pycore=None, pysetup=None): - global core, setup - threading.Thread.__init__(self) - - if pycore: - core = pycore - config = pycore.config - elif pysetup: - setup = pysetup - config = pysetup.config - else: - raise Exception("No config context provided") - - self.server = config['webinterface']['server'] - self.https = config['webinterface']['https'] - self.cert = config["ssl"]["cert"] - self.key = config["ssl"]["key"] - self.host = config['webinterface']['host'] - self.port = config['webinterface']['port'] - self.debug = config['general']['debug_mode'] - self.force_server = config['webinterface']['force_server'] - self.error = None - - self.setDaemon(True) - - def run(self): - self.running = True - import webinterface - global webinterface - - if self.https: - if not exists(self.cert) or not exists(self.key): - log.warning(_("SSL certificates not found.")) - self.https = False - - prefer = None - - # These cases covers all settings - if self.server == "threaded": - prefer = "threaded" - elif self.server == "fastcgi": - prefer = "flup" - elif self.server == "fallback": - prefer = "wsgiref" - - server = self.select_server(prefer) - - try: - self.start_server(server) - - except Exception, e: - log.error(_("Failed starting webserver: " + e.message)) - self.error = e - if core: - core.print_exc() - - def select_server(self, prefer=None): - """ find a working server """ - from servers import all_server - - unavailable = [] - server = None - for server in all_server: - - if self.force_server and self.force_server == server.NAME: - break # Found server - # When force_server is set, no further checks have to be made - elif self.force_server: - continue - - if prefer and prefer == server.NAME: - break # found prefered server - elif prefer: # prefer is similar to force, but force has precedence - continue - - # Filter for server that offer ssl if needed - if self.https and not server.SSL: - continue - - try: - if server.find(): - break # Found a server - else: - unavailable.append(server.NAME) - except Exception, e: - log.error(_("Failed importing webserver: " + e.message)) - - if unavailable: # Just log whats not available to have some debug information - log.debug("Unavailable webserver: " + ",".join(unavailable)) - - if not server and self.force_server: - server = self.force_server # just return the name - - return server - - - def start_server(self, server): - - from servers import ServerAdapter - - if issubclass(server, ServerAdapter): - - if self.https and not server.SSL: - log.warning(_("This server offers no SSL, please consider using threaded instead")) - elif not self.https: - self.cert = self.key = None # This implicitly disables SSL - # there is no extra argument for the server adapter - # TODO: check for openSSL ? - - # Now instantiate the serverAdapter - server = server(self.host, self.port, self.key, self.cert, 6, self.debug) # todo, num_connections - name = server.NAME - - else: # server is just a string - name = server - - log.info(_("Starting %(name)s webserver: %(host)s:%(port)d") % {"name": name, "host": self.host, "port": self.port}) - webinterface.run_server(host=self.host, port=self.port, server=server) - - - - # check if an error was raised for n seconds - def check_error(self, n=1): - t = time() + n - while time() < t: - if self.error: - return self.error - sleep(0.1) - |