<%# LuCI - Lua Configuration Interface Copyright 2008-2009 Steven Barth Copyright 2008-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" local uci = require "luci.model.uci".cursor() local wlm = require "luci.model.wireless" wlm.init(uci) function guess_wifi_hw(ifname) local name, idx = ifname:match("^([a-z]+)(%d+)") idx = tonumber(idx) -- wl.o if name == "wl" then local name = "Broadcom 802.11 Wireless Controller" local nm = 0 local fd = nixio.open("/proc/bus/pci/devices", "r") if fd then local ln for ln in fd:linesource() do if ln:match("wl$") then if nm == idx then local version = ln:match("^%S+%s+%S%S%S%S([0-9a-f]+)") name = string.format( "Broadcom BCM%04x 802.11 Wireless Controller", tonumber(version, 16) ) break else nm = nm + 1 end end end fd:close() end return name -- madwifi elseif name == "ath" or name == "wifi" then return "Atheros 802.11 Wireless Controller" -- ralink elseif name == "ra" then return "RaLink 802.11 Wireless Controller" -- prism? elseif name == "eth" then return "Prism 802.11 Wireless Controller" -- dunno yet else return "Generic 802.11 Wireless Controller" end end function guess_wifi_signal(scale) local icon if scale < 0 then icon = resource .. "/icons/signal-none.png" elseif scale < 1 then icon = resource .. "/icons/signal-0.png" elseif scale < 2 then icon = resource .. "/icons/signal-0-25.png" elseif scale < 3 then icon = resource .. "/icons/signal-25-50.png" elseif scale < 4 then icon = resource .. "/icons/signal-50-75.png" else icon = resource .. "/icons/signal-75-100.png" end return icon end local devices = wlm:get_devices() local arpcache = { } sys.net.arptable(function(e) arpcache[e["HW address"]] = e["IP address"] end) -%> <%+header%>

<%:a_s_iw_overview Wireless Overview%>

<% for _, dev in ipairs(devices) do local nets = dev:get_networks() %>
<% if #nets > 0 then %> <% for i, net in ipairs(nets) do %> <% end %> <% else %> <% end %>
.png" style="float:left; margin-right:10px" /> <%=guess_wifi_hw(dev:name())%> (<%=dev:name()%>)
<% if nets[1] then %> Channel: <%=nets[1]:channel() or "?"%> (<%=nets[1]:frequency() or "?"%> GHz) | Bitrate: <%=nets[1]:bitrate() or "?"%> Mb/s <% end %>
Find and join network Provide new network

<%=net:signal_percent()%>%
SSID: <%=utl.pcdata(net:active_ssid())%> | Mode: <%=net:active_mode_i18n()%>
BSSID: <%=net:active_bssid()%> | Encryption: <%=net:active_encryption()%>
Edit this network ">Delete this network
(No network configured on this device)
<% end %>

<%:a_s_iw_overview2 Associated Stations%>

<% local count = -1 %> <% for _, dev in ipairs(devices) do local nets = dev:get_networks() %> <% for _, net in ipairs(nets) do %> <% for mac, info in utl.kspairs(net:assoclist()) do count = count + 1 %> <% end %> <% end %> <% end %> <% if count <= 0 then %> <% end %>
SSID MAC Address Signal Noise
<%=net:active_ssid()%> <%=mac%> <%=arpcache[mac] or "n/a"%> <%=info.signal%> dBm <%=info.noise%> dBm
No information available
<%+footer%>