light.cgi 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. #!/usr/bin/python3
  2. import cgi
  3. import cgitb; cgitb.enable() # for troubleshooting
  4. print( "Content-type: text/html")
  5. print()
  6. print( """
  7. <html>
  8. <head><title>Licht WEB</title></head>
  9. <body>
  10. <h3> Sample CGI Script </h3>
  11. """)
  12. form = cgi.FieldStorage()
  13. message = form.getvalue("message", "(no message)")
  14. print("<br>")
  15. import os
  16. ENV = os.environ
  17. for env in ENV:
  18. val=ENV[env]
  19. #print(env)
  20. #print(" = ")
  21. #print(val)
  22. #print("<br>")
  23. ARGS = {}
  24. if "QUERY_STRING" in ENV:
  25. _args = ENV["QUERY_STRING"]
  26. if "&" in _args:
  27. args = _args.split("&")
  28. else:
  29. args = _args
  30. for arg in args:
  31. import urllib.parse
  32. if "=" in arg:
  33. k,v = arg.split("=",1)
  34. v = urllib.parse.unquote(v)
  35. ARGS[k]=v
  36. print("{} = {} <br>".format(k,v))
  37. print("""
  38. <script>
  39. function xGET(){
  40. dmx = document.getElementById("DMX").value;
  41. val = document.getElementById("VALUE").value;
  42. fade = document.getElementById("FADE").value;
  43. xget(dmx,val,fade)
  44. }
  45. function xget(dmx=1,val=100,fade=1){
  46. const http = new XMLHttpRequest();
  47. url = './licht.cgi?&CMD=[{"VALUE": '+val+', "args": [], "FADE": '+fade+', "DMX": "'+dmx+'"}]'
  48. http.open("GET", url);
  49. http.send();
  50. http.onreadystatechange = (e) => {
  51. console.log('done',e)
  52. }
  53. }
  54. function hN(){ // NEXT
  55. dmx = document.getElementById("highlight").value;
  56. dmx = parseInt(dmx) +1
  57. document.getElementById("highlight").value = dmx;
  58. if( dmx != 63 && dmx != 66){
  59. xget(dmx,255,0)
  60. }
  61. dmx -= 1
  62. if( dmx != 63 && dmx != 66){
  63. xget(dmx,0,0)
  64. }
  65. }
  66. function hP(){ // PREVIEW
  67. dmx = document.getElementById("highlight").value;
  68. dmx = parseInt(dmx)-1
  69. document.getElementById("highlight").value = dmx;
  70. if( dmx != 63 && dmx != 66){
  71. xget(dmx,255,0)
  72. }
  73. dmx += 1
  74. if( dmx != 63 && dmx != 66){
  75. xget(dmx,0,0)
  76. }
  77. }
  78. </script>
  79. DMX<input type=number id=DMX value=10>
  80. <br>
  81. VALUE<input type=number id=VALUE value=255>
  82. <br>
  83. FADE<input type=number id=FADE value=1>
  84. <br>
  85. <input type=button value=GO onclick=xGET()>
  86. <br>
  87. <br>
  88. <br>
  89. Highlight
  90. <input type=button value="-" onclick=hP() size=10>
  91. <input type=number id=highlight value=10 size=5>
  92. <input type=button value="+" onclick=hN() size=10>
  93. <br>
  94. <br>
  95. <br>
  96. """)
  97. print("<br>")
  98. print("beispiel <br>")
  99. print('&CMD=[{"VALUE": 55, "args": [], "FADE": 3, "DMX": "1"}]')
  100. print("<br>")
  101. if "CMD" in ARGS:
  102. CMD = ARGS["CMD"]
  103. CMD = CMD.replace("'","")
  104. CMD = CMD.replace("<","")
  105. CMD = CMD.replace(">","")
  106. CMD = CMD.replace(";","")
  107. CMD = CMD.replace("|","")
  108. #python3 /opt/LibreLight/Xdesk/lib/zchat.py data '[{"VALUE": 255, "args": [], "FADE": 0, "DMX": "1"}]
  109. cmd = 'python3 /opt/LibreLight/Xdesk/lib/zchat.py data \'{}\''.format(CMD)
  110. print("$ ",cmd, "<br>")
  111. print("<br>")
  112. r=os.popen(cmd)
  113. for l in r:
  114. l=l.replace("<","&lt;")
  115. l=l.replace(">","&gt;")
  116. print(">",l,"<br>")
  117. print( """
  118. </html>
  119. """)