RT# 78952 CDR Import for Acme Packet Improved caller-id parsing
[freeside.git] / httemplate / misc / ping.html
1 <% include('/elements/header-popup.html', "Ping $ip" ) %>
2
3 <% include('/elements/xmlhttp.html',
4              'url'  => $p. 'misc/xmlhttp-ping.html',
5              'subs' => [ 'ping' ],
6           )
7 %>
8
9 %# <img src="<%$p%>images/bullet_red.png" border=0>
10
11
12 <%ntable("#cccccc", 2)%>
13
14 <TR>
15   <TD>Status</TD>
16   <TD BGCOLOR="#ffffff" ID="ping_status">Checking...</TD>
17 </TR>
18 <TR>
19   <TD>Packet loss</TD>
20   <TD BGCOLOR="#ffffff" ID="ping_packetloss"></TD>
21 </TR>
22 <TR>
23   <TD>Latency</TD>
24   <TD BGCOLOR="#ffffff" ID="ping_latency"></TD>
25 </TR>
26 <TR>
27   <TD>Packets</TD>
28   <TD BGCOLOR="#ffffff" ID="ping_packets"></TD>
29 </TR>
30
31 </TABLE>
32
33 <BR>
34 <CENTER>
35 <INPUT TYPE="button" VALUE="Close" onClick="parent.nd(1);">
36 </CENTER>
37
38 <SCRIPT TYPE="text/javascript">
39
40   var fails = 0;
41   var pongs = 0;
42   var totaltime = 0;
43   var avg = 0;
44
45   function ping_update ( updatetext ) {
46     var pingArray = eval('(' + updatetext + ')');
47     var status = pingArray[0];
48     var rtt = pingArray[1];
49
50     if ( status == 0 ) {
51       fails++;
52     } else if ( status == 1 ) {
53       pongs++;
54       totaltime = totaltime + rtt;
55       avg = totaltime / pongs;
56     }
57
58     var loss = 100 * fails / ( fails + pongs );
59
60     var statusCell     = document.getElementById('ping_status');
61     var packetlossCell = document.getElementById('ping_packetloss');
62     var latencyCell    = document.getElementById('ping_latency');
63     var packetsCell    = document.getElementById('ping_packets');
64
65     var status = '';
66     // red conditions
67     if ( loss == 100 ) {
68       status = '<FONT COLOR="#ff0000">Unreachable</FONT>';
69     } else
70     // yellow conditions
71     if ( loss > 50 ) {
72       status = '<FONT COLOR="#ff9900">High packet loss</FONT>';
73     } else
74     if ( avg > 1 ) {
75       status = '<FONT COLOR="#ff9900">High latency</FONT>';
76     } else {
77       status = '<FONT COLOR="#00cc00">Up</FONT>';
78     }
79
80     statusCell.innerHTML = '<B>' + status + '</B>';
81     packetlossCell.innerHTML = '<B>' + Math.round(loss) + '%</B>';
82     if ( avg > 0 ) {
83       latencyCell.innerHTML = '<B>' + Math.round( avg*1000 ) + 'ms</B>';
84     }
85     var packets = fails + pongs;
86     packetsCell.innerHTML = '<B>' + packets + '</B>';
87
88     setTimeout( "ping('<%$ip%>', ping_update)", 1000 );
89
90   }
91
92   ping( '<%$ip%>', ping_update );
93
94 </SCRIPT>
95
96 <%init>
97
98 my($query) = $cgi->keywords;
99 $query =~ /^([\d\.]+)$/ or die 'Illegal IP';
100 my $ip = $1;
101
102 </%init>