Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.12 KB | None | 0 0
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Ping example</title>
  6. <script src="{{ url_for('static', filename='js/jq.js') }}"></script>
  7. <script src="{{ url_for('static', filename='js/socket.io.min.js') }}"></script>
  8. </head>
  9. <body bgcolor="cccccc">
  10. <div id="form-with-button">
  11. <form>
  12. <input id="start" type="button" value="Запуск диагностики"></input>
  13.  
  14. </form>
  15. </div>
  16. <div id="result-start"></div>
  17. <HR>
  18. <table>
  19. <tr><td>PING: (0 - no error, 1 - no ping)<HR></td></tr>
  20. <tr><td><div id='ping'></div></td></tr>
  21. <tr><td><HR>IPERF: (Mbit/sec)<HR></td></tr>
  22. <tr><td><div id='iperf3'></div></td></tr>
  23. </table>
  24. <script>
  25. //преформ, генератор интерфейсов:
  26.  
  27. let iperf_list = ['WAN', 'LAN'];
  28. let iface_list = [];
  29. let iface = 'eth1.1';
  30. for (let i = 1; i <= 4; i+=1) {
  31. iface_list.push('eth1.1'+i);
  32. // $('#ping').append(`<tr><td><div>Интерфейс ${iface + i}:</div></td><td><center><div id='ping-ind-${iface + i}'>не запущен</div></center></td><td><div id='ping-rez-${iface + i}'></div></td></tr>`)
  33. };
  34.  
  35. iface_list.map(iface => $('#ping').append(`<tr><td><div>Интерфейс ${iface}:</div></td><td><center><div id='ping-ind-${iface}'>не запущен</div></center></td><td><div id='ping-rez-${iface}'></div></td></tr>`));
  36. iperf_list.map(iperf => $('#iperf3').append(`<tr><td><div>Интерфейс ${iperf}:</div></td><td><center><div id='iperf-ind-${iperf}'>не запущен</div></center></td><td><div id='iperf-rez-${iperf}'></div></td></tr>`));
  37.  
  38. // начальные данные:
  39. var wan = '192.168.114.13';
  40. var lan = '192.168.114.15';
  41. var cable_treshold = 40;
  42. var wifi_treshold = 40;
  43. var ping = '192.168.1.2';
  44. var ping1 = '127.0.0.1';
  45. var ping2 = '192.168.114.100';
  46. var ping3 = '192.168.114.101';
  47. var ips = [ping, ping1, ping2, ping3]
  48.  
  49. // то что относится к счётчикам:
  50. var c = {};
  51. ips.map(function(ip) { c[ip] = 0 } );
  52. console.log(c)
  53. let iface_counter = [];
  54. let iface_counter1 = [];
  55. let iface_counter2 = [];
  56. let iface_counter3 = [];
  57.  
  58. // определение namespace
  59. namespace = '/ping';
  60. // переменная коннекта
  61. var sio = io.connect(location.protocol + '//' + document.domain + ':' + location.port + namespace);
  62.  
  63. $('#start').bind('click', function(go) {
  64. sio.emit('click-start', {'test': 'Hello!'});
  65. });
  66.  
  67. $('#start').bind('click', function() {
  68. sio.emit('click-ping', {'test': 'Hello!'});
  69. });
  70.  
  71. sio.on('receive-start', function (response) {
  72. let text = document.getElementById('result-start').innerHTML=' ';
  73. document.getElementById('result-start').innerHTML=text + response;
  74. iface_list.map(iface => clear_ping(`ping-ind-${iface}`, `ping-rez-${iface}`));
  75. iperf_list.map(iperf => clear_iperf(`iperf-ind-${iperf}`, `iperf-rez-${iperf}`));
  76. });
  77.  
  78. function result_ping(a,response) {
  79. let text = document.getElementById(a).innerHTML;
  80. document.getElementById(a).innerHTML=text + ' ' + response.i;
  81. }
  82.  
  83. function result_iperf(a,b,response) {
  84. let text = document.getElementById(a).innerHTML=' ';
  85. document.getElementById(a).innerHTML=text + response.speed;
  86. if (response.speed > cable_treshold) { indicate_ok(b); }
  87. else { indicate_fail(b); }
  88. };
  89.  
  90. function indicate_ok(b) {
  91. document.getElementById(b).style.backgroundColor='green';
  92. document.getElementById(b).innerHTML='__OK__';
  93. }
  94.  
  95. function indicate_fail(b) {
  96. document.getElementById(b).style.backgroundColor='red';
  97. document.getElementById(b).innerHTML='FAIL';
  98. }
  99.  
  100. function clear_ping(ping_ind,ping_rez) {
  101. document.getElementById(ping_ind).style.backgroundColor='yellow';
  102. document.getElementById(ping_ind).innerHTML='Работаем';
  103. document.getElementById(ping_rez).innerHTML='';
  104. let iface_counter = [];
  105. let iface_counter1 = [];
  106. let iface_counter2 = [];
  107. let iface_counter3 = [];
  108. var c = {};
  109. }
  110.  
  111. function clear_iperf(iperf_ind,iperf_rez) {
  112. document.getElementById(iperf_ind).style.backgroundColor='yellow';
  113. document.getElementById(iperf_ind).innerHTML='Работаем';
  114. document.getElementById(iperf_rez).innerHTML='';
  115. }
  116.  
  117.  
  118. function too_big(b,d) {
  119. if (d.filter(x => x > 0).length > 3) { indicate_fail(b); } else { indicate_ok(b); }
  120. }
  121. //регистрация и обработка входных данных пинговки
  122. sio.on('receive-ping', function (response) {
  123. if (response.ip == ping) {
  124. let a = 'ping-rez-'+iface_list.slice().shift();
  125. let b = 'ping-ind-'+iface_list.slice().shift();
  126. result_ping(a,response);
  127. iface_counter.push(response.i);
  128. c[response.ip] += 1;
  129. if (c[response.ip]>3) { too_big(b,iface_counter); }
  130. } else if (response.ip == ping1) {
  131. let a = 'ping-rez-'+iface_list.slice(1).shift();
  132. let b = 'ping-ind-'+iface_list.slice(1).shift();
  133. result_ping(a,response);
  134. iface_counter1.push(response.i);
  135. c[response.ip] += 1;
  136. if (c[response.ip]>3) { too_big(b,iface_counter1); }
  137. } else if (response.ip == ping2) {
  138. let a = 'ping-rez-'+iface_list.slice(2).shift();
  139. let b = 'ping-ind-'+iface_list.slice(2).shift();
  140. result_ping(a,response);
  141. iface_counter2.push(response.i);
  142. c[response.ip] += 1;
  143. if (c[response.ip]>3) { too_big(b,iface_counter2); }
  144. } else if (response.ip == ping3){
  145. let a = 'ping-rez-'+iface_list.slice(3).shift();
  146. let b = 'ping-ind-'+iface_list.slice(3).shift();
  147. result_ping(a,response);
  148. iface_counter3.push(response.i);
  149. c[response.ip] += 1;
  150. if (c[response.ip]>3) { too_big(b,iface_counter3); }
  151. }
  152. });
  153.  
  154. //регистрация и обработка входных данных iperf
  155. sio.on('receive-iperf', function (response) {
  156. if (response.ip == wan) {
  157. let a = 'iperf-rez-'+iperf_list.slice().shift();
  158. let b = 'iperf-ind-'+iperf_list.slice().shift();
  159. result_iperf(a,b,response);
  160. } else if (response.ip == lan) {
  161. let a = 'iperf-rez-'+iperf_list.slice(1).shift();
  162. let b = 'iperf-ind-'+iperf_list.slice(1).shift();
  163. result_iperf(a,b,response);
  164. }
  165. });
  166. </script>
  167. </body>
  168. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement