<%# Copyright 2010 Jo-Philipp Wich <jow@openwrt.org> Licensed to the public under the Apache License 2.0. -%> <%+header%> <% local fs = require "nixio.fs" local has_ping6 = fs.access("/bin/ping6") or fs.access("/usr/bin/ping6") local has_traceroute6 = fs.access("/usr/bin/traceroute6") local dns_host = luci.config.diag and luci.config.diag.dns or "dev.openwrt.org" local ping_host = luci.config.diag and luci.config.diag.ping or "dev.openwrt.org" local route_host = luci.config.diag and luci.config.diag.route or "dev.openwrt.org" %> <script type="text/javascript" src="<%=resource%>/cbi.js"></script> <script type="text/javascript">//<![CDATA[ var stxhr = new XHR(); function update_status(field, proto) { var tool = field.name; var addr = field.value; var protocol = proto ? "6" : ""; var legend = document.getElementById('diag-rc-legend'); var output = document.getElementById('diag-rc-output'); if (legend && output) { output.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' + '<%:Waiting for command to complete...%>' ; legend.parentNode.style.display = 'block'; legend.style.display = 'inline'; stxhr.post('<%=url('admin/network')%>/diag_' + tool + protocol + '/' + addr, { token: '<%=token%>' }, function(x) { if (x.responseText) { legend.style.display = 'none'; output.innerHTML = String.format('<pre>%h</pre>', x.responseText); } else { legend.style.display = 'none'; output.innerHTML = '<span class="error"><%:Bad address specified!%></span>'; } } ); } } //]]></script> <form method="post" action="<%=url('admin/network/diagnostics')%>"> <div class="cbi-map"> <h2 name="content"><%:Diagnostics%></h2> <fieldset class="cbi-section"> <legend><%:Network Utilities%></legend> <br /> <div style="width:30%; float:left"> <input style="margin: 5px 0" type="text" value="<%=ping_host%>" name="ping" /><br /> <% if has_ping6 then %> <select name="ping_proto" style="width:auto"> <option value="" selected="selected"><%:IPv4%></option> <option value="6"><%:IPv6%></option> </select> <input type="button" value="<%:Ping%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.ping, this.form.ping_proto.selectedIndex)" /> <% else %> <input type="button" value="<%:Ping%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.ping)" /> <% end %> </div> <div style="width:33%; float:left"> <input style="margin: 5px 0" type="text" value="<%=route_host%>" name="traceroute" /><br /> <% if has_traceroute6 then %> <select name="traceroute_proto" style="width:auto"> <option value="" selected="selected"><%:IPv4%></option> <option value="6"><%:IPv6%></option> </select> <input type="button" value="<%:Traceroute%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.traceroute, this.form.traceroute_proto.selectedIndex)" /> <% else %> <input type="button" value="<%:Traceroute%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.traceroute)" /> <% end %> <% if not has_traceroute6 then %> <p> </p> <p><%:Install iputils-traceroute6 for IPv6 traceroute%></p> <% end %> </div> <div style="width:33%; float:left;"> <input style="margin: 5px 0" type="text" value="<%=dns_host%>" name="nslookup" /><br /> <input type="button" value="<%:Nslookup%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.nslookup)" /> </div> <br style="clear:both" /><br /> </fieldset> </div> <fieldset class="cbi-section" style="display:none"> <legend id="diag-rc-legend"><%:Collecting data...%></legend> <span id="diag-rc-output"></span> </fieldset> </form> <%+footer%>