From 0c3fc70ddbf3f0fc0dcbb5d7c05285b0b2d12ccb Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Mon, 18 Aug 2008 00:38:18 +0000 Subject: Huuuuuuuuuuuge rewrite of the Wireless Configuration --- .../admin-full/luasrc/controller/admin/network.lua | 17 +++ .../admin-full/luasrc/controller/admin/wifi.lua | 34 ----- .../luasrc/model/cbi/admin_network/wifi.lua | 163 +++++++++++++++++++++ .../luasrc/model/cbi/admin_network/wireless.lua | 135 +++++++++++++++++ .../luasrc/model/cbi/admin_wifi/devices.lua | 57 ------- .../luasrc/model/cbi/admin_wifi/networks.lua | 123 ---------------- .../admin-full/luasrc/view/admin_wifi/index.htm | 20 --- 7 files changed, 315 insertions(+), 234 deletions(-) delete mode 100644 modules/admin-full/luasrc/controller/admin/wifi.lua create mode 100644 modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua create mode 100644 modules/admin-full/luasrc/model/cbi/admin_network/wireless.lua delete mode 100644 modules/admin-full/luasrc/model/cbi/admin_wifi/devices.lua delete mode 100644 modules/admin-full/luasrc/model/cbi/admin_wifi/networks.lua delete mode 100644 modules/admin-full/luasrc/view/admin_wifi/index.htm (limited to 'modules/admin-full') 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 - -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_network/wifi.lua b/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua new file mode 100644 index 000000000..64a492879 --- /dev/null +++ b/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua @@ -0,0 +1,163 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2008 Steven Barth + +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.tools.webadmin") +arg[1] = arg[1] or "" + +m = Map("wireless", translate("networks"), translate("a_w_networks1")) + +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 + +network = s:option(ListValue, "network", translate("network"), translate("a_w_network1")) +network:value("") +luci.tools.webadmin.cbi_add_networks(network) + +mode = s:option(ListValue, "mode", translate("mode")) +mode:value("ap", translate("a_w_ap")) +mode:value("adhoc", translate("a_w_adhoc")) +mode:value("ahdemo", translate("a_w_ahdemo")) +mode:value("sta", translate("a_w_client")) +mode:value("wds", translate("a_w_wds")) +mode:value("monitor", translate("a_w_monitor")) + +s:option(Value, "bssid", "BSSID").optional = true + +s:option(Value, "txpower", translate("a_w_txpwr"), "dbm").rmempty = true + +s:option(Flag, "frameburst", translate("a_w_brcmburst")).optional = true +s:option(Flag, "bursting", translate("a_w_athburst")).optional = true + + +encr = s:option(ListValue, "encryption", translate("encryption")) +encr:value("none", "keine") +encr:value("wep", "WEP") +encr:value("PSK", "WPA-PSK") +encr:value("WPA", "WPA-EAP", {mode="ap"}, {mode="sta"}) +encr:value("PSK2", "WPA2-PSK") +encr:value("WPA2", "WPA2-EAP", {mode="ap"}, {mode="sta"}) +encr:depends("mode", "ap") +encr:depends("mode", "sta") +encr:depends("mode", "wds") + +server = s:option(Value, "server", translate("a_w_radiussrv")) +server:depends({mode="ap", encryption="WPA"}) +server:depends({mode="ap", encryption="WPA2"}) +server.rmempty = true + +port = s:option(Value, "port", translate("a_w_radiusport")) +port:depends({mode="ap", encryption="WPA"}) +port:depends({mode="ap", encryption="WPA2"}) +port.rmempty = true + +key = s:option(Value, "key", translate("key")) +key:depends("encryption", "wep") +key:depends("encryption", "PSK") +key:depends({mode="ap", encryption="WPA"}) +key:depends("encryption", "PSK2") +key:depends({mode="ap", encryption="WPA2"}) +key.rmempty = true + +nasid = s:option(Value, "nasid", translate("a_w_nasid")) +nasid:depends({mode="ap", encryption="WPA"}) +nasid:depends({mode="ap", encryption="WPA2"}) +nasid.rmempty = true + +eaptype = s:option(ListValue, "eap_type", translate("a_w_eaptype")) +eaptype:value("TLS") +eaptype:value("PEAP") +eaptype:depends({mode="sta", encryption="WPA"}) +eaptype:depends({mode="sta", encryption="WPA2"}) + +cacert = s:option(Value, "ca_cert", translate("a_w_cacert")) +cacert:depends({mode="sta", encryption="WPA"}) +cacert:depends({mode="sta", encryption="WPA2"}) + +privkey = s:option(Value, "priv_key", translate("a_w_tlsprivkey")) +privkey:depends({mode="sta", eap_type="TLS", encryption="WPA2"}) +privkey:depends({mode="sta", eap_type="TLS", encryption="WPA"}) + +privkeypwd = s:option(Value, "priv_key_pwd", translate("a_w_tlsprivkeypwd")) +privkeypwd:depends({mode="sta", eap_type="TLS", encryption="WPA2"}) +privkeypwd:depends({mode="sta", eap_type="TLS", encryption="WPA"}) + + +auth = s:option(Value, "auth", translate("a_w_peapauth")) +auth:depends({mode="sta", eap_type="PEAP", encryption="WPA2"}) +auth:depends({mode="sta", eap_type="PEAP", encryption="WPA"}) + +identity = s:option(Value, "identity", translate("a_w_peapidentity")) +identity:depends({mode="sta", eap_type="PEAP", encryption="WPA2"}) +identity:depends({mode="sta", eap_type="PEAP", encryption="WPA"}) + +password = s:option(Value, "password", translate("a_w_peappassword")) +password:depends({mode="sta", eap_type="PEAP", encryption="WPA2"}) +password:depends({mode="sta", eap_type="PEAP", encryption="WPA"}) + + + + +s:option(Flag, "isolate", translate("a_w_apisolation"), translate("a_w_apisolation1")).optional = true + +s:option(Flag, "hidden", translate("a_w_hideessid")).optional = true + + + +return m \ No newline at end of file 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 +Copyright 2008 Jo-Philipp Wich + +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 - -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/model/cbi/admin_wifi/networks.lua b/modules/admin-full/luasrc/model/cbi/admin_wifi/networks.lua deleted file mode 100644 index a109587d9..000000000 --- a/modules/admin-full/luasrc/model/cbi/admin_wifi/networks.lua +++ /dev/null @@ -1,123 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright 2008 Steven Barth - -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.tools.webadmin") -m = Map("wireless", translate("networks"), translate("a_w_networks1")) - -s = m:section(TypedSection, "wifi-iface", "") -s.addremove = true -s.anonymous = true - -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) - -mode = s:option(ListValue, "mode", translate("mode")) -mode:value("ap", translate("a_w_ap")) -mode:value("adhoc", translate("a_w_adhoc")) -mode:value("ahdemo", translate("a_w_ahdemo")) -mode:value("sta", translate("a_w_client")) -mode:value("wds", translate("a_w_wds")) -mode:value("monitor", translate("a_w_monitor")) - -s:option(Value, "bssid", "BSSID").optional = true - -s:option(Value, "txpower", translate("a_w_txpwr"), "dbm").rmempty = true - -s:option(Flag, "frameburst", translate("a_w_brcmburst")).optional = true -s:option(Flag, "bursting", translate("a_w_athburst")).optional = true - - -encr = s:option(ListValue, "encryption", translate("encryption")) -encr:value("none", "keine") -encr:value("wep", "WEP") -encr:value("PSK", "WPA-PSK") -encr:value("WPA", "WPA-EAP", {mode="ap"}, {mode="sta"}) -encr:value("PSK2", "WPA2-PSK") -encr:value("WPA2", "WPA2-EAP", {mode="ap"}, {mode="sta"}) -encr:depends("mode", "ap") -encr:depends("mode", "sta") -encr:depends("mode", "wds") - -server = s:option(Value, "server", translate("a_w_radiussrv")) -server:depends({mode="ap", encryption="WPA"}) -server:depends({mode="ap", encryption="WPA2"}) -server.rmempty = true - -port = s:option(Value, "port", translate("a_w_radiusport")) -port:depends({mode="ap", encryption="WPA"}) -port:depends({mode="ap", encryption="WPA2"}) -port.rmempty = true - -key = s:option(Value, "key", translate("key")) -key:depends("encryption", "wep") -key:depends("encryption", "PSK") -key:depends({mode="ap", encryption="WPA"}) -key:depends("encryption", "PSK2") -key:depends({mode="ap", encryption="WPA2"}) -key.rmempty = true - -nasid = s:option(Value, "nasid", translate("a_w_nasid")) -nasid:depends({mode="ap", encryption="WPA"}) -nasid:depends({mode="ap", encryption="WPA2"}) -nasid.rmempty = true - -eaptype = s:option(ListValue, "eap_type", translate("a_w_eaptype")) -eaptype:value("TLS") -eaptype:value("PEAP") -eaptype:depends({mode="sta", encryption="WPA"}) -eaptype:depends({mode="sta", encryption="WPA2"}) - -cacert = s:option(Value, "ca_cert", translate("a_w_cacert")) -cacert:depends({mode="sta", encryption="WPA"}) -cacert:depends({mode="sta", encryption="WPA2"}) - -privkey = s:option(Value, "priv_key", translate("a_w_tlsprivkey")) -privkey:depends({mode="sta", eap_type="TLS", encryption="WPA2"}) -privkey:depends({mode="sta", eap_type="TLS", encryption="WPA"}) - -privkeypwd = s:option(Value, "priv_key_pwd", translate("a_w_tlsprivkeypwd")) -privkeypwd:depends({mode="sta", eap_type="TLS", encryption="WPA2"}) -privkeypwd:depends({mode="sta", eap_type="TLS", encryption="WPA"}) - - -auth = s:option(Value, "auth", translate("a_w_peapauth")) -auth:depends({mode="sta", eap_type="PEAP", encryption="WPA2"}) -auth:depends({mode="sta", eap_type="PEAP", encryption="WPA"}) - -identity = s:option(Value, "identity", translate("a_w_peapidentity")) -identity:depends({mode="sta", eap_type="PEAP", encryption="WPA2"}) -identity:depends({mode="sta", eap_type="PEAP", encryption="WPA"}) - -password = s:option(Value, "password", translate("a_w_peappassword")) -password:depends({mode="sta", eap_type="PEAP", encryption="WPA2"}) -password:depends({mode="sta", eap_type="PEAP", encryption="WPA"}) - - - - -s:option(Flag, "isolate", translate("a_w_apisolation"), translate("a_w_apisolation1")).optional = true - -s:option(Flag, "hidden", translate("a_w_hideessid")).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 -Copyright 2008 Jo-Philipp Wich - -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%> -

<%:wifi%>

-

<%:a_w_wifi1%>

-

<%:a_w_wifi2%>

-

<%:a_w_wifi3%>

-<%+footer%> \ No newline at end of file -- cgit v1.2.3