mdns.html 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta name="apple-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. <meta name="theme-color" content="#4b75ff">
  8. <link rel="icon" type="image/png" href="./favicon.png" />
  9. <title>mDNS Discovery | Zoraxy</title>
  10. <link rel="stylesheet" href="../script/semantic/semantic.min.css">
  11. <script src="../script/jquery-3.6.0.min.js"></script>
  12. <script src="../../script/ao_module.js"></script>
  13. <script src="../script/semantic/semantic.min.js"></script>
  14. <script src="../script/tablesort.js"></script>
  15. <link rel="stylesheet" href="../main.css">
  16. </head>
  17. <body>
  18. <div id="mdns-hosts">
  19. </div>
  20. <div class="ui divider"></div>
  21. <div class="ui container">
  22. <h4>Scan with custom domain filter</h4>
  23. <div class="ui form">
  24. <div class="field">
  25. <label for="domain">Domain</label>
  26. <input type="text" id="domain" name="domain" placeholder="domain.example.com"/>
  27. </div>
  28. <button id="discover" class="ui basic button">Discover</button>
  29. </div>
  30. <br>
  31. </div>
  32. <div style="float: right;">
  33. <button class="ui green basic button" onclick="initMDNSScan()"><i class="ui refresh icon"></i> Refresh</button>
  34. <button class="ui basic button" style="margin-right: 1em;" onclick="window.open('', '_self', ''); window.close();"><i class="ui red remove icon"></i> Close</button>
  35. </div>
  36. <br><br><br>
  37. <script>
  38. function initMDNSScan(){
  39. $.get("/api/mdns/list", function(data){
  40. renderMDNSHosts(data);
  41. });
  42. }
  43. initMDNSScan();
  44. $("#discover").on("click", function() {
  45. var domain = $("#domain").val();
  46. $("#discover").addClass("loading").addClass('disabled');
  47. $.ajax({
  48. type: "POST",
  49. url: "/api/mdns/discover",
  50. data: { domain: domain },
  51. success: function(data) {
  52. $("#discover").removeClass("loading").removeClass('disabled');
  53. renderMDNSHosts(data);
  54. },
  55. error: function(xhr, status, error) {
  56. console.error(error);
  57. // Handle error response here
  58. }
  59. });
  60. });
  61. function renderMDNSHosts(data) {
  62. // Create table header
  63. var tableHeader = $('<thead>').append(
  64. $('<tr>').append(
  65. $('<th>').text('Host Name'),
  66. $('<th>').text('IP Address'),
  67. $('<th>').text('MAC Address'),
  68. $('<th>').text('Model'),
  69. $('<th>').text('Vendor')
  70. )
  71. );
  72. // Create table body
  73. var tableBody = $('<tbody>');
  74. for (var i = 0; i < data.length; i++) {
  75. var host = data[i];
  76. var ipAddresses = host.IPv4.join('<br> ');
  77. var macAddresses = host.MacAddr.join('<br> ');
  78. if (macAddresses.trim() == ""){
  79. macAddresses = '<i class="ui red remove icon"></i> Not Supported'
  80. }
  81. var row = $('<tr>').append(
  82. $('<td>').text(host.HostName),
  83. $('<td>').html(ipAddresses),
  84. $('<td>').html(macAddresses),
  85. $('<td>').text(host.Model),
  86. $('<td>').text(host.Vendor)
  87. );
  88. tableBody.append(row);
  89. }
  90. // Create table with header and body
  91. var table = $('<table>').addClass('ui celled unstackable table').append(tableHeader, tableBody);
  92. // Render table in HTML element with ID 'mdns-hosts'
  93. $('#mdns-hosts').html(table);
  94. }
  95. </script>
  96. </body>
  97. </html>