فهرست منبع

add: cgi script for remote access (raw dmx modifikations)

micha 2 سال پیش
والد
کامیت
72e6b1c96f
3فایلهای تغییر یافته به همراه179 افزوده شده و 5 حذف شده
  1. 9 4
      _LibreLightDesk.py
  2. 11 1
      lib/zchat.py
  3. 159 0
      light.cgi

+ 9 - 4
_LibreLightDesk.py

@@ -3896,8 +3896,10 @@ class GUI_MasterWingLayout():
                 self.b.pack(fill=None, side=tk.LEFT)
                 self.b = tk.Label(frameS,bg="black",text="" ,width=11,font=font8 )
                 self.b.pack(fill=tk.BOTH, side=tk.LEFT)
-
-                frameS = tk.Frame(self.frame,bg="#a000{}".format(h),width=width,border=2)
+                try:
+                    frameS = tk.Frame(self.frame,bg="#a000{}".format(h),width=width,border=2)
+                except:
+                    frameS = tk.Frame(self.frame,bg="#a0aadd",width=width,border=2)
                 c=0
             #print(frameS)
             e= ELEM_FADER(frameS,nr=j+1,cb=self.event_cb)
@@ -4031,7 +4033,10 @@ class GUI_FaderLayout():
                 self.b = tk.Label(frameS,bg="black",text="" ,width=11,font=font8 )
                 self.b.pack(fill=tk.BOTH, side=tk.LEFT)
 
-                frameS = tk.Frame(self.frame,bg="#a000{}".format(h),width=width,border=2)
+                try:
+                    frameS = tk.Frame(self.frame,bg="#a000{}".format(h),width=width,border=2)
+                except:
+                    frameS = tk.Frame(self.frame,bg="#a0aadd",width=width,border=2)
                 c=0
             #print(frameS)
             e= ELEM_FADER(frameS,nr=j+1)
@@ -4556,7 +4561,7 @@ if __run_main:
     w = GUIWindow(name,master=0,width=W1,height=H1,left=L1,top=TOP)
     w1 = ScrollFrame(w.tk,width=W1,height=H1)
     data=[]
-    for i in range(24+12):
+    for i in range((24+12)*15):
         data.append({"text"+str(i):"test"})
     GUI_FaderLayout(w1,data)
     window_manager.new(w,name)

+ 11 - 1
lib/zchat.py

@@ -206,7 +206,17 @@ tcp_sender = Client
 
 
 if __name__ == "__main__":
-    if "client" in sys.argv:
+    if "data" in sys.argv:
+        i = sys.argv.index("data")
+        data = sys.argv[i+1]
+        print( i ,data)
+        data = data.encode("utf-8")
+        c = Client()
+        client = c
+        time.sleep(0.05)
+        client.send(data)
+        time.sleep(0.05)
+    elif "client" in sys.argv:
         c = Client()
         if "test" in sys.argv: # test server/client
             import random 

+ 159 - 0
light.cgi

@@ -0,0 +1,159 @@
+#!/usr/bin/python3
+
+import cgi
+import cgitb; cgitb.enable()  # for troubleshooting
+
+print( "Content-type: text/html")
+print()
+
+print( """
+<html>
+
+<head><title>Licht WEB</title></head>
+
+<body>
+
+  <h3> Sample CGI Script </h3>
+""")
+
+
+form = cgi.FieldStorage()
+message = form.getvalue("message", "(no message)")
+
+print("<br>")
+
+import os
+
+ENV = os.environ
+
+for env in ENV:
+    val=ENV[env]
+    #print(env)
+    #print(" = ")
+    #print(val)
+    #print("<br>")
+
+ARGS = {}
+if "QUERY_STRING" in ENV:
+    _args = ENV["QUERY_STRING"]
+    if "&" in _args:
+        args = _args.split("&")
+    else:
+        args = _args
+    
+    for arg in args:
+        import urllib.parse
+        if "=" in arg:
+            k,v = arg.split("=",1)
+            v = urllib.parse.unquote(v)
+            ARGS[k]=v
+            print("{} = {} <br>".format(k,v))
+
+print("""
+<script>
+
+function xGET(){
+    dmx = document.getElementById("DMX").value;
+    val = document.getElementById("VALUE").value;
+    fade = document.getElementById("FADE").value;
+    xget(dmx,val,fade)
+}
+
+function xget(dmx=1,val=100,fade=1){
+    const http = new XMLHttpRequest();
+
+    url = './licht.cgi?&CMD=[{"VALUE": '+val+', "args": [], "FADE": '+fade+', "DMX": "'+dmx+'"}]'
+    http.open("GET", url);
+    http.send();
+
+    http.onreadystatechange = (e) => {
+      console.log('done',e)
+    }
+}
+
+function hN(){ // NEXT
+    dmx = document.getElementById("highlight").value;
+    dmx = parseInt(dmx) +1
+    document.getElementById("highlight").value = dmx;
+    if( dmx != 63 && dmx != 66){
+        xget(dmx,255,0)
+    }
+    dmx -= 1
+    if( dmx != 63 && dmx != 66){
+        xget(dmx,0,0)
+    }
+    
+
+}
+
+function hP(){ // PREVIEW
+    dmx = document.getElementById("highlight").value;
+    dmx = parseInt(dmx)-1
+    document.getElementById("highlight").value = dmx;
+    
+    if( dmx != 63 && dmx != 66){
+        xget(dmx,255,0)
+    }
+    dmx += 1
+    if( dmx != 63 && dmx != 66){
+        xget(dmx,0,0)
+    }
+
+}
+
+</script>
+
+DMX<input type=number id=DMX value=10>
+<br>
+VALUE<input type=number id=VALUE value=255>
+<br>
+FADE<input type=number id=FADE value=1>
+<br>
+<input type=button value=GO onclick=xGET()>
+
+
+
+
+
+
+<br>
+<br>
+<br>
+Highlight
+<input type=button value="-" onclick=hP() size=10>
+<input type=number id=highlight value=10 size=5>
+<input type=button value="+" onclick=hN() size=10>
+<br>
+<br>
+<br>
+""")
+
+print("<br>")
+print("beispiel <br>")
+print('&CMD=[{"VALUE": 55, "args": [], "FADE": 3, "DMX": "1"}]')
+print("<br>")
+
+if "CMD" in ARGS:
+    CMD = ARGS["CMD"]
+    CMD = CMD.replace("'","")
+    CMD = CMD.replace("<","")
+    CMD = CMD.replace(">","")
+    CMD = CMD.replace(";","")
+    CMD = CMD.replace("|","")
+
+    #python3 /opt/LibreLight/Xdesk/lib/zchat.py data '[{"VALUE": 255, "args": [], "FADE": 0, "DMX": "1"}]
+    cmd = 'python3 /opt/LibreLight/Xdesk/lib/zchat.py data \'{}\''.format(CMD)
+    print("$ ",cmd, "<br>")
+    print("<br>")
+    r=os.popen(cmd)
+    for l in r:
+        l=l.replace("<","&lt;")
+        l=l.replace(">","&gt;")
+        print(">",l,"<br>")
+
+
+
+
+print( """
+</html>
+""")