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 Wireless Controller"
+ local name = "Broadcom 802.11%s Wireless Controller" % bands
local nm = 0
local fd = nixio.open("/proc/bus/pci/devices", "r")
-- madwifi
elseif name == "ath" or name == "wifi" then
- return "Atheros 802.11 Wireless Controller"
+ return "Atheros 802.11%s Wireless Controller" % bands
-- ralink
elseif name == "ra" then
- return "RaLink 802.11 Wireless Controller"
+ return "RaLink 802.11%s Wireless Controller" % bands
-- prism?
elseif name == "eth" then
- return "Prism 802.11 Wireless Controller"
+ return "Prism 802.11%s Wireless Controller" % bands
-- dunno yet
else
- return "Generic 802.11 Wireless Controller"
+ return "Generic 802.11%s Wireless Controller" % bands
end
end
<%+header%>
+<% if not has_iwinfo then %>
+ <div class="errorbox">
+ <strong><%:Package libiwinfo required!%></strong><br />
+ <%_The <em>libiwinfo</em> package is not installed. You must install this component for working wireless configuration!%>
+ </div>
+<% end %>
+
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
-<script type="text/javascript"><![CDATA[
+<script type="text/javascript">//<![CDATA[
var iwxhr = new XHR();
var wifidevs = <%=luci.http.write_json(netdevs)%>;
var arptable = <%=luci.http.write_json(arpcache)%>;
- (function() {
+ var update_status = function() {
iwxhr.get('<%=luci.dispatcher.build_url("admin", "network", "wireless_status", table.concat(netlist, ","))%>', null,
- function(x)
+ function(x, st)
{
- var st = x.responseText ? eval('(' + x.responseText + ')') : null;
if (st)
{
var assoctable = document.getElementById('iw-assoclist');
{
var img = document.getElementById(dev + '-iw-upstate');
if (img)
- img.src = '<%=resource%>/icons/wifi' + (devup[dev] ? '' : '_disabled') + '.png';
+ img.src = '<%=resource%>/icons/wifi_big' + (devup[dev] ? '' : '_disabled') + '.png';
}
}
+
+ window.setTimeout(update_status, 5000);
}
)
+ };
- window.setTimeout(arguments.callee, 5000);
- })();
-]]></script>
+ update_status();
+//]]></script>
<h2><a id="content" name="content"><%:Wireless Overview%></a></h2>
<table class="cbi-section-table" style="margin:10px; empty-cells:hide">
<!-- physical device -->
<tr>
- <td style="width:34px"><img src="<%=resource%>/icons/wifi_disabled.png" style="float:left; margin-right:10px" id="<%=dev:name()%>-iw-upstate" /></td>
+ <td style="width:34px"><img src="<%=resource%>/icons/wifi_big_disabled.png" style="float:left; margin-right:10px" id="<%=dev:name()%>-iw-upstate" /></td>
<td colspan="2" style="text-align:left">
<big><strong><%=guess_wifi_hw(dev:name())%> (<%=dev:name()%>)</strong></big><br />
<span id="<%=dev:name()%>-iw-devinfo"></span>
</td>
<td style="width:40px">
- <a href="<%=luci.dispatcher.build_url("admin/network/wireless_join?device="..dev:name())%>"><img style="border:none" src="<%=resource%>/cbi/find.gif" alt="Find and join network" title="Find and join network" /></a>
- <a href="<%=luci.dispatcher.build_url("admin/network/wireless_add?device="..dev:name())%>"><img style="border:none" src="<%=resource%>/cbi/add.gif" alt="Provide new network" title="Provide new network" /></a>
+ <a href="<%=luci.dispatcher.build_url("admin/network/wireless_join")%>?device=<%=dev:name()%>"><img style="border:none" src="<%=resource%>/cbi/find.gif" alt="<%:Find and join network%>" title="<%:Find and join network%>" /></a>
+ <a href="<%=luci.dispatcher.build_url("admin/network/wireless_add")%>?device=<%=dev:name()%>"><img style="border:none" src="<%=resource%>/cbi/add.gif" alt="<%:Provide new network%>" title="<%:Provide new network%>" /></a>
</td>
</tr>
<!-- /physical device -->
<em><%:Collecting data...%></em>
</td>
<td class="cbi-value-field" style="width:40px">
- <a href="<%=net:adminlink()%>"><img style="border:none" src="<%=resource%>/cbi/edit.gif" alt="Edit this network" title="Edit this network" /></a>
- <a href="<%=luci.dispatcher.build_url("admin/network/wireless_delete", net:ifname())%>"><img style="border:none" src="<%=resource%>/cbi/remove.gif" alt="Delete this network" title="Delete this network" /></a>
+ <a href="<%=net:adminlink()%>"><img style="border:none" src="<%=resource%>/cbi/edit.gif" alt="<%:Edit this network%>" title="<%:Edit this network%>" /></a>
+ <a href="<%=luci.dispatcher.build_url("admin/network/wireless_delete", net:ifname())%>" onclick="return confirm('<%:Really delete this wireless network? The deletion cannot be undone!\nYou might loose access to this router if you are connected via this network.%>')"><img style="border:none" src="<%=resource%>/cbi/remove.gif" alt="<%:Delete this network%>" title="<%:Delete this network%>" /></a>
</td>
</tr>
<% end %>
<tr class="cbi-section-table-row cbi-rowstyle-2">
<td></td>
<td colspan="3" class="cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px">
- <em>(No network configured on this device)</em>
+ <em><%:No network configured on this device%></em>
</td>
</tr>
<% end %>