diff options
author | Steven Barth <steven@midlink.org> | 2008-08-18 00:38:18 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-08-18 00:38:18 +0000 |
commit | 0c3fc70ddbf3f0fc0dcbb5d7c05285b0b2d12ccb (patch) | |
tree | f5c3216521c20271c776c13e52f40cf16dc1a6c3 | |
parent | 39444086375b7451952b273b8c53ff48b6766706 (diff) |
Huuuuuuuuuuuge rewrite of the Wireless Configuration
-rw-r--r-- | i18n/english/luasrc/i18n/admin-core.en.lua | 4 | ||||
-rw-r--r-- | i18n/english/luasrc/i18n/default.en.lua | 1 | ||||
-rw-r--r-- | i18n/german/luasrc/i18n/admin-core.de.lua | 4 | ||||
-rw-r--r-- | i18n/german/luasrc/i18n/default.de.lua | 1 | ||||
-rw-r--r-- | libs/cbi/luasrc/view/cbi/button.htm | 6 | ||||
-rw-r--r-- | libs/cbi/luasrc/view/cbi/nullsection.htm | 3 | ||||
-rw-r--r-- | libs/cbi/luasrc/view/cbi/tblsection.htm | 8 | ||||
-rw-r--r-- | libs/sys/luasrc/sys.lua | 7 | ||||
-rw-r--r-- | modules/admin-full/luasrc/controller/admin/network.lua | 17 | ||||
-rw-r--r-- | modules/admin-full/luasrc/controller/admin/wifi.lua | 34 | ||||
-rw-r--r-- | modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua (renamed from modules/admin-full/luasrc/model/cbi/admin_wifi/networks.lua) | 54 | ||||
-rw-r--r-- | modules/admin-full/luasrc/model/cbi/admin_network/wireless.lua | 135 | ||||
-rw-r--r-- | modules/admin-full/luasrc/model/cbi/admin_wifi/devices.lua | 57 | ||||
-rw-r--r-- | modules/admin-full/luasrc/view/admin_wifi/index.htm | 20 |
14 files changed, 226 insertions, 125 deletions
diff --git a/i18n/english/luasrc/i18n/admin-core.en.lua b/i18n/english/luasrc/i18n/admin-core.en.lua index 4a47e4f1d..c3552f069 100644 --- a/i18n/english/luasrc/i18n/admin-core.en.lua +++ b/i18n/english/luasrc/i18n/admin-core.en.lua @@ -287,4 +287,6 @@ a_w_tlsprivkey = "Path to Private Key" a_w_tlsprivkeypwd = "Password of Private Key" a_w_peapauth = "PEAP-Authentication" a_w_peapidentity = "PEAP-Identity" -a_w_peappassword = "PEAP-Password"
\ No newline at end of file +a_w_peappassword = "PEAP-Password" + +a_w_create = "Create Network"
\ No newline at end of file diff --git a/i18n/english/luasrc/i18n/default.en.lua b/i18n/english/luasrc/i18n/default.en.lua index 6a57073b5..f57da7f35 100644 --- a/i18n/english/luasrc/i18n/default.en.lua +++ b/i18n/english/luasrc/i18n/default.en.lua @@ -70,6 +70,7 @@ reset = [[Reset]] revert = [[Revert]] save = [[Save]] saveapply = [[Save & Apply]] +scan = [[Scan]] service = [[Service]] services = [[Services]] settings = [[Settings]] diff --git a/i18n/german/luasrc/i18n/admin-core.de.lua b/i18n/german/luasrc/i18n/admin-core.de.lua index c71dfc1de..db989047e 100644 --- a/i18n/german/luasrc/i18n/admin-core.de.lua +++ b/i18n/german/luasrc/i18n/admin-core.de.lua @@ -362,4 +362,6 @@ a_w_tlsprivkey = "Pfad zum Privaten Schlüssel" a_w_tlsprivkeypwd = "Passwort des Privaten Schlüssels" a_w_peapauth = "PEAP-Authentifizierung" a_w_peapidentity = "PEAP-Identitäz" -a_w_peappassword = "PEAP-Passwort"
\ No newline at end of file +a_w_peappassword = "PEAP-Passwort" + +a_w_create = "Netzwerk anlegen"
\ No newline at end of file diff --git a/i18n/german/luasrc/i18n/default.de.lua b/i18n/german/luasrc/i18n/default.de.lua index 078c1e8d3..bff0203e6 100644 --- a/i18n/german/luasrc/i18n/default.de.lua +++ b/i18n/german/luasrc/i18n/default.de.lua @@ -88,6 +88,7 @@ revert = "Verwerfen" save = "Speichern" saveapply = "Speichern & Anwenden" +scan = "Scan" service = "Dienst" services = "Dienste" settings = "Einstellungen" diff --git a/libs/cbi/luasrc/view/cbi/button.htm b/libs/cbi/luasrc/view/cbi/button.htm index 2d740f45c..c2a0d437e 100644 --- a/libs/cbi/luasrc/view/cbi/button.htm +++ b/libs/cbi/luasrc/view/cbi/button.htm @@ -13,5 +13,9 @@ $Id$ -%> <%+cbi/valueheader%> - <input<% if self.inputstyle then %> class="cbi-input-<%=self.inputstyle%>"<% end %> type="submit"<%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.title) %> /> + <% if self:cfgvalue(section) ~= false then %> + <input<% if self.inputstyle then %> class="cbi-input-<%=self.inputstyle%>"<% end %> type="submit"<%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.title)%> /> + <% else %> + - + <% end %> <%+cbi/valuefooter%> diff --git a/libs/cbi/luasrc/view/cbi/nullsection.htm b/libs/cbi/luasrc/view/cbi/nullsection.htm index b01a6a9f5..476db96d8 100644 --- a/libs/cbi/luasrc/view/cbi/nullsection.htm +++ b/libs/cbi/luasrc/view/cbi/nullsection.htm @@ -13,6 +13,9 @@ $Id$ -%> <fieldset class="cbi-section"> + <% if self.title and #self.title > 0 then -%> + <legend><%=self.title%></legend> + <%- end %> <div class="cbi-section-node"> <% self:render_children(1, scope or {}) %> </div> diff --git a/libs/cbi/luasrc/view/cbi/tblsection.htm b/libs/cbi/luasrc/view/cbi/tblsection.htm index d03d6f497..66de5aeb2 100644 --- a/libs/cbi/luasrc/view/cbi/tblsection.htm +++ b/libs/cbi/luasrc/view/cbi/tblsection.htm @@ -76,7 +76,13 @@ end <%- if self.extedit or self.addremove then -%> <td class="cbi-section-table-cell"> <%- if self.extedit then -%> - <a href="<%=self.extedit:format(section)%>" title="<%:edit%>"><img style="border: none" src="<%=resource%>/cbi/edit.gif" alt="<%:edit%>" /></a> + <a href=" + <%- if type(self.extedit) == "string" then -%> + <%=self.extedit:format(section)%> + <%- elseif type(self.extedit) == "function" then -%> + <%=self:extedit(section)%> + <%- end -%> + " title="<%:edit%>"><img style="border: none" src="<%=resource%>/cbi/edit.gif" alt="<%:edit%>" /></a> <%- end; if self.addremove then %> <input type="image" value="<%:cbi_del%>" name="cbi.rts.<%=self.config%>.<%=k%>" alt="<%:cbi_del%>" title="<%:cbi_del%>" src="<%=resource%>/cbi/remove.gif" /> <%- end -%> diff --git a/libs/sys/luasrc/sys.lua b/libs/sys/luasrc/sys.lua index 970dcffaa..d0dc5acbd 100644 --- a/libs/sys/luasrc/sys.lua +++ b/libs/sys/luasrc/sys.lua @@ -432,8 +432,9 @@ end --- Get iwlist scan output from all wireless devices. -- @return Table of tables contaiing all scan results -function wifi.iwscan() - local cnt = luci.util.exec("iwlist scan 2>/dev/null") +function wifi.iwscan(iface) + local siface = iface or "" + local cnt = luci.util.exec("iwlist "..siface.." scan 2>/dev/null") local iws = {} for i, l in pairs(luci.util.split(luci.util.trim(cnt), "\n\n")) do @@ -451,7 +452,7 @@ function wifi.iwscan() end end - return iws + return iface and (iws[iface] or {}) or iws end diff --git a/modules/admin-full/luasrc/controller/admin/network.lua b/modules/admin-full/luasrc/controller/admin/network.lua index 3952fb868..23a575852 100644 --- a/modules/admin-full/luasrc/controller/admin/network.lua +++ b/modules/admin-full/luasrc/controller/admin/network.lua @@ -28,6 +28,23 @@ function index() page.title = i18n("a_n_switch") page.order = 20 + local page = node("admin", "network", "wireless") + page.target = form("admin_network/wireless") + page.title = i18n("wifi") + page.order = 15 + luci.model.uci.foreach("wireless", "wifi-device", + function (section) + local ifc = section[".name"] + entry({"admin", "network", "wireless", ifc}, + alias("admin", "network", "wifi", ifc), + ifc:upper()) + end + ) + + local page = node("admin", "network", "wifi") + page.target = cbi("admin_network/wifi") + page.leaf = true + local page = node("admin", "network", "network") page.target = cbi("admin_network/network") page.title = i18n("interfaces", "Schnittstellen") diff --git a/modules/admin-full/luasrc/controller/admin/wifi.lua b/modules/admin-full/luasrc/controller/admin/wifi.lua deleted file mode 100644 index 4bef0b7a5..000000000 --- a/modules/admin-full/luasrc/controller/admin/wifi.lua +++ /dev/null @@ -1,34 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright 2008 Steven Barth <steven@midlink.org> - -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$ -]]-- -module("luci.controller.admin.wifi", package.seeall) - -function index() - luci.i18n.loadc("admin-core") - local i18n = luci.i18n.translate - - local page = node("admin", "wifi") - page.target = template("admin_wifi/index") - page.title = i18n("wifi", "Drahtlos") - page.order = 60 - - local page = node("admin", "wifi", "devices") - page.target = cbi("admin_wifi/devices") - page.title = i18n("devices", "Geräte") - page.order = 10 - - local page = node("admin", "wifi", "networks") - page.target = cbi("admin_wifi/networks") - page.title = i18n("networks", "Netze") - page.order = 20 -end
\ No newline at end of file diff --git a/modules/admin-full/luasrc/model/cbi/admin_wifi/networks.lua b/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua index a109587d9..64a492879 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_wifi/networks.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua @@ -12,20 +12,60 @@ You may obtain a copy of the License at $Id$ ]]-- require("luci.tools.webadmin") +arg[1] = arg[1] or "" + m = Map("wireless", translate("networks"), translate("a_w_networks1")) -s = m:section(TypedSection, "wifi-iface", "") +s = m:section(NamedSection, arg[1], "wifi-device", translate("device") .. " " .. arg[1]) +--s.addremove = true + +en = s:option(Flag, "disabled", translate("enable")) +en.enabled = "0" +en.disabled = "1" + +function en.cfgvalue(self, section) + return Flag.cfgvalue(self, section) or "0" +end + +t = s:option(DummyValue, "type", translate("type")) + +mode = s:option(ListValue, "mode", translate("mode")) +mode:value("", "standard") +mode:value("11b", "802.11b") +mode:value("11g", "802.11g") +mode:value("11a", "802.11a") +mode:value("11bg", "802.11b+g") +mode.rmempty = true + +s:option(Value, "channel", translate("a_w_channel")) + +s:option(Value, "txantenna", translate("a_w_txantenna")).optional = true + +s:option(Value, "rxantenna", translate("a_w_rxantenna")).optional = true + +s:option(Value, "distance", translate("distance"), + translate("a_w_distance1")).optional = true + +s:option(Value, "diversity", translate("a_w_diversity")):depends("type", "atheros") + +country = s:option(Value, "country", translate("a_w_countrycode")) +country.optional = true +country:depends("type", "broadcom") + +maxassoc = s:option(Value, "maxassoc", translate("a_w_connlimit")) +maxassoc:depends("type", "broadcom") +maxassoc.optional = true + + + +s = m:section(TypedSection, "wifi-iface", translate("interfaces")) s.addremove = true s.anonymous = true +s:depends("device", arg[1]) +s.defaults.device = arg[1] s:option(Value, "ssid", translate("a_w_netid")).maxlength = 32 -device = s:option(ListValue, "device", translate("device")) -luci.model.uci.foreach("wireless", "wifi-device", - function (section) - device:value(section[".name"]) - end) - network = s:option(ListValue, "network", translate("network"), translate("a_w_network1")) network:value("") luci.tools.webadmin.cbi_add_networks(network) diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/wireless.lua b/modules/admin-full/luasrc/model/cbi/admin_network/wireless.lua new file mode 100644 index 000000000..ae2462838 --- /dev/null +++ b/modules/admin-full/luasrc/model/cbi/admin_network/wireless.lua @@ -0,0 +1,135 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2008 Steven Barth <steven@midlink.org> +Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net> + +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$ +]]-- +require("luci.sys") +require("luci.tools.webadmin") + +luci.model.uci.load_state("wireless") +local wireless = luci.model.uci.get_all("wireless") +luci.model.uci.unload("wireless") + +local wifidata = luci.sys.wifi.getiwconfig() +local ifaces = {} + +for k, v in pairs(wireless) do + if v[".type"] == "wifi-iface" then + table.insert(ifaces, v) + end +end + + +m = SimpleForm("wireless", translate("wifi")) + +s = m:section(Table, ifaces, translate("networks")) + +function s.extedit(self, section) + local device = self.map:get(section, "device") or "" + return luci.http.getenv("REQUEST_URI") .. "/" .. device +end + +link = s:option(DummyValue, "_link", translate("link")) +function link.cfgvalue(self, section) + local ifname = self.map:get(section, "ifname") + return wifidata[ifname] and wifidata[ifname]["Link Quality"] or "-" +end + +essid = s:option(DummyValue, "ssid", "ESSID") + +bssid = s:option(DummyValue, "_bsiid", "BSSID") +function bssid.cfgvalue(self, section) + local ifname = self.map:get(section, "ifname") + return (wifidata[ifname] and (wifidata[ifname].Cell + or wifidata[ifname]["Access Point"])) or "-" +end + +channel = s:option(DummyValue, "channel", translate("channel")) +function channel.cfgvalue(self, section) + return wireless[self.map:get(section, "device")].channel +end + +protocol = s:option(DummyValue, "_mode", translate("protocol")) +function protocol.cfgvalue(self, section) + return "802." .. wireless[self.map:get(section, "device")].mode +end + +mode = s:option(DummyValue, "mode", translate("mode")) +encryption = s:option(DummyValue, "encryption", translate("iwscan_encr")) + +power = s:option(DummyValue, "_power", translate("power")) +function power.cfgvalue(self, section) + local ifname = self.map:get(section, "ifname") + return wifidata[ifname] and wifidata[ifname]["Tx-Power"] or "-" +end + +scan = s:option(Button, "_scan", translate("scan")) +scan.inputstyle = "find" + +function scan.cfgvalue(self, section) + return self.map:get(section, "ifname") or false +end + +t2 = m:section(Table, {}, translate("iwscan"), translate("iwscan1")) + +function scan.write(self, section) + t2.render = t2._render + local ifname = self.map:get(section, "ifname") + luci.util.update(t2.data, luci.sys.wifi.iwscan(ifname)) +end + +t2._render = t2.render +t2.render = function() end + +t2:option(DummyValue, "Quality", translate("iwscan_link")) +essid = t2:option(DummyValue, "ESSID", "ESSID") +function essid.cfgvalue(self, section) + return luci.util.pcdata(self.map:get(section, "ESSID")) +end + +t2:option(DummyValue, "Address", "BSSID") +t2:option(DummyValue, "Mode", translate("mode")) +chan = t2:option(DummyValue, "channel", translate("channel")) +function chan.cfgvalue(self, section) + return self.map:get(section, "Channel") + or self.map:get(section, "Frequency") + or "-" +end + +t2:option(DummyValue, "Encryption key", translate("iwscan_encr")) + +t2:option(DummyValue, "Signal level", translate("iwscan_signal")) + +t2:option(DummyValue, "Noise level", translate("iwscan_noise")) + + +s2 = m:section(SimpleSection, translate("a_w_create")) +create = s2:option(ListValue, "create", translate("device")) +create:value("", translate("cbi_select")) +for k, v in pairs(wireless) do + if v[".type"] == "wifi-device" then + create:value(k) + end +end + +function create.write(self, section, value) + luci.model.uci.load_config("wireless") + luci.model.uci.section("wireless", "wifi-iface", nil, {device=value}) + luci.model.uci.save_config("wireless") + luci.http.redirect(luci.http.getenv("REQUEST_URI") .. "/" .. value) +end + +function create.cbid(self, section) + return "priv.cbid.create" +end + +return m
\ No newline at end of file diff --git a/modules/admin-full/luasrc/model/cbi/admin_wifi/devices.lua b/modules/admin-full/luasrc/model/cbi/admin_wifi/devices.lua deleted file mode 100644 index e33f24161..000000000 --- a/modules/admin-full/luasrc/model/cbi/admin_wifi/devices.lua +++ /dev/null @@ -1,57 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright 2008 Steven Barth <steven@midlink.org> - -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$ -]]-- -m = Map("wireless", translate("devices"), translate("a_w_devices1", - "An dieser Stelle können eingebaute WLAN-Geräte konfiguriert werden.")) - -s = m:section(TypedSection, "wifi-device", "") ---s.addremove = true - -en = s:option(Flag, "disabled", translate("enable")) -en.enabled = "0" -en.disabled = "1" - -function en.cfgvalue(self, section) - return Flag.cfgvalue(self, section) or "0" -end - -t = s:option(DummyValue, "type", translate("type")) - -mode = s:option(ListValue, "mode", translate("mode")) -mode:value("", "standard") -mode:value("11b", "802.11b") -mode:value("11g", "802.11g") -mode:value("11a", "802.11a") -mode:value("11bg", "802.11b+g") -mode.rmempty = true - -s:option(Value, "channel", translate("a_w_channel")) - -s:option(Value, "txantenna", translate("a_w_txantenna")).rmempty = true - -s:option(Value, "rxantenna", translate("a_w_rxantenna")).rmempty = true - -s:option(Value, "distance", translate("distance"), - translate("a_w_distance1")).rmempty = true - -s:option(Value, "diversity", translate("a_w_diversity")):depends("type", "atheros") - -country = s:option(Value, "country", translate("a_w_countrycode")) -country.optional = true -country:depends("type", "broadcom") - -maxassoc = s:option(Value, "maxassoc", translate("a_w_connlimit")) -maxassoc:depends("type", "broadcom") -maxassoc.optional = true - -return m
\ No newline at end of file diff --git a/modules/admin-full/luasrc/view/admin_wifi/index.htm b/modules/admin-full/luasrc/view/admin_wifi/index.htm deleted file mode 100644 index 58281d14f..000000000 --- a/modules/admin-full/luasrc/view/admin_wifi/index.htm +++ /dev/null @@ -1,20 +0,0 @@ -<%# -LuCI - Lua Configuration Interface -Copyright 2008 Steven Barth <steven@midlink.org> -Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net> - -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$ - --%> -<%+header%> -<h1><%:wifi%></h1> -<p><%:a_w_wifi1%></p> -<p><%:a_w_wifi2%></p> -<p><%:a_w_wifi3%></p> -<%+footer%>
\ No newline at end of file |