2 LuCI - Network model - Wireless extension
4 Copyright 2009 Jo-Philipp Wich <xm@subsignal.org>
6 Licensed under the Apache License, Version 2.0 (the "License");
7 you may not use this file except in compliance with the License.
8 You may obtain a copy of the License at
10 http://www.apache.org/licenses/LICENSE-2.0
12 Unless required by applicable law or agreed to in writing, software
13 distributed under the License is distributed on an "AS IS" BASIS,
14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 See the License for the specific language governing permissions and
16 limitations under the License.
20 local pairs, i18n, uci = pairs, luci.i18n, luci.model.uci
22 local iwi = require "iwinfo"
23 local utl = require "luci.util"
24 local uct = require "luci.model.uci.bind"
26 module "luci.model.network.wireless"
28 local ub = uct.bind("wireless")
31 function init(self, cursor)
32 cursor:unload("wireless")
33 cursor:load("wireless")
36 st = uci.cursor_state()
41 ub.uci:foreach("wireless", "wifi-iface",
45 local device = s.device or "wlan0"
46 local state = st:get_all("wireless", s['.name'])
47 local name = state.ifname or device .. ".network" .. count
49 ifs[state and state.ifname or name] = {
51 name = state and state.ifname or name,
52 rawname = state and state.ifname or name,
66 function shortname(self, iface)
67 if iface.dev and iface.dev.wifi then
69 i18n.translate("a_s_if_iwmode_" .. (iface.dev.wifi.mode or "ap")),
70 iface.dev.wifi.ssid or iface.dev.wifi.bssid or "(hidden)"
77 function get_i18n(self, iface)
78 if iface.dev and iface.dev.wifi then
80 i18n.translate("a_s_if_wifinet", "Wireless Network"),
81 i18n.translate("a_s_if_iwmode_" .. (iface.dev.wifi.mode or "ap"), iface.dev.wifi.mode or "AP"),
82 iface.dev.wifi.ssid or iface.dev.wifi.bssid or "(hidden)"
85 return "%s: %q" %{ i18n.translate("a_s_if_wifinet", "Wireless Network"), iface:name() }
89 function rename_network(self, old, new)
91 for i, _ in pairs(ifs) do
92 if ifs[i].network == old then
97 ub.uci:foreach("wireless", "wifi-iface",
99 if s.network == old then
101 ub.uci:set("wireless", s['.name'], "network", new)
103 ub.uci:delete("wireless", s['.name'], "network")
109 function del_network(self, old)
110 return self:rename_network(old, nil)
113 function find_interfaces(self, iflist, brlist)
115 for iface, _ in pairs(ifs) do
116 iflist[iface] = ifs[iface]
120 function ignore_interface(self, iface)
121 if ifs and ifs[iface] then
124 return iwi.type(iface) and true or false
128 function add_interface(self, net, iface)
129 if ifs and ifs[iface] and ifs[iface].sid then
130 ub.uci:set("wireless", ifs[iface].sid, "network", net:name())
131 ifs[iface].network = net:name()
138 function del_interface(self, net, iface)
139 if ifs and ifs[iface] and ifs[iface].sid then
140 ub.uci:delete("wireless", ifs[iface].sid, "network")