summaryrefslogtreecommitdiffstats
path: root/modules/admin-full/luasrc/view/admin_network/wifi_join.htm
blob: b6204c0dc0cf9ffe5e6b8c5b3f6cc362dc35c3ff (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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<%#
LuCI - Lua Configuration Interface
Copyright 2009 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$

-%>

<%-

	local sys = require "luci.sys"
	local utl = require "luci.util"

	function guess_wifi_signal(info)
		local scale = (100 / (info.quality_max or 100) * (info.quality or 0))
		local icon

		if not info.bssid or info.bssid == "00:00:00:00:00:00" then
			icon = resource .. "/icons/signal-none.png"
		elseif scale < 15 then
			icon = resource .. "/icons/signal-0.png"
		elseif scale < 35 then
			icon = resource .. "/icons/signal-0-25.png"
		elseif scale < 55 then
			icon = resource .. "/icons/signal-25-50.png"
		elseif scale < 75 then
			icon = resource .. "/icons/signal-50-75.png"
		else
			icon = resource .. "/icons/signal-75-100.png"
		end

		return icon
	end

	function percent_wifi_signal(info)
		local qc = info.quality or 0
		local qm = info.quality_max or 0

		if info.bssid and qc > 0 and qm > 0 then
			return math.floor((100 / qm) * qc)
		else
			return 0
		end
	end

	function format_wifi_encryption(info)
		if info.wep == true and not info.wpa_version then
			return "WEP"
		elseif info.wpa then
			return "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>" % {
				table.concat(info.pair_ciphers, ", "),
				table.concat(info.group_ciphers, ", "),
				(info.wpa == 3) and "mixed WPA/WPA2"
					or (info.wpa == 2 and "WPA2" or "WPA"),
				table.concat(info.auth_suites, ", ")
			}
		else
			return "<em>None</em>"
		end
	end

	local dev = luci.http.formvalue("device")
	local iw = luci.sys.wifi.getiwinfo(dev)

	if not iw then
		luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless"))
		return
	end
-%>

<%+header%>

<h2><a id="content" name="content"><%:Join Network: Wireless Scan%></a></h2>

<div class="cbi-map">
	<fieldset class="cbi-section">
		<table class="cbi-section-table" style="empty-cells:hide">
			<!-- scan list -->
			<% for i, net in ipairs(iw.scanlist) do net.encryption = net.encryption or { } %>
			<tr class="cbi-section-table-row cbi-rowstyle-<%=1 + ((i-1) % 2)%>">
				<td class="cbi-value-field" style="width:16px; padding:3px">
					<abbr title="Signal: <%=net.signal%> dB / Quality: <%=net.quality%>/<%=net.quality_max%>">
						<img src="<%=guess_wifi_signal(net)%>" /><br />
						<small><%=percent_wifi_signal(net)%>%</small>
					</abbr>
				</td>
				<td class="cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px">
					<big><strong><%=net.ssid and utl.pcdata(net.ssid) or "<em>hidden</em>"%></strong></big><br />
					<strong>Channel:</strong> <%=net.channel%> |
					<strong>Mode:</strong> <%=net.mode%> |
					<strong>BSSID:</strong> <%=net.bssid%> |
					<strong>Encryption:</strong> <%=net.encryption.description or translate("Open")%>
				</td>
				<td class="cbi-value-field" style="width:40px">
					<form action="<%=REQUEST_URI%>" method="post">
						<input type="hidden" name="device" value="<%=utl.pcdata(dev)%>" />
						<input type="hidden" name="join" value="<%=utl.pcdata(net.ssid)%>" />
						<input type="hidden" name="mode" value="<%=net.mode%>" />
						<input type="hidden" name="bssid" value="<%=net.bssid%>" />
						<input type="hidden" name="channel" value="<%=net.channel%>" />
						<input type="hidden" name="wep" value="<%=net.encryption.wep and 1 or 0%>" />
						<% if net.encryption.wpa then %>
						<input type="hidden" name="wpa_version" value="<%=net.encryption.wpa%>" />
						<% for _, v in ipairs(net.encryption.auth_suites) do %><input type="hidden" name="wpa_suites" value="<%=v%>" />
						<% end; for _, v in ipairs(net.encryption.group_ciphers) do %><input type="hidden" name="wpa_group" value="<%=v%>" />
						<% end; for _, v in ipairs(net.encryption.pair_ciphers) do %><input type="hidden" name="wpa_pairwise" value="<%=v%>" />
						<% end; end %>

						<input type="hidden" name="clbridge" value="<%=iw.type == "wl" and 1 or 0%>" />

						<input class="cbi-button cbi-button-apply" type="submit" value="<%:Join Network%>" />
					</form>
				</td>
			</tr>
			<% end %>
			<!-- /scan list -->
		</table>
	</fieldset>
</div>
<div class="cbi-page-actions right">
	<form class="inline" action="<%=luci.dispatcher.build_url("admin/network/wireless")%>" method="get">
		<input class="cbi-button cbi-button-reset" type="submit" value="<%:Back to overview%>" />
	</form>
	<form class="inline" action="<%=REQUEST_URI%>" method="get">
		<input type="hidden" name="device" value="<%=utl.pcdata(dev)%>" />
		<input class="cbi-button cbi-input-find" type="submit" value="<%:Repeat scan%>" />
	</form>
</div>

<%+footer%>