diff options
Diffstat (limited to 'modules/admin-full/luasrc/view')
-rw-r--r-- | modules/admin-full/luasrc/view/admin_network/wifi_overview.htm | 110 |
1 files changed, 31 insertions, 79 deletions
diff --git a/modules/admin-full/luasrc/view/admin_network/wifi_overview.htm b/modules/admin-full/luasrc/view/admin_network/wifi_overview.htm index 72fe39ea3e..93ce748f1a 100644 --- a/modules/admin-full/luasrc/view/admin_network/wifi_overview.htm +++ b/modules/admin-full/luasrc/view/admin_network/wifi_overview.htm @@ -17,7 +17,10 @@ $Id$ local sys = require "luci.sys" local utl = require "luci.util" - local uci = require "luci.model.uci".cursor_state() + 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+)") @@ -69,12 +72,10 @@ $Id$ end end - function guess_wifi_signal(info) - local snr = -1 * ((info.noise or 0) - (info.signal or 0)) - local scale = math.floor(snr / 5) + function guess_wifi_signal(scale) local icon - if not info.bssid or info.bssid == "00:00:00:00:00:00" then + if scale < 0 then icon = resource .. "/icons/signal-none.png" elseif scale < 1 then icon = resource .. "/icons/signal-0.png" @@ -91,56 +92,7 @@ $Id$ 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 find_wifi_devices() - local devs = { } - uci:foreach("wireless", "wifi-device", - function(s) - local dev = s['.name'] - local act = 0 - devs[dev] = { active = 0, networks = { } } - - uci:foreach("wireless", "wifi-iface", - function(s) - if s.device == dev then - if s.up == "1" then act = act + 1 end - devs[dev].networks[#devs[dev].networks+1] = { - active = (s.up == "1"), - ifname = s.ifname, - info = sys.wifi.getiwinfo(s.ifname or s.device) - } - end - end) - - devs[dev].hwname = guess_wifi_hw(dev) - devs[dev].active = (act > 0) - end) - - return devs - end - - function find_wifi_frequency(state) - if state and state.active and state.networks[1] and state.networks[1].info then - return string.format("%d (%.03f GHz)", - state.networks[1].info.channel, - state.networks[1].info.frequency / 1000); - else - return "n/a" - end - end - - - local devices = find_wifi_devices() + local devices = wlm:get_devices() local arpcache = { } sys.net.arptable(function(e) arpcache[e["HW address"]] = e["IP address"] end) -%> @@ -151,45 +103,45 @@ $Id$ <div class="cbi-map"> - <% for dev, state in utl.kspairs(devices) do %> - <!-- device <%=dev%> --> + <% for _, dev in ipairs(devices) do local nets = dev:get_networks() %> + <!-- device <%=dev:name()%> --> <fieldset class="cbi-section"> <table class="cbi-section-table" style="margin:10px; empty-cells:hide"> <!-- physical device --> <tr> - <td style="width:34px"><img src="<%=resource%>/icons/wifi<%=state.active and "" or "_disabled"%>.png" style="float:left; margin-right:10px" /></td> + <td style="width:34px"><img src="<%=resource%>/icons/wifi<%=dev:is_up() and "" or "_disabled"%>.png" style="float:left; margin-right:10px" /></td> <td colspan="2" style="text-align:left"> - <big><strong><%=state.hwname%> (<%=dev%>)</strong></big><br /> - <% if state.networks[1] and state.networks[1].info then %> - <strong>Channel:</strong> <%=find_wifi_frequency(state)%> | - <strong>Bitrate:</strong> <%=state.networks[1].info.bitrate and (state.networks[1].info.bitrate / 1000) .. " Mb/s" or "n/a"%> + <big><strong><%=guess_wifi_hw(dev:name())%> (<%=dev:name()%>)</strong></big><br /> + <% if nets[1] then %> + <strong>Channel:</strong> <%=nets[1]:channel() or "?"%> (<%=nets[1]:frequency() or "?"%> GHz) | + <strong>Bitrate:</strong> <%=nets[1]:bitrate() or "?"%> Mb/s <% end %> </td> <td style="width:40px"> - <a href="<%=luci.dispatcher.build_url("admin/network/wireless_join?device="..dev)%>"><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_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="#"><img style="border:none" src="<%=resource%>/cbi/add.gif" alt="Provide new network" title="Provide new network" /></a> </td> </tr> <!-- /physical device --> <!-- network list --> - <% if #state.networks > 0 then %> - <% for i, net in ipairs(state.networks) do %> + <% if #nets > 0 then %> + <% for i, net in ipairs(nets) do %> <tr class="cbi-section-table-row cbi-rowstyle-<%=1 + ((i-1) % 2)%>"> <td></td> <td class="cbi-value-field" style="width:16px; padding:3px"> - <img src="<%=guess_wifi_signal(net.info)%>" title="Signal: <%=net.info.signal or 0%> dBm / Noise: <%=net.info.noise or 0%> dBm" /><br /> - <small><%=percent_wifi_signal(net.info)%>%</small> + <img src="<%=guess_wifi_signal(net:signal_level())%>" title="Signal: <%=net:signal()%> dBm / Noise: <%=net:noise()%> dBm" /><br /> + <small><%=net:signal_percent()%>%</small> </td> <td class="cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px"> - <strong>SSID:</strong> <%=utl.pcdata(net.info.ssid)%> | - <strong>Mode:</strong> <%=net.info.mode%><br /> - <strong>BSSID:</strong> <%=net.info.bssid%> | - <strong>Encryption:</strong> <%=net.info.enctype or "None"%> + <strong>SSID:</strong> <%=utl.pcdata(net:active_ssid())%> | + <strong>Mode:</strong> <%=net:active_mode_i18n()%><br /> + <strong>BSSID:</strong> <%=net:active_bssid()%> | + <strong>Encryption:</strong> <%=net:active_encryption()%> </td> <td class="cbi-value-field" style="width:40px"> - <a href="<%=REQUEST_URI%>/<%=dev%>"><img style="border:none" src="<%=resource%>/cbi/edit.gif" alt="Edit this network" title="Edit this network" /></a> - <a href="#"><img style="border:none" src="<%=resource%>/cbi/remove.gif" alt="Delete this network" title="Delete this network" /></a> + <a href="<%=REQUEST_URI%>/<%=dev:name()%>/<%=net:name()%>"><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:name())%>"><img style="border:none" src="<%=resource%>/cbi/remove.gif" alt="Delete this network" title="Delete this network" /></a> </td> </tr> <% end %> @@ -204,7 +156,7 @@ $Id$ <!-- /network list --> </table> </fieldset> - <!-- /device <%=dev%> --> + <!-- /device <%=dev:name()%> --> <% end %> @@ -224,12 +176,12 @@ $Id$ </tr> <% local count = -1 %> - <% for dev, state in utl.kspairs(devices) do %> - <% for _, net in ipairs(state.networks) do %> - <% for mac, info in utl.kspairs(net.info.assoclist) do info.bssid = mac; count = 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 %> <tr class="cbi-section-table-row cbi-rowstyle-<%=1 + (count % 2)%>"> - <td class="cbi-value-field"><img src="<%=guess_wifi_signal(info)%>" title="Signal: <%=info.signal%> dBm / Noise: <%=info.noise%> dBm" /></td> - <td class="cbi-value-field"><%=net.info.ssid%></td> + <td class="cbi-value-field"><img src="<%=guess_wifi_signal(net:signal_level(info.signal, info.noise))%>" title="Signal: <%=info.signal%> dBm / Noise: <%=info.noise%> dBm" /></td> + <td class="cbi-value-field"><%=net:active_ssid()%></td> <td class="cbi-value-field"><%=mac%></td> <td class="cbi-value-field"><%=arpcache[mac] or "n/a"%></td> <td class="cbi-value-field"><%=info.signal%> dBm</td> |