summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm
blob: d1bef2a8b7936d12b747921b1d97b6c5c73402b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<%#
LuCI - Lua Configuration Interface
Copyright 2010 Jo-Philipp Wich <xm@subsignal.org>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

	http://www.apache.org/licenses/LICENSE-2.0

$Id$

-%>

<%+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")
%>

<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.get('<%=luci.dispatcher.build_url("admin", "network")%>/diag_' + tool + protocol + '/' + addr, null,
				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="<%=pcdata(luci.http.getenv("REQUEST_URI"))%>">
	<div class="cbi-map">
		<h2><a id="content" name="content"><%:Diagnostics%></a></h2>

		<fieldset class="cbi-section">
			<legend><%:Network Utilities%></legend>

			<br />

			<div style="width:30%; float:left">
				<input style="margin: 5px 0" type="text" value="openwrt.org" 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="openwrt.org" 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>&#160;</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="openwrt.org" 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%>