Source code for netdef.Engines.NginxWebGuiReverseProxy

import logging

import waitress

from .ThreadedWebGuiEngine import ThreadedWebGuiEngine

log = logging.getLogger("NginxReverseProxy")
log.info("Enter threaded web gui nginx reverse proxy engine")


[docs]class NginxReverseProxy(ThreadedWebGuiEngine):
[docs] def block(self): # main-funksjonen avslutter når denne funksjonen returnerer log.info("run web interface") section = "webadmin" config = self.shared.config.config host = config(section, "host", "") port = config(section, "port", 8000) log.info("%s %s", host, port) # denne klassen tvinger asyncore til å stoppe. # denne må registreres i "map" når man ønsker å stoppe class _exit_asyncore: _counter = 0 accepting = False def readable(self): if self._counter > 4: # liten timeout før vi stopper raise KeyboardInterrupt() else: self._counter += 1 return False def writable(self): return False try: # denne dict-en sendes helt ned til pollefunksjonene i asyncore og # kan av denne grunn benyttes til å stoppe webserver _map = {} def shutdown(): # server.task_dispatcher.shutdown(timeout=1) _map["exit"] = _exit_asyncore() # gjør shutdown-funksjonen tilgjengelig for websidene i AdminIndex.py self.app.config["server.shutdown"] = shutdown # her startes webserveren, denne blokkerer til ctrl-c mottas server = waitress.create_server(self.app, host=host, port=port, map=_map) server.run() except KeyboardInterrupt: pass