<%# Copyright 2009-2015 Jo-Philipp Wich Licensed to the public under the Apache License 2.0. -%> <%- 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 then return "WEP" elseif info.wpa > 0 then return translatef("%s - %s", table.concat(info.pair_ciphers, ", "), table.concat(info.group_ciphers, ", "), (info.wpa == 3) and translate("mixed WPA/WPA2") or (info.wpa == 2 and "WPA2" or "WPA"), table.concat(info.auth_suites, ", ") ) elseif info.enabled then return "%s" % translate("unknown") else return "%s" % translate("open") 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 function scanlist(times) local i, k, v local l = { } local s = { } for i = 1, times do for k, v in ipairs(iw.scanlist or { }) do if not s[v.bssid] then l[#l+1] = v s[v.bssid] = true end end end return l end -%> <%+header%>

<%:Join Network: Wireless Scan%>

<% for i, net in ipairs(scanlist(3)) do net.encryption = net.encryption or { } %> <% end %>

<%=percent_wifi_signal(net)%>%
<%=net.ssid and utl.pcdata(net.ssid) or "%s" % translate("hidden")%>
Channel: <%=net.channel%> | Mode: <%=net.mode%> | BSSID: <%=net.bssid%> | Encryption: <%=format_wifi_encryption(net.encryption)%>
<% if net.encryption.wpa then %> <% for _, v in ipairs(net.encryption.auth_suites) do %> <% end; for _, v in ipairs(net.encryption.group_ciphers) do %> <% end; for _, v in ipairs(net.encryption.pair_ciphers) do %> <% end; end %> " />
" method="get">
<%+footer%>