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 = device .. ".network" .. count
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(iface.dev.wifi.mode or "Client"),
70 iface.dev.wifi.ssid or iface.dev.wifi.bssid
71 or i18n.translate("(hidden)")
78 function get_i18n(self, iface)
79 if iface.dev and iface.dev.wifi then
81 i18n.translate("Wireless Network"),
82 i18n.translate(iface.dev.wifi.mode or "Client"),
83 iface.dev.wifi.ssid or iface.dev.wifi.bssid
84 or i18n.translate("(hidden)")
87 return "%s: %q" %{ i18n.translate("Wireless Network"), iface:name() }
91 function rename_network(self, old, new)
93 for i, _ in pairs(ifs) do
94 if ifs[i].network == old then
99 ub.uci:foreach("wireless", "wifi-iface",
101 if s.network == old then
103 ub.uci:set("wireless", s['.name'], "network", new)
105 ub.uci:delete("wireless", s['.name'], "network")
111 function del_network(self, old)
112 return self:rename_network(old, nil)
115 function find_interfaces(self, iflist, brlist)
117 for iface, _ in pairs(ifs) do
118 iflist[iface] = ifs[iface]
122 function ignore_interface(self, iface)
123 if ifs and ifs[iface] then
126 return iwi.type(iface) and true or false
130 function add_interface(self, net, iface)
131 if ifs and ifs[iface] and ifs[iface].sid then
132 ub.uci:set("wireless", ifs[iface].sid, "network", net:name())
133 ifs[iface].network = net:name()
140 function del_interface(self, net, iface)
141 if ifs and ifs[iface] and ifs[iface].sid then
142 ub.uci:delete("wireless", ifs[iface].sid, "network")