Preparing rewrite of WiFi configuration
This commit is contained in:
parent
1d08361bea
commit
97ce1ad8ad
12 changed files with 173 additions and 79 deletions
|
@ -1,3 +1,3 @@
|
|||
0-59/1 * * * * /usr/bin/run-parts /etc/cron.minutely
|
||||
0 * * * * /usr/bin/run-parts /etc/cron.hourly
|
||||
0 0 * * * /usr/bin/run-parts /etc/cron.daily
|
||||
* * * * * /usr/bin/run-parts /etc/cron.minutely
|
||||
17 * * * * /usr/bin/run-parts /etc/cron.hourly
|
||||
25 6 * * * /usr/bin/run-parts /etc/cron.daily
|
||||
|
|
|
@ -278,4 +278,13 @@ mem_buffered = "buffered"
|
|||
mem_free = "free"
|
||||
|
||||
a_s_crontab = "Scheduled Tasks"
|
||||
a_s_crontab1 = "This is the system crontab in which scheduled tasks can be defined."
|
||||
a_s_crontab1 = "This is the system crontab in which scheduled tasks can be defined."
|
||||
|
||||
a_w_nasid = "NAS ID"
|
||||
a_w_cacert = "Path to CA-Certificate"
|
||||
a_w_eaptype = "EAP-Method"
|
||||
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"
|
|
@ -355,4 +355,11 @@ mem_free = "frei"
|
|||
a_s_crontab = "Geplante Aufgaben"
|
||||
a_s_crontab1 = "Dies ist die System-Crontab in der geplante Aufgaben definiert werden können."
|
||||
|
||||
a_w_nasid = "NAS ID"
|
||||
a_w_nasid = "NAS ID"
|
||||
a_w_cacert = "Pfad zum CA-Zertifikat"
|
||||
a_w_eaptype = "EAP-Methode"
|
||||
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"
|
|
@ -1,38 +1,30 @@
|
|||
var cbi_d = {};
|
||||
var cbi_d = [];
|
||||
|
||||
function cbi_d_add(field, target, value) {
|
||||
if (!cbi_d[target]) {
|
||||
cbi_d[target] = {};
|
||||
}
|
||||
if (!cbi_d[target][value]) {
|
||||
cbi_d[target][value] = [];
|
||||
}
|
||||
|
||||
function cbi_d_add(field, dep) {
|
||||
var obj = document.getElementById(field);
|
||||
if (obj) {
|
||||
var entry = {
|
||||
"node": obj,
|
||||
"parent": obj.parentNode,
|
||||
"next": obj.nextSibling
|
||||
}
|
||||
cbi_d[target][value].unshift(entry);
|
||||
var entry
|
||||
for (var i=0; i<cbi_d.length; i++) {
|
||||
if (cbi_d[i].id == field) {
|
||||
entry = cbi_d[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!entry) {
|
||||
entry = {
|
||||
"id": field,
|
||||
"node": obj,
|
||||
"parent": obj.parentNode,
|
||||
"next": obj.nextSibling,
|
||||
"deps": []
|
||||
};
|
||||
cbi_d.unshift(entry);
|
||||
}
|
||||
entry.deps.push(dep)
|
||||
}
|
||||
}
|
||||
|
||||
function cbi_d_update(target) {
|
||||
if (!cbi_d[target]) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (var x in cbi_d[target]) {
|
||||
for (var i=0; i<cbi_d[target][x].length; i++) {
|
||||
var entry = cbi_d[target][x][i];
|
||||
if (entry.node.parentNode) {
|
||||
entry.parent.removeChild(entry.node)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function cbi_d_value(target) {
|
||||
var t = document.getElementById(target);
|
||||
var value
|
||||
|
||||
|
@ -46,21 +38,39 @@ function cbi_d_update(target) {
|
|||
}
|
||||
}
|
||||
|
||||
if (cbi_d[target][value]) {
|
||||
for (var i=0; i<cbi_d[target][value].length; i++) {
|
||||
var entry = cbi_d[target][value][i];
|
||||
return value
|
||||
}
|
||||
|
||||
function cbi_d_check(deps) {
|
||||
for (var i=0; i<deps.length; i++) {
|
||||
var istat = true
|
||||
for (var j in deps[i]) {
|
||||
istat = (istat && cbi_d_value(j) == deps[i][j])
|
||||
}
|
||||
if (istat) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function cbi_d_update() {
|
||||
var state = false;
|
||||
for (var i=0; i<cbi_d.length; i++) {
|
||||
var entry = cbi_d[i];
|
||||
if (entry.node.parentNode && !cbi_d_check(entry.deps)) {
|
||||
entry.parent.removeChild(entry.node);
|
||||
state = (state || !entry.node.parentNode)
|
||||
} else if (!entry.node.parentNode && cbi_d_check(entry.deps)) {
|
||||
if (!entry.next) {
|
||||
entry.parent.appendChild(entry.node);
|
||||
} else {
|
||||
entry.parent.insertBefore(entry.node, entry.next);
|
||||
}
|
||||
}
|
||||
state = (state || entry.node.parentNode)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function cbi_d_init() {
|
||||
for (var x in cbi_d) {
|
||||
cbi_d_update(x);
|
||||
if (state) {
|
||||
cbi_d_update();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -710,7 +710,15 @@ end
|
|||
|
||||
-- Add a dependencie to another section field
|
||||
function AbstractValue.depends(self, field, value)
|
||||
table.insert(self.deps, {field=field, value=value})
|
||||
local deps
|
||||
if type(field) == "string" then
|
||||
deps = {}
|
||||
deps[field] = value
|
||||
else
|
||||
deps = field
|
||||
end
|
||||
|
||||
table.insert(self.deps, {deps=deps, add=""})
|
||||
end
|
||||
|
||||
-- Generates the unique CBID
|
||||
|
@ -897,10 +905,14 @@ function ListValue.__init__(self, ...)
|
|||
self.widget = "select"
|
||||
end
|
||||
|
||||
function ListValue.value(self, key, val)
|
||||
function ListValue.value(self, key, val, ...)
|
||||
val = val or key
|
||||
table.insert(self.keylist, tostring(key))
|
||||
table.insert(self.vallist, tostring(val))
|
||||
|
||||
for i, deps in ipairs({...}) do
|
||||
table.insert(self.deps, {add = "-"..key, deps=deps})
|
||||
end
|
||||
end
|
||||
|
||||
function ListValue.validate(self, val)
|
||||
|
|
|
@ -25,7 +25,15 @@ $Id$
|
|||
<% if #self.deps > 0 then -%>
|
||||
<script type="text/javascript">
|
||||
<% for j, d in ipairs(self.deps) do -%>
|
||||
cbi_d_add("cbi-<%=self.config.."-"..section.."-"..self.option%>", "cbid.<%=self.config.."."..section.."."..d.field%>", "<%=d.value%>");
|
||||
cbi_d_add("cbi-<%=self.config.."-"..section.."-"..self.option..d.add%>", {
|
||||
<%-
|
||||
for k,v in pairs(d.deps) do
|
||||
-%>
|
||||
<%-=string.format('"cbid.%s.%s.%s"', self.config, section, k) .. ":" .. string.format("%q", v)-%>,
|
||||
<%-
|
||||
end
|
||||
-%>
|
||||
});
|
||||
<%- end %>
|
||||
</script>
|
||||
<%- end %>
|
||||
|
|
|
@ -17,7 +17,7 @@ $Id$
|
|||
<input class="cbi-button cbi-button-apply" type="submit" name="cbi.apply" value="<%:saveapply%>" />
|
||||
<input class="cbi-button cbi-button-save" type="submit" value="<%:save%>" />
|
||||
<input class="cbi-button cbi-button-reset" type="reset" value="<%:reset%>" />
|
||||
<script type="text/javascript">cbi_d_init();</script>
|
||||
<script type="text/javascript">cbi_d_update();</script>
|
||||
</div>
|
||||
</form>
|
||||
<%+footer%>
|
||||
|
|
|
@ -34,7 +34,15 @@ $Id$
|
|||
<% if #self.deps > 0 then -%>
|
||||
<script type="text/javascript">
|
||||
<% for j, d in ipairs(self.deps) do -%>
|
||||
cbi_d_add("cbi-<%=self.config.."-"..section.."-"..self.option%>", "cbid.<%=self.config.."."..section.."."..d.field%>", "<%=d.value%>");
|
||||
cbi_d_add("cbi-<%=self.config.."-"..section.."-"..self.option..d.add%>", {
|
||||
<%-
|
||||
for k,v in pairs(d.deps) do
|
||||
-%>
|
||||
<%-=string.format('"cbid.%s.%s.%s"', self.config, section, k) .. ":" .. string.format("%q", v)-%>,
|
||||
<%-
|
||||
end
|
||||
-%>
|
||||
});
|
||||
<%- end %>
|
||||
</script>
|
||||
<%- end %>
|
||||
|
|
|
@ -16,7 +16,7 @@ $Id$
|
|||
<% if self.widget == "select" then %>
|
||||
<select onchange="cbi_d_update(this.id)"<%= attr("id", cbid) .. attr("name", cbid) .. ifattr(self.size, "size") %>>
|
||||
<% for i, key in pairs(self.keylist) do -%>
|
||||
<option<%= attr("value", key) .. ifattr(self:cfgvalue(section) == key, "selected", "selected") %>><%=luci.util.pcdata(self.vallist[i])%></option>
|
||||
<option id="cbi-<%=self.config.."-"..section.."-"..self.option.."-"..key%>"<%= attr("value", key) .. ifattr(self:cfgvalue(section) == key, "selected", "selected") %>><%=luci.util.pcdata(self.vallist[i])%></option>
|
||||
<%- end %>
|
||||
</select>
|
||||
<% elseif self.widget == "radio" then
|
||||
|
|
|
@ -27,8 +27,17 @@ $Id$
|
|||
<%- end %>
|
||||
</select>
|
||||
<script type="text/javascript"><% for key, val in pairs(self.optionals[section]) do %>
|
||||
<% if #val.deps > 0 then %><% for j, d in ipairs(val.deps) do %>cbi_d_add("cbi-<%=self.config.."-"..section.."-"..val.option%>", "cbid.<%=self.config.."."..section.."."..d.field%>", "<%=d.value%>");
|
||||
<% end %><% end %>
|
||||
<% if #val.deps > 0 then %><% for j, d in ipairs(val.deps) do -%>
|
||||
cbi_d_add("cbi-<%=self.config.."-"..section.."-"..val.option..d.add%>", {
|
||||
<%-
|
||||
for k,v in pairs(d.deps) do
|
||||
-%>
|
||||
<%-=string.format('"cbid.%s.%s.%s"', self.config, section, k) .. ":" .. string.format("%q", v)-%>,
|
||||
<%-
|
||||
end
|
||||
-%>
|
||||
});
|
||||
<%- end %><% end %>
|
||||
<% end %></script>
|
||||
<% end %>
|
||||
<input type="submit" class="cbi-button cbi-button-fieldadd" value="<%:add%>" />
|
||||
|
|
|
@ -25,18 +25,7 @@ function en.cfgvalue(self, section)
|
|||
return Flag.cfgvalue(self, section) or "0"
|
||||
end
|
||||
|
||||
t = s:option(ListValue, "type", translate("type"))
|
||||
t:value("broadcom")
|
||||
t:value("atheros")
|
||||
t:value("mac80211")
|
||||
t:value("prism2")
|
||||
--[[
|
||||
require("luci.sys")
|
||||
local c = ". /etc/functions.sh;for i in /lib/wifi/*;do . $i;done;echo $DRIVERS"
|
||||
for driver in luci.util.execl(c)[1]:gmatch("[^ ]+") do
|
||||
t:value(driver)
|
||||
end
|
||||
]]--
|
||||
t = s:option(DummyValue, "type", translate("type"))
|
||||
|
||||
mode = s:option(ListValue, "mode", translate("mode"))
|
||||
mode:value("", "standard")
|
||||
|
|
|
@ -49,29 +49,71 @@ 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-Radius")
|
||||
encr:value("psk2", "WPA2-PSK")
|
||||
encr:value("wpa2", "WPA2-Radius")
|
||||
|
||||
key = s:option(Value, "key", translate("key"))
|
||||
key:depends("encryption", "wep")
|
||||
key:depends("encryption", "psk")
|
||||
key:depends("encryption", "wpa")
|
||||
key:depends("encryption", "psk2")
|
||||
key:depends("encryption", "wpa2")
|
||||
key.rmempty = true
|
||||
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("encryption", "wpa")
|
||||
server:depends("encryption", "wpa2")
|
||||
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("encryption", "wpa")
|
||||
port:depends("encryption", "wpa2")
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue