add proof-of-concept web interface
[enigma2.git] / lib / python / Plugins / Extensions / WebInterface / plugin.py
index 0f7e2bbd25ffd653ba47404fb428a82ce8cccb65..c61424c81302aab3a2753d67b7a77b2d437ff3fb 100644 (file)
@@ -1,14 +1,41 @@
 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
+       import webif
+
+       class ScreenPage(resource.Resource):
+               def render(self, req):
+                       global sessions
+                       if sessions == [ ]:
+                               return http.Response("please wait until enigma has booted")
+                       
+                       s = stream.ProducerStream()
+                       webif.renderPage(s, req, sessions[0])  # login?
+                       return http.Response(stream=s)
+
+       class Toplevel(resource.Resource):
+               addSlash = True
+               
+               def render(self, req):
+                       return 'Hello! you want probably go to <a href="/test">the test</a> instead.'
+
+               child_test = ScreenPage() # "/test"
+               child_hdd = static.File("/hdd")
+
+       site = server.Site(Toplevel())
        
        reactor.listenTCP(80, http.HTTPFactory(site))
 
 def autostart(reason, **kwargs):
+       if "session" in kwargs:
+               global sessions
+               sessions.append(kwargs["session"])
+               return
+
        if reason == 0:
                try:
                        startWebserver()
@@ -16,4 +43,4 @@ def autostart(reason, **kwargs):
                        print "twisted not available, not starting web services"
 
 def Plugins(**kwargs):
-       return PluginDescriptor(where = PluginDescriptor.WHERE_AUTOSTART, fnc = autostart)
+       return PluginDescriptor(where = [PluginDescriptor.WHERE_SESSIONSTART, PluginDescriptor.WHERE_AUTOSTART], fnc = autostart)