Huuuuuuuuuuuge rewrite of the Wireless Configuration
This commit is contained in:
parent
3944408637
commit
0c3fc70ddb
14 changed files with 226 additions and 125 deletions
|
@ -287,4 +287,6 @@ a_w_tlsprivkey = "Path to Private Key"
|
||||||
a_w_tlsprivkeypwd = "Password of Private Key"
|
a_w_tlsprivkeypwd = "Password of Private Key"
|
||||||
a_w_peapauth = "PEAP-Authentication"
|
a_w_peapauth = "PEAP-Authentication"
|
||||||
a_w_peapidentity = "PEAP-Identity"
|
a_w_peapidentity = "PEAP-Identity"
|
||||||
a_w_peappassword = "PEAP-Password"
|
a_w_peappassword = "PEAP-Password"
|
||||||
|
|
||||||
|
a_w_create = "Create Network"
|
|
@ -70,6 +70,7 @@ reset = [[Reset]]
|
||||||
revert = [[Revert]]
|
revert = [[Revert]]
|
||||||
save = [[Save]]
|
save = [[Save]]
|
||||||
saveapply = [[Save & Apply]]
|
saveapply = [[Save & Apply]]
|
||||||
|
scan = [[Scan]]
|
||||||
service = [[Service]]
|
service = [[Service]]
|
||||||
services = [[Services]]
|
services = [[Services]]
|
||||||
settings = [[Settings]]
|
settings = [[Settings]]
|
||||||
|
|
|
@ -362,4 +362,6 @@ a_w_tlsprivkey = "Pfad zum Privaten Schlüssel"
|
||||||
a_w_tlsprivkeypwd = "Passwort des Privaten Schlüssels"
|
a_w_tlsprivkeypwd = "Passwort des Privaten Schlüssels"
|
||||||
a_w_peapauth = "PEAP-Authentifizierung"
|
a_w_peapauth = "PEAP-Authentifizierung"
|
||||||
a_w_peapidentity = "PEAP-Identitäz"
|
a_w_peapidentity = "PEAP-Identitäz"
|
||||||
a_w_peappassword = "PEAP-Passwort"
|
a_w_peappassword = "PEAP-Passwort"
|
||||||
|
|
||||||
|
a_w_create = "Netzwerk anlegen"
|
|
@ -88,6 +88,7 @@ revert = "Verwerfen"
|
||||||
|
|
||||||
save = "Speichern"
|
save = "Speichern"
|
||||||
saveapply = "Speichern & Anwenden"
|
saveapply = "Speichern & Anwenden"
|
||||||
|
scan = "Scan"
|
||||||
service = "Dienst"
|
service = "Dienst"
|
||||||
services = "Dienste"
|
services = "Dienste"
|
||||||
settings = "Einstellungen"
|
settings = "Einstellungen"
|
||||||
|
|
|
@ -13,5 +13,9 @@ $Id$
|
||||||
|
|
||||||
-%>
|
-%>
|
||||||
<%+cbi/valueheader%>
|
<%+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%>
|
<%+cbi/valuefooter%>
|
||||||
|
|
|
@ -13,6 +13,9 @@ $Id$
|
||||||
|
|
||||||
-%>
|
-%>
|
||||||
<fieldset class="cbi-section">
|
<fieldset class="cbi-section">
|
||||||
|
<% if self.title and #self.title > 0 then -%>
|
||||||
|
<legend><%=self.title%></legend>
|
||||||
|
<%- end %>
|
||||||
<div class="cbi-section-node">
|
<div class="cbi-section-node">
|
||||||
<% self:render_children(1, scope or {}) %>
|
<% self:render_children(1, scope or {}) %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -76,7 +76,13 @@ end
|
||||||
<%- if self.extedit or self.addremove then -%>
|
<%- if self.extedit or self.addremove then -%>
|
||||||
<td class="cbi-section-table-cell">
|
<td class="cbi-section-table-cell">
|
||||||
<%- if self.extedit then -%>
|
<%- 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 %>
|
<%- 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" />
|
<input type="image" value="<%:cbi_del%>" name="cbi.rts.<%=self.config%>.<%=k%>" alt="<%:cbi_del%>" title="<%:cbi_del%>" src="<%=resource%>/cbi/remove.gif" />
|
||||||
<%- end -%>
|
<%- end -%>
|
||||||
|
|
|
@ -432,8 +432,9 @@ end
|
||||||
|
|
||||||
--- Get iwlist scan output from all wireless devices.
|
--- Get iwlist scan output from all wireless devices.
|
||||||
-- @return Table of tables contaiing all scan results
|
-- @return Table of tables contaiing all scan results
|
||||||
function wifi.iwscan()
|
function wifi.iwscan(iface)
|
||||||
local cnt = luci.util.exec("iwlist scan 2>/dev/null")
|
local siface = iface or ""
|
||||||
|
local cnt = luci.util.exec("iwlist "..siface.." scan 2>/dev/null")
|
||||||
local iws = {}
|
local iws = {}
|
||||||
|
|
||||||
for i, l in pairs(luci.util.split(luci.util.trim(cnt), "\n\n")) do
|
for i, l in pairs(luci.util.split(luci.util.trim(cnt), "\n\n")) do
|
||||||
|
@ -451,7 +452,7 @@ function wifi.iwscan()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return iws
|
return iface and (iws[iface] or {}) or iws
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,23 @@ function index()
|
||||||
page.title = i18n("a_n_switch")
|
page.title = i18n("a_n_switch")
|
||||||
page.order = 20
|
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")
|
local page = node("admin", "network", "network")
|
||||||
page.target = cbi("admin_network/network")
|
page.target = cbi("admin_network/network")
|
||||||
page.title = i18n("interfaces", "Schnittstellen")
|
page.title = i18n("interfaces", "Schnittstellen")
|
||||||
|
|
|
@ -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
|
|
|
@ -12,20 +12,60 @@ You may obtain a copy of the License at
|
||||||
$Id$
|
$Id$
|
||||||
]]--
|
]]--
|
||||||
require("luci.tools.webadmin")
|
require("luci.tools.webadmin")
|
||||||
|
arg[1] = arg[1] or ""
|
||||||
|
|
||||||
m = Map("wireless", translate("networks"), translate("a_w_networks1"))
|
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.addremove = true
|
||||||
s.anonymous = true
|
s.anonymous = true
|
||||||
|
s:depends("device", arg[1])
|
||||||
|
s.defaults.device = arg[1]
|
||||||
|
|
||||||
s:option(Value, "ssid", translate("a_w_netid")).maxlength = 32
|
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 = s:option(ListValue, "network", translate("network"), translate("a_w_network1"))
|
||||||
network:value("")
|
network:value("")
|
||||||
luci.tools.webadmin.cbi_add_networks(network)
|
luci.tools.webadmin.cbi_add_networks(network)
|
135
modules/admin-full/luasrc/model/cbi/admin_network/wireless.lua
Normal file
135
modules/admin-full/luasrc/model/cbi/admin_network/wireless.lua
Normal file
|
@ -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
|
|
@ -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
|
|
|
@ -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%>
|
|
Loading…
Reference in a new issue