X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/31fb73a15d12559b15f5506622c3902476d3ea0f..4503ea2ae9eb021a1a2a665a161357305d4095f9:/lib/python/Plugins/Extensions/WebInterface/plugin.py?ds=sidebyside diff --git a/lib/python/Plugins/Extensions/WebInterface/plugin.py b/lib/python/Plugins/Extensions/WebInterface/plugin.py index f0be4e45..71c4afcc 100644 --- a/lib/python/Plugins/Extensions/WebInterface/plugin.py +++ b/lib/python/Plugins/Extensions/WebInterface/plugin.py @@ -1,19 +1,60 @@ from Plugins.Plugin import PluginDescriptor +sessions = [ ] + def startWebserver(): from twisted.internet import reactor - from twisted.web2 import server, http, static - toplevel = static.File("/hdd") - site = server.Site(toplevel) + from twisted.web2 import server, http, static, resource, stream, http_headers, responsecode + from twisted.python import util + import webif + + class ScreenPage(resource.Resource): + def __init__(self, path): + self.path = path + + def render(self, req): + global sessions + if sessions == [ ]: + return http.Response(200, stream="please wait until enigma has booted") + + s = stream.ProducerStream() + webif.renderPage(s, self.path, sessions[0]) # login? + return http.Response(stream=s) + + def locateChild(self, request, segments): + path = '/'.join(["web"] + segments) + if path[-1:] == "/": + path += "index" + + path += ".xml" + return ScreenPage(path), () + + class Toplevel(resource.Resource): + addSlash = True + + def render(self, req): + return http.Response(responsecode.OK, {'Content-type': http_headers.MimeType('text', 'html')}, + stream='Hello! you want probably go to the test instead.') + + child_web = ScreenPage("/") # "/web" + child_hdd = static.File("/hdd") + child_webdata = static.File(util.sibpath(__file__, "web-data")) + + site = server.Site(Toplevel()) reactor.listenTCP(80, http.HTTPFactory(site)) -def autostart(reason): +def autostart(reason, **kwargs): + if "session" in kwargs: + global sessions + sessions.append(kwargs["session"]) + return + if reason == 0: - try: + #try: startWebserver() - except ImportError: - print "twisted not available, not starting web services" + #except ImportError: + # print "twisted not available, not starting web services" -def Plugins(): - return PluginDescriptor(where = PluginDescriptor.WHERE_AUTOSTART, fnc = autostart) +def Plugins(**kwargs): + return PluginDescriptor(where = [PluginDescriptor.WHERE_SESSIONSTART, PluginDescriptor.WHERE_AUTOSTART], fnc = autostart)