[luci] pending patchs
Etienne Champetier
etienne.champetier at free.fr
Tue Sep 6 14:49:12 CEST 2011
Hi
Still no news/comments
Files attached are my 3 patchs, 2 of them refreshed to apply on the trunk (rev 7465)
Please answer
Le 15/08/2011 07:42, etienne.champetier at free.fr a écrit :
> Hi
>
> I still have 3 pending patch here (last 3 threads)
> https://lists.subsignal.org/pipermail/luci/2011-June/thread.html
>
> Is there a way to have them integrated before 2012 and the end of the world :-)
>
> Best Regards
> Etienne Champetier
> _______________________________________________
> luci mailing list
> luci at lists.subsignal.org
> https://lists.subsignal.org/mailman/listinfo/luci
-------------- next part --------------
Index: libs/sys/luasrc/sys.lua
===================================================================
--- libs/sys/luasrc/sys.lua (révision 7465)
+++ libs/sys/luasrc/sys.lua (copie de travail)
@@ -296,6 +296,23 @@
return route
end
+--- Return a table with all the current IPv4 default routes.
+-- @return Table of default routes.
+-- The following fields are defined for each route:
+-- { "dest", "gateway", "metric", "refcount", "usecount", "irtt",
+-- "flags", "device" }
+function net.defaultroutes()
+ local routes = { }
+
+ net.routes(function(rt)
+ if rt.dest:prefix() == 0 then
+ routes[#routes+1] = rt
+ end
+ end)
+
+ return routes
+end
+
--- Determine the current IPv6 default route. If multiple default routes exist,
-- return the one with the lowest metric.
-- @return Table with the properties of the current default route.
@@ -327,6 +344,25 @@
return route
end
+--- Return a table with all the current IPv6 default routes.
+-- @return Table of default routes.
+-- The following fields are defined for each route:
+-- { "source", "dest", "nexthop", "metric", "refcount", "usecount",
+-- "flags", "device" }
+function net.defaultroutes6()
+ local routes = { }
+ local global_unicast = luci.ip.IPv6("2000::/3")
+
+ net.routes6(function(rt)
+ if (rt.dest:prefix() == 0 and rt.device ~= "lo") or rt.dest:equal(global_unicast)
+ then
+ routes[#routes+1] = rt
+ end
+ end)
+
+ return routes
+end
+
--- Determine the names of available network interfaces.
-- @return Table containing all current interface names
function net.devices()
Index: modules/admin-full/luasrc/view/admin_status/index.htm
===================================================================
--- modules/admin-full/luasrc/view/admin_status/index.htm (révision 7465)
+++ modules/admin-full/luasrc/view/admin_status/index.htm (copie de travail)
@@ -24,18 +24,28 @@
if luci.http.formvalue("status") == "1" then
local ntm = require "luci.model.network".init()
- local dr4 = luci.sys.net.defaultroute()
- local dr6 = luci.sys.net.defaultroute6()
+ local drs4 = luci.sys.net.defaultroutes()
+ local drs6 = luci.sys.net.defaultroutes6()
+ local wans = { }
+ local wans6 = { }
local wan, wan6
- if dr4 and dr4.device then
- wan = ntm:get_interface(dr4.device)
- wan = wan and wan:get_network()
+ if drs4 then
+ for i= 1,#drs4 do
+ if drs4[i].device then
+ wan = ntm:get_interface(drs4[i].device)
+ wans[#wans+1] = wan and wan:get_network()
+ end
+ end
end
- if dr6 and dr6.device then
- wan6 = ntm:get_interface(dr6.device)
- wan6 = wan6 and wan6:get_network()
+ if drs6 then
+ for i= 1,#drs6 do
+ if drs6[i].device then
+ wan6 = ntm:get_interface(drs6[i].device)
+ wans6[#wans6 + 1] = wan6 and wan6:get_network()
+ end
+ end
end
local _, _, memtotal, memcached, membuffers, memfree = luci.sys.sysinfo()
@@ -61,33 +71,41 @@
connmax = conn_max,
conncount = conn_count,
leases = luci.tools.status.dhcp_leases(),
- wifinets = luci.tools.status.wifi_networks()
+ wifinets = luci.tools.status.wifi_networks(),
+ wans = { },
+ wans6 = { }
}
- if wan then
- rv.wan = {
- ipaddr = wan:ipaddr(),
- gwaddr = wan:gwaddr(),
- netmask = wan:netmask(),
- dns = wan:dnsaddrs(),
- expires = wan:expires(),
- uptime = wan:uptime(),
- proto = wan:proto(),
- ifname = wan:ifname(),
- link = wan:adminlink()
- }
+ for i= 1,#wans do
+ wan = wans[i]
+ if wan then
+ rv.wans[#rv.wans+1] = {
+ ipaddr = wan:ipaddr(),
+ gwaddr = wan:gwaddr(),
+ netmask = wan:netmask(),
+ dns = wan:dnsaddrs(),
+ expires = wan:expires(),
+ uptime = wan:uptime(),
+ proto = wan:proto(),
+ ifname = wan:ifname(),
+ link = wan:adminlink()
+ }
+ end
end
- if wan6 then
- rv.wan6 = {
- ip6addr = wan6:ip6addr(),
- gw6addr = wan6:gw6addr(),
- dns = wan6:dns6addrs(),
- uptime = wan6:uptime(),
- ifname = wan6:ifname(),
- link = wan6:adminlink()
- }
- end
+ for i= 1,#wans6 do
+ wan6 = wans6[i]
+ if wan6 then
+ rv.wans6[#rv.wans6 + 1] = {
+ ip6addr = wan6:ip6addr(),
+ gw6addr = wan6:gw6addr(),
+ dns = wan6:dns6addrs(),
+ uptime = wan6:uptime(),
+ ifname = wan6:ifname(),
+ link = wan6:adminlink()
+ }
+ end
+ end
luci.http.prepare_content("application/json")
luci.http.write_json(rv)
@@ -127,102 +145,154 @@
iwxhr.get('<%=REQUEST_URI%>', { status: 1 },
function(x, info)
{
- var si = document.getElementById('wan4_i');
- var ss = document.getElementById('wan4_s');
- var ifc = info.wan;
-
- if (ifc && ifc.ifname && ifc.proto != 'none')
+ var w4t = document.getElementById('wan4_table');
+ if (w4t)
{
- var s = String.format(
- '<strong><%:Type%>: </strong>%s<br />' +
- '<strong><%:Address%>: </strong>%s<br />' +
- '<strong><%:Netmask%>: </strong>%s<br />' +
- '<strong><%:Gateway%>: </strong>%s<br />',
- ifc.proto,
- (ifc.ipaddr) ? ifc.ipaddr : '0.0.0.0',
- (ifc.netmask && ifc.netmask != ifc.ipaddr) ? ifc.netmask : '255.255.255.255',
- (ifc.gwaddr) ? ifc.gwaddr : '0.0.0.0'
- );
-
- for (var i = 0; i < ifc.dns.length; i++)
+ var w4tbody = w4t.rows[0].parentNode;
+ while (w4t.rows.length > 0)
+ w4tbody.deleteRow(0);
+
+ for (var i = 0; i < info.wans.length; i++)
{
- s += String.format(
- '<strong><%:DNS%> %d: </strong>%s<br />',
- i + 1, ifc.dns[i]
- );
- }
+ var ifc = info.wans[i];
+
+ if (ifc && ifc.ifname && ifc.proto != 'none')
+ {
+ var tr = w4tbody.insertRow(-1);
+ var si = tr.insertCell(-1);
+ si.style.width = "16px";
+ si.style.textAlign = "center";
+ si.style.padding = "3px";
+ var ss = tr.insertCell(-1);
+ ss.style.verticalAlign = "middle";
+ ss.style.padding = "3px";
+
+ var s = String.format(
+ '<strong><%:Type%>: </strong>%s<br />' +
+ '<strong><%:Address%>: </strong>%s<br />' +
+ '<strong><%:Netmask%>: </strong>%s<br />' +
+ '<strong><%:Gateway%>: </strong>%s<br />',
+ ifc.proto,
+ (ifc.ipaddr) ? ifc.ipaddr : '0.0.0.0',
+ (ifc.netmask && ifc.netmask != ifc.ipaddr) ? ifc.netmask : '255.255.255.255',
+ (ifc.gwaddr) ? ifc.gwaddr : '0.0.0.0'
+ );
- if (ifc.expires > -1)
- {
- s += String.format(
- '<strong><%:Expires%>: </strong>%t<br />',
- ifc.expires
- );
+ for (var j = 0; j < ifc.dns.length; j++)
+ {
+ s += String.format(
+ '<strong><%:DNS%> %d: </strong>%s<br />',
+ j + 1, ifc.dns[j]
+ );
+ }
+
+ if (ifc.expires > -1)
+ {
+ s += String.format(
+ '<strong><%:Expires%>: </strong>%t<br />',
+ ifc.expires
+ );
+ }
+
+ if (ifc.uptime > 0)
+ {
+ s += String.format(
+ '<strong><%:Connected%>: </strong>%t<br />',
+ ifc.uptime
+ );
+ }
+
+ ss.innerHTML = String.format('<small>%s</small>', s);
+ si.innerHTML = String.format(
+ '<img src="<%=resource%>/icons/ethernet.png" />' +
+ '<br /><small><a href="%s">%s</a></small>',
+ ifc.link, ifc.ifname
+ );
+ }
}
-
- if (ifc.uptime > 0)
+ if (w4t.rows.length == 0)
{
- s += String.format(
- '<strong><%:Connected%>: </strong>%t<br />',
- ifc.uptime
- );
+ var tr = w4tbody.insertRow(-1);
+ var si = tr.insertCell(-1);
+ si.style.width = "16px";
+ si.style.textAlign = "center";
+ si.style.padding = "3px";
+ var ss = tr.insertCell(-1);
+ ss.style.verticalAlign = "middle";
+ ss.style.padding = "3px";
+ si.innerHTML = '<img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small>';
+ ss.innerHTML = '<em>Not connected</em>';
}
-
- ss.innerHTML = String.format('<small>%s</small>', s);
- si.innerHTML = String.format(
- '<img src="<%=resource%>/icons/ethernet.png" />' +
- '<br /><small><a href="%s">%s</a></small>',
- ifc.link, ifc.ifname
- );
}
- else
- {
- si.innerHTML = '<img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small>';
- ss.innerHTML = '<em>Not connected</em>';
- }
<% if has_ipv6 then %>
- var si6 = document.getElementById('wan6_i');
- var ss6 = document.getElementById('wan6_s');
- var ifc6 = info.wan6;
-
- if (ifc6 && ifc6.ifname && ifc6.proto != 'none')
+ var w6t = document.getElementById('wan6_table');
+ if (w6t)
{
- var s = String.format(
- '<strong><%:Address%>: </strong>%s<br />' +
- '<strong><%:Gateway%>: </strong>%s<br />',
- (ifc6.ip6addr) ? ifc6.ip6addr : '::',
- (ifc6.gw6addr) ? ifc6.gw6addr : '::'
- );
+ var w6tbody = w6t.rows[0].parentNode;
+ while (w6t.rows.length > 0)
+ w6tbody.deleteRow(0);
+
+ for (var i = 0; i < info.wans6.length; i++)
+ {
+ var ifc6 = info.wans6[i];
- for (var i = 0; i < ifc6.dns.length; i++)
- {
- s += String.format(
- '<strong><%:DNS%> %d: </strong>%s<br />',
- i + 1, ifc6.dns[i]
- );
+ if (ifc6 && ifc6.ifname && ifc6.proto != 'none')
+ {
+ var tr = w6tbody.insertRow(-1);
+ var si6 = tr.insertCell(-1);
+ si6.style.width = "16px";
+ si6.style.textAlign = "center";
+ si6.style.padding = "3px";
+ var ss6 = tr.insertCell(-1);
+ ss6.style.verticalAlign = "middle";
+ ss6.style.padding = "3px";
+
+ var s = String.format(
+ '<strong><%:Address%>: </strong>%s<br />' +
+ '<strong><%:Gateway%>: </strong>%s<br />',
+ (ifc6.ip6addr) ? ifc6.ip6addr : '::',
+ (ifc6.gw6addr) ? ifc6.gw6addr : '::'
+ );
+
+ for (var j = 0; j < ifc6.dns.length; j++)
+ {
+ s += String.format(
+ '<strong><%:DNS%> %d: </strong>%s<br />',
+ j + 1, ifc6.dns[j]
+ );
+ }
+
+ if (ifc6.uptime > 0)
+ {
+ s += String.format(
+ '<strong><%:Connected%>: </strong>%t<br />',
+ ifc6.uptime
+ );
+ }
+
+ ss6.innerHTML = String.format('<small>%s</small>', s);
+ si6.innerHTML = String.format(
+ '<img src="<%=resource%>/icons/ethernet.png" />' +
+ '<br /><small><a href="%s">%s</a></small>',
+ ifc6.link, ifc6.ifname
+ );
+ }
}
-
- if (ifc6.uptime > 0)
+ if (w6t.rows.length == 0)
{
- s += String.format(
- '<strong><%:Connected%>: </strong>%t<br />',
- ifc6.uptime
- );
+ var tr = w6tbody.insertRow(-1);
+ var si6 = tr.insertCell(-1);
+ si6.style.width = "16px";
+ si6.style.textAlign = "center";
+ si6.style.padding = "3px";
+ var ss6 = tr.insertCell(-1);
+ ss6.style.verticalAlign = "middle";
+ ss6.style.padding = "3px";
+ si6.innerHTML = '<img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small>';
+ ss6.innerHTML = '<em>Not connected</em>';
}
-
- ss6.innerHTML = String.format('<small>%s</small>', s);
- si6.innerHTML = String.format(
- '<img src="<%=resource%>/icons/ethernet.png" />' +
- '<br /><small><a href="%s">%s</a></small>',
- ifc6.link, ifc6.ifname
- );
}
- else
- {
- si6.innerHTML = '<img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small>';
- ss6.innerHTML = '<em>Not connected</em>';
- }
<% end %>
<% if has_dhcp then %>
@@ -500,16 +570,16 @@
<table width="100%" cellspacing="10">
<tr><td width="33%" style="vertical-align:top"><%:IPv4 WAN Status%></td><td>
- <table><tr>
- <td id="wan4_i" style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></td>
- <td id="wan4_s" style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></td>
+ <table id="wan4_table" cellspacing="10"><tr>
+ <td style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></td>
+ <td style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></td>
</tr></table>
</td></tr>
<% if has_ipv6 then %>
<tr><td width="33%" style="vertical-align:top"><%:IPv6 WAN Status%></td><td>
- <table><tr>
- <td id="wan6_i" style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></td>
- <td id="wan6_s" style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></td>
+ <table id="wan6_table" cellspacing="10"><tr>
+ <td style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></td>
+ <td style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></td>
</tr></table>
</td></tr>
<% end %>
-------------- next part --------------
Index: applications/luci-multiwan/luasrc/controller/multiwan.lua
===================================================================
--- applications/luci-multiwan/luasrc/controller/multiwan.lua (révision 7465)
+++ applications/luci-multiwan/luasrc/controller/multiwan.lua (copie de travail)
@@ -11,8 +11,50 @@
page = entry({"admin", "network", "multiwan"}, cbi("multiwan/multiwan"), _("Multi-WAN"))
page.i18n = "multiwan"
page.dependent = true
+
+ entry({"admin", "network", "multiwan", "status"}, call("multiwan_status"))
page = entry({"mini", "network", "multiwan"}, cbi("multiwan/multiwanmini", {autoapply=true}), _("Multi-WAN"))
page.i18n = "multiwan"
page.dependent = true
end
+function multiwan_status()
+ local nfs = require "nixio.fs"
+ local cachefile = "/tmp/.mwan/cache"
+
+ local rv = { }
+
+ cachefile = nfs.readfile(cachefile)
+ if cachefile then
+ local ntm = require "luci.model.network".init()
+ _, _, wan_if_map = string.find(cachefile, "wan_if_map=\"([^\"]*)\"")
+ _, _, wan_fail_map = string.find(cachefile, "wan_fail_map=\"([^\"]*)\"")
+ _, _, wan_recovery_map = string.find(cachefile, "wan_recovery_map=\"([^\"]*)\"")
+
+ rv.wans = { }
+ wansid = {}
+
+ for wanname, wanifname in string.gfind(wan_if_map, "([^%[]+)%[([^%]]+)%]") do
+ local wanlink = ntm:get_interface(wanifname):get_network():adminlink()
+ wansid[wanname] = #rv.wans + 1
+ rv.wans[wansid[wanname]] = { name = wanname, link = wanlink, ifname = wanifname, status = "ok", count = 0 }
+ end
+
+ for wanname, failcount in string.gfind(wan_fail_map, "([^%[]+)%[([^%]]+)%]") do
+ if failcount == "x" then
+ rv.wans[wansid[wanname]].status = "ko"
+ else
+ rv.wans[wansid[wanname]].status = "failing"
+ rv.wans[wansid[wanname]].count = failcount
+ end
+ end
+
+ for wanname, recoverycount in string.gfind(wan_recovery_map, "([^%[]+)%[([^%]]+)%]") do
+ rv.wans[wansid[wanname]].status = "recovering"
+ rv.wans[wansid[wanname]].count = recoverycount
+ end
+ end
+
+ luci.http.prepare_content("application/json")
+ luci.http.write_json(rv)
+end
Index: applications/luci-multiwan/luasrc/view/multiwan_status.htm
===================================================================
--- applications/luci-multiwan/luasrc/view/multiwan_status.htm (révision 0)
+++ applications/luci-multiwan/luasrc/view/multiwan_status.htm (révision 0)
@@ -0,0 +1,55 @@
+<script type="text/javascript">//<![CDATA[
+ var stxhr = new XHR();
+ var update_status = function() {
+ stxhr.get('<%=luci.dispatcher.build_url("admin", "network", "multiwan", "status")%>', null,
+ function(x, st)
+ {
+ var tx = document.getElementById('multiwan_status_text');
+ if (tx)
+ {
+ if (st && st.wans)
+ {
+ var temp = ""
+ for( var i = 0; i < st.wans.length; i++ )
+ {
+ if (st.wans[i].status == "ok")
+ temp += "<span class='wanok'><strong>" + st.wans[i].name + "(<a href='" + st.wans[i].link + "'>" +st.wans[i].ifname + "</a>) :</strong> OK</span>"
+
+ if (st.wans[i].status == "ko")
+ temp += "<span class='wanko'><strong>" + st.wans[i].name + "(<a href='" + st.wans[i].link + "'>" +st.wans[i].ifname + "</a>) :</strong> KO</span>"
+
+ if (st.wans[i].status == "recovering")
+ temp += "<span class='wanrecov'><strong>" + st.wans[i].name + "(<a href='" + st.wans[i].link + "'>" +st.wans[i].ifname + "</a>) :</strong> Recovering(" + st.wans[i].count + ")</span>"
+
+ if (st.wans[i].status == "failing")
+ temp += "<span class='wanfail'><strong>" + st.wans[i].name + "(<a href='" + st.wans[i].link + "'>" +st.wans[i].ifname + "</a>) :</strong> Failing(" + st.wans[i].count + ")</span>"
+ }
+ tx.innerHTML = temp
+ }else{
+ tx.innerHTML = ""
+ }
+ }
+
+ window.setTimeout(update_status, 5000);
+ }
+ )
+ };
+
+ update_status();
+//]]></script>
+
+<style type="text/css">
+ .wanok { background-color: rgb(144, 240, 144); }
+ .wanko { background-color: rgb(240, 144, 144); }
+ .wanrecov { background-color: rgb(240, 240, 0); }
+ .wanfail { background-color: rgb(255, 165, 0); }
+ .wanko, .wanok, .wanrecov, .wanfail {
+ padding: 0.4em;
+ margin: 0.4em;
+ }
+</style>
+
+<fieldset class="cbi-section">
+ <legend><%:Multi-WAN Status%></legend>
+ <div id="multiwan_status_text" style="text-align:center;"><em><%:Collecting data...%></em></div>
+</fieldset>
Index: applications/luci-multiwan/luasrc/view/admin_status/index/multiwan.htm
===================================================================
--- applications/luci-multiwan/luasrc/view/admin_status/index/multiwan.htm (révision 0)
+++ applications/luci-multiwan/luasrc/view/admin_status/index/multiwan.htm (révision 0)
@@ -0,0 +1 @@
+<%+multiwan_status%>
-------------- next part --------------
Index: modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua
===================================================================
--- modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua (révision 7191)
+++ modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua (copie de travail)
@@ -546,6 +546,14 @@
encr:depends({mode="sta-wds"})
encr:depends({mode="mesh"})
+function encr.write(self, section, value)
+ if value == "wpa" or value == "wpa2" then
+ self.map.uci:delete("wireless", section, "key")
+ end
+ self.map.uci:set("wireless", section, "encryption", value)
+end
+
+
encr:value("none", "No Encryption")
encr:value("wep-open", translate("WEP Open System"), {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"})
encr:value("wep-shared", translate("WEP Shared Key"), {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"})
@@ -592,35 +600,59 @@
encr:value("psk+psk2", "WPA-PSK/WPA2-PSK Mixed Mode")
end
-encr:depends("mode", "ap")
-encr:depends("mode", "sta")
-encr:depends("mode", "ap-wds")
-encr:depends("mode", "sta-wds")
-encr:depends("mode", "wds")
+auth_server = s:taboption("encryption", Value, "auth_server", translate("Radius-Authentication-Server"))
+auth_server:depends({mode="ap", encryption="wpa"})
+auth_server:depends({mode="ap", encryption="wpa2"})
+auth_server:depends({mode="ap-wds", encryption="wpa"})
+auth_server:depends({mode="ap-wds", encryption="wpa2"})
+auth_server.rmempty = true
+auth_server.datatype = "host"
-server = s:taboption("encryption", Value, "server", translate("Radius-Server"))
-server:depends({mode="ap", encryption="wpa"})
-server:depends({mode="ap", encryption="wpa2"})
-server:depends({mode="ap-wds", encryption="wpa"})
-server:depends({mode="ap-wds", encryption="wpa2"})
-server.rmempty = true
+auth_port = s:taboption("encryption", Value, "auth_port", translate("Radius-Authentication-Port"), translatef("Default %d", 1812))
+auth_port:depends({mode="ap", encryption="wpa"})
+auth_port:depends({mode="ap", encryption="wpa2"})
+auth_port:depends({mode="ap-wds", encryption="wpa"})
+auth_port:depends({mode="ap-wds", encryption="wpa2"})
+auth_port.rmempty = true
+auth_port.datatype = "port"
-port = s:taboption("encryption", Value, "port", translate("Radius-Port"))
-port:depends({mode="ap", encryption="wpa"})
-port:depends({mode="ap", encryption="wpa2"})
-port:depends({mode="ap-wds", encryption="wpa"})
-port:depends({mode="ap-wds", encryption="wpa2"})
-port.rmempty = true
+auth_secret = s:taboption("encryption", Value, "auth_secret", translate("Radius-Authentication-Secret"))
+auth_secret:depends({mode="ap", encryption="wpa"})
+auth_secret:depends({mode="ap", encryption="wpa2"})
+auth_secret:depends({mode="ap-wds", encryption="wpa"})
+auth_secret:depends({mode="ap-wds", encryption="wpa2"})
+auth_secret.rmempty = true
+auth_secret.password = true
+acct_server = s:taboption("encryption", Value, "acct_server", translate("Radius-Accounting-Server"))
+acct_server:depends({mode="ap", encryption="wpa"})
+acct_server:depends({mode="ap", encryption="wpa2"})
+acct_server:depends({mode="ap-wds", encryption="wpa"})
+acct_server:depends({mode="ap-wds", encryption="wpa2"})
+acct_server.rmempty = true
+acct_server.datatype = "host"
+
+acct_port = s:taboption("encryption", Value, "acct_port", translate("Radius-Accounting-Port"), translatef("Default %d", 1813))
+acct_port:depends({mode="ap", encryption="wpa"})
+acct_port:depends({mode="ap", encryption="wpa2"})
+acct_port:depends({mode="ap-wds", encryption="wpa"})
+acct_port:depends({mode="ap-wds", encryption="wpa2"})
+acct_port.rmempty = true
+acct_port.datatype = "port"
+
+acct_secret = s:taboption("encryption", Value, "acct_secret", translate("Radius-Accounting-Secret"))
+acct_secret:depends({mode="ap", encryption="wpa"})
+acct_secret:depends({mode="ap", encryption="wpa2"})
+acct_secret:depends({mode="ap-wds", encryption="wpa"})
+acct_secret:depends({mode="ap-wds", encryption="wpa2"})
+acct_secret.rmempty = true
+acct_secret.password = true
+
wpakey = s:taboption("encryption", Value, "_wpa_key", translate("Key"))
wpakey:depends("encryption", "psk")
wpakey:depends("encryption", "psk2")
wpakey:depends("encryption", "psk+psk2")
wpakey:depends("encryption", "psk-mixed")
-wpakey:depends({mode="ap", encryption="wpa"})
-wpakey:depends({mode="ap", encryption="wpa2"})
-wpakey:depends({mode="ap-wds", encryption="wpa"})
-wpakey:depends({mode="ap-wds", encryption="wpa2"})
wpakey.datatype = "wpakey"
wpakey.rmempty = true
wpakey.password = true
More information about the luci
mailing list