neighbour.html 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta name="mobile-web-app-capable" content="yes">
  5. <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"/>
  6. <meta charset="UTF-8">
  7. <link rel="stylesheet" href="../../script/semantic/semantic.min.css">
  8. <script src="../../script/jquery.min.js"></script>
  9. <script src="../../script/semantic/semantic.min.js"></script>
  10. <script src="../arsm/js/moment.min.js"></script>
  11. <style>
  12. .hidden{
  13. display:none;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <div class="ui container">
  19. <div class="ui basic segment">
  20. <div class="ui header">
  21. <i class="server icon"></i>
  22. <div class="content">
  23. Cluster Neightbourhood
  24. <div class="sub header">Automatic Cluster Discovery Services</div>
  25. </div>
  26. </div>
  27. </div>
  28. <div class="ui divider"></div>
  29. <div class="ui red message" id="errbox" style="display:none;">
  30. <div class="header">
  31. Cluster Scan Error
  32. </div>
  33. <p id="errormsg">An unknown error has occurred. Please try again later.</p>
  34. </div>
  35. <h4 class="ui header">
  36. This Host
  37. <div class="sub header">The broadcasting information sent out by this host server.</div>
  38. </h4>
  39. <div class="ui basic segment" id="thisHost">
  40. </div>
  41. <div class="ui divider"></div>
  42. <h4 class="ui header">
  43. Nearby Hosts
  44. <div class="sub header">The ArozOS broadcast receiver from the Local Area Network.</div>
  45. </h4>
  46. <div class="ui basic segment" id="nearybylist">
  47. </div>
  48. <div class="ui divider"></div>
  49. <p>Last Updates: <span id="lastUpdateTime"></span> seconds ago</p>
  50. <br><br><br>
  51. </div>
  52. <script>
  53. initClusterScannerList();
  54. function initClusterScannerList(){
  55. $.get("../../system/cluster/scan", function(data){
  56. if (data.error !== undefined){
  57. $("#errormsg").text(data.error);
  58. $("#errbox").show();
  59. }else{
  60. //Render this Host info
  61. if (data.ThisHost != null){
  62. var host = data.ThisHost
  63. $("#thisHost").append(`<div class="ui icon green message">
  64. <i class="server icon"></i>
  65. <div class="content">
  66. <div class="header">
  67. <a href="//${host.HostName}:${host.Port}" target="_blank">${host.HostName}</a>
  68. </div>
  69. <div class="ui list">
  70. <div class="item">
  71. <i class="disk icon"></i>
  72. <div class="content">
  73. <b>MODEL:</b> ${host.Model} (${host.Vendor})
  74. </div>
  75. </div>
  76. <div class="item">
  77. <i class="paperclip icon"></i>
  78. <div class="content">
  79. <b>VER:</b> ${host.MinorVersion} (${host.BuildVersion})
  80. </div>
  81. </div>
  82. <div class="item">
  83. <i class="marker icon"></i>
  84. <div class="content">
  85. <b>IP:</b> ${host.IPv4.join(" / ")}
  86. </div>
  87. </div>
  88. <div class="item">
  89. <i class="tag icon"></i>
  90. <div class="content">
  91. <b>UUID:</b> ${host.UUID}
  92. </div>
  93. </div>
  94. <div class="item">
  95. <i class="server icon"></i>
  96. <div class="content">
  97. <b>MAC:</b> ${host.MacAddr.join(" / ")}
  98. </div>
  99. </div>
  100. </div>
  101. </div>
  102. </div>`);
  103. }
  104. //Render remote host info
  105. $("#nearybylist").html("");
  106. if (data.NearbyHosts == null){
  107. $("#nearybylist").append(`<div class="ui icon message">
  108. <i class="question icon"></i>
  109. <div class="content">
  110. No nearby hosts discovered
  111. </div>
  112. `);
  113. }else{
  114. data.NearbyHosts.forEach(host => {
  115. var iplinks = [];
  116. host.IPv4.forEach(ip => {
  117. iplinks.push(`<a href="//${ip}:${host.Port}" target="_blank">${ip}</a>`);
  118. })
  119. var ipDOM = iplinks.join(" / ");
  120. var macDOM = host.MacAddr.join(" / ");
  121. console.log(host.MacAddr);
  122. if (host.MacAddr.length == 0){
  123. //Old version of ArozOS, do not support MAC addr broadcast
  124. macDOM = "Version Not Supported";
  125. }
  126. $("#nearybylist").append(`<div class="ui icon teal message">
  127. <i class="server icon"></i>
  128. <div class="content">
  129. <div class="header">
  130. <a href="//${host.HostName}:${host.Port}" target="_blank">${host.HostName}</a>
  131. </div>
  132. <div class="ui list">
  133. <div class="item">
  134. <i class="disk icon"></i>
  135. <div class="content">
  136. <b>MODEL:</b> ${host.Model} (${host.Vendor})
  137. </div>
  138. </div>
  139. <div class="item">
  140. <i class="paperclip icon"></i>
  141. <div class="content">
  142. <b>VER:</b> ${host.MinorVersion} (${host.BuildVersion})
  143. </div>
  144. </div>
  145. <div class="item">
  146. <i class="marker icon"></i>
  147. <div class="content">
  148. <b>IP:</b> ${ipDOM}
  149. </div>
  150. </div>
  151. <div class="item">
  152. <i class="tag icon"></i>
  153. <div class="content">
  154. <b>UUID:</b> ${host.UUID}
  155. </div>
  156. </div>
  157. <div class="item">
  158. <i class="server icon"></i>
  159. <div class="content">
  160. <b>MAC:</b> ${macDOM}
  161. </div>
  162. </div>
  163. </div>
  164. </div>
  165. </div>`);
  166. });
  167. }
  168. //Update the update time
  169. $("#lastUpdateTime").text(Math.floor(Date.now() / 1000) - data.LastUpdate);
  170. }
  171. });
  172. }
  173. </script>
  174. </body>
  175. </html>