summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--i18n/english/luasrc/i18n/admin-core.en.lua4
-rw-r--r--i18n/english/luasrc/i18n/default.en.lua1
-rw-r--r--i18n/german/luasrc/i18n/admin-core.de.lua4
-rw-r--r--i18n/german/luasrc/i18n/default.de.lua1
-rw-r--r--libs/cbi/luasrc/view/cbi/button.htm6
-rw-r--r--libs/cbi/luasrc/view/cbi/nullsection.htm3
-rw-r--r--libs/cbi/luasrc/view/cbi/tblsection.htm8
-rw-r--r--libs/sys/luasrc/sys.lua7
-rw-r--r--modules/admin-full/luasrc/controller/admin/network.lua17
-rw-r--r--modules/admin-full/luasrc/controller/admin/wifi.lua34
-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.lua135
-rw-r--r--modules/admin-full/luasrc/model/cbi/admin_wifi/devices.lua57
-rw-r--r--modules/admin-full/luasrc/view/admin_wifi/index.htm20
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