<%# LuCI - Lua Configuration Interface Copyright 2009 Jo-Philipp Wich 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 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, old local l = { } local new = { } local networks = { } local found = false for i = 1, times do for k, v in ipairs(iw.scanlist or { }) do new['bssid'] = v.bssid new['channel'] = v.channel found = false for _, old in ipairs(networks) do if old.bssid == new.bssid and old.channel == new.channel then found = true break end end if not found then l[#l+1] = v networks[#networks+1] = { } networks[#networks]['bssid'] = new.bssid networks[#networks]['channel'] = new.channel 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%>