<%# LuCI - Lua Configuration Interface Copyright 2008-2009 Steven Barth Copyright 2008-2011 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 fs = require "luci.fs" local utl = require "luci.util" local uci = require "luci.model.uci".cursor() local ntm = require "luci.model.network" local has_iwinfo = pcall(require, "iwinfo") ntm.init(uci) function guess_wifi_hw(ifname) local bands = "" local name, idx = ifname:match("^([a-z]+)(%d+)") idx = tonumber(idx) if has_iwinfo then local iw = luci.sys.wifi.getiwinfo(ifname) local bl = iw.hwmodelist if bl and next(bl) then if bl.a then bands = bands .. "a" end if bl.b then bands = bands .. "b" end if bl.g then bands = bands .. "g" end if bl.n then bands = bands .. "n" end end end -- wl.o if name == "wl" then local name = "Broadcom 802.11%s Wireless Controller" % bands 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%s Wireless Controller" % bands -- ralink elseif name == "ra" then return "RaLink 802.11%s Wireless Controller" % bands -- hermes elseif name == "eth" then return "Hermes 802.11b Wireless Controller" -- hostap elseif name == "wlan" and fs.isdirectory("/proc/net/hostap/" .. ifname) then return "Prism2/2.5/3 802.11b Wireless Controller" -- dunno yet else return "Generic 802.11%s Wireless Controller" % bands end end local devices = ntm:get_wifidevs() local arpcache = { } sys.net.arptable(function(e) arpcache[e["HW address"]:upper()] = e["IP address"] end) local netlist = { } local netdevs = { } local dev for _, dev in ipairs(devices) do local net for _, net in ipairs(dev:get_wifinets()) do netlist[#netlist+1] = net:id() netdevs[net:id()] = dev:name() end end -%> <%+header%> <% if not has_iwinfo then %>
<%:Package libiwinfo required!%>
<%_The libiwinfo package is not installed. You must install this component for working wireless configuration!%>
<% end %>

<%:Wireless Overview%>

<% for _, dev in ipairs(devices) do local nets = dev:get_wifinets() %>
<% if #nets > 0 then %> <% for i, net in ipairs(nets) do %> <% end %> <% else %> <% end %>
<%=guess_wifi_hw(dev:name())%> (<%=dev:name()%>)
?device=<%=dev:name()%>'" title="<%:Find and join network%>" value="<%:Scan%>" /> ?device=<%=dev:name()%>'" title="<%:Provide new network%>" value="<%:Add%>" />

0%
<%:Collecting data...%> '" title="<%:Delete this network%>" value="<%:Remove%>" />
<%:No network configured on this device%>
<% end %>

<%:Associated Stations%>

<%:SSID%> <%:MAC%> <%:Address%> <%:Signal%> <%:Noise%>
<%:Collecting data...%>
<%+footer%>