index.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <?php
  2. include_once '../auth.php';
  3. ?>
  4. <html>
  5. <meta name="apple-mobile-web-app-capable" content="yes" />
  6. <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"/>
  7. <html>
  8. <head>
  9. <script type='text/javascript' charset='utf-8'>
  10. // Hides mobile browser's address bar when page is done loading.
  11. window.addEventListener('load', function(e) {
  12. setTimeout(function() { window.scrollTo(0, 1); }, 1);
  13. }, false);
  14. </script>
  15. <title>Home Dynamic</title>
  16. <link rel="stylesheet" href="script/tocas/tocas.css">
  17. <script src="script/tocas/tocas.js"></script>
  18. <script src="script/jquery.min.js"></script>
  19. <?php
  20. $ao = "false";
  21. if (file_exists("../script/ao_module.js")){
  22. //This is the API support for ArOZ Online System
  23. echo '<script src="../script/ao_module.js"></script>';
  24. $ao = "true";
  25. }
  26. ?>
  27. <style>
  28. .devices{
  29. height:200px;
  30. max-width: 140px;
  31. border: 1px solid #706b6b;
  32. padding: 0px !important;
  33. margin: 3px;
  34. background-color:#b3b3b3;
  35. }
  36. body{
  37. background-color:#1a1a1a;
  38. overflow: hidden;
  39. }
  40. .controller{
  41. overflow:hidden;
  42. width:100%;
  43. border: 0px;
  44. padding: 0px solid transparent;
  45. }
  46. .topmenu{
  47. background-color: #0d0d0d;
  48. width:100%;
  49. padding:10px;
  50. }
  51. .link{
  52. color:white;
  53. font-size:120%;
  54. padding-right:8px;
  55. padding-left:2px;
  56. cursor: pointer;
  57. }
  58. #mainmenu{
  59. padding-left:10px;
  60. padding-right:10px;
  61. }
  62. </style>
  63. </head>
  64. <body>
  65. <div class="topmenu">
  66. <a href="" class="link">💡 Home Dynamic</a>//
  67. <a href="hds_scan.php" class="link">Scan</a>/
  68. <a class="link">Controls</a>/
  69. <a class="link">Nickname List</a>
  70. </div>
  71. <br>
  72. <div>
  73. <div id="mainmenu" class="ts grid"></div>
  74. </div>
  75. <div id="additionalDev" style="display:none;"><?php
  76. if (file_exists("additional.txt")){
  77. echo json_encode(explode("\n",file_get_contents("additional.txt")));
  78. }
  79. ?></div>
  80. <script>
  81. var aom = <?php echo $ao;?>; //ArOZ Online Mode
  82. var ipTable = "<?php if(file_exists("iptable.txt")){echo file_get_contents("iptable.txt");}?>";
  83. var deviceIPs = ipTable.slice(0, -1).split(",");
  84. var template = '<div id="%ID%" class="four wide column devices"></div>';
  85. var additionalBoard = "";
  86. if ($("#additionalDev").text().trim().length > 0){
  87. additionalBoard = JSON.parse($("#additionalDev").text().trim());
  88. }
  89. if (aom){
  90. ao_module_setWindowSize(600,505);
  91. ao_module_setWindowTitle("Home Dynamic");
  92. ao_module_setWindowIcon("lightbulb");
  93. }
  94. initInterface();
  95. initExtraDev();
  96. function initInterface(){
  97. for (var i =0; i < deviceIPs.length; i++){
  98. $("#mainmenu").append(template.replace("%ID%","panel_" + i));
  99. }
  100. GetAllInfo();
  101. }
  102. function initExtraDev(){
  103. if (additionalBoard != ""){
  104. for (var i =0; i < additionalBoard.length; i++){
  105. var data = additionalBoard[i].split(",");
  106. $("#mainmenu").append(template.replace("%ID%","panel_" + data[i].split(".").join("-")));
  107. $("#panel_" + data[i].split(".").join("-")).html('<iframe class="controller" src="' + "drivers/" + data[1] + ".php?ip=" + data[0] + '"></iframe>');
  108. }
  109. }
  110. }
  111. function openFullscreen() {
  112. elem.requestFullscreen();
  113. elem.mozRequestFullScreen();
  114. elem.webkitRequestFullscreen();
  115. elem.msRequestFullscreen();
  116. webkitRequestFullscreen();
  117. }
  118. function GetAllInfo(){
  119. var i=0;
  120. for (i = 0; i < deviceIPs.length;i++){
  121. GetDeviceInfo(deviceIPs[i],i);
  122. }
  123. }
  124. function GetDeviceInfo(ip,id){
  125. var thisIP = ip;
  126. var thisNumber = id;
  127. $.ajax({
  128. url: "http://" + thisIP + "/uuid",
  129. async: "false",
  130. timeout: 10000,
  131. error: function(){
  132. $('#panel_' + thisNumber ).attr("uuid","Unreachable");
  133. },
  134. success: function(result){
  135. $('#panel_' + thisNumber ).attr("uuid",result);
  136. }});
  137. $.ajax({
  138. url: "http://" + thisIP + "/info",
  139. async: "false",
  140. timeout: 10000,
  141. error: function(){
  142. $('#panel_' + thisNumber ).html("This device has been offline or its IP has been changed.");
  143. $('#panel_' + thisNumber ).append("<br>Please click <a href='hds_scan.php'>here</a> to update the IP table by performing an IP scan.");
  144. },
  145. success: function(result){
  146. $('#panel_' + thisNumber ).html(" " + result);
  147. $('#panel_' + thisNumber ).append("<br>IP -> " + thisIP);
  148. FindDriver(result,id,thisIP);
  149. logMapper(result,thisIP);
  150. $('#panel_' + thisNumber ).attr("ip",thisIP);
  151. }
  152. });
  153. }
  154. function logMapper(infoResult, ipaddr){
  155. var driverID = infoResult.split("_").pop();
  156. $.ajax({
  157. url: "http://" + ipaddr + "/uuid",
  158. error: function(){
  159. //Ignore this record
  160. },
  161. success: function(data){
  162. var devMapper = data + "_" + driverID + "_" + ipaddr;
  163. $.ajax("recordType.php?type=" + devMapper).done(function(data){
  164. if (data.includes("ERROR")){
  165. console.log(data);
  166. }
  167. });
  168. },
  169. timeout: 3000 // sets timeout to 3 seconds
  170. });
  171. }
  172. function FindDriver(result,id,ip){
  173. if (result.includes("_") == false){
  174. //Invalid HDS protocol or device name
  175. return;
  176. }
  177. var deviceType = result.split("_")[1];
  178. $.ajax({
  179. url: "driverLoader.php?driverName=" + deviceType,
  180. success: function(result){
  181. if (result == "true"){
  182. $('#panel_' + id ).append("<br><br>Driver found! Initializing control interface...");
  183. $("#panel_" + id).html('<iframe class="controller" src="' + "drivers/" + deviceType + ".php?ip=" + ip + '"></iframe>');
  184. adjustIframeHeight();
  185. }else{
  186. $('#panel_' + id ).append("<br><br>ERROR. Missing drivers.");
  187. }
  188. }
  189. });
  190. }
  191. function adjustIframeHeight(){
  192. $("iframe").each(function(){
  193. $(this).attr("height",$(this).parent().height() + "px");
  194. });
  195. }
  196. setTimeout(function(){ location.reload(); }, 3600000);
  197. </script>
  198. </body>
  199. </html>