diff options
6 files changed, 130 insertions, 65 deletions
diff --git a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua index 2124c3d28..25d1481f8 100644 --- a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua +++ b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua @@ -158,6 +158,10 @@ local knownParams = { "script_security", { 0, 1, 2, 3 }, translate("Policy level over usage of external programs and scripts") }, + { ListValue, + "compress", + { "lzo", "lz4" }, + translate("Enable a compression algorithm") }, } }, { "Networking", { @@ -234,6 +238,10 @@ local knownParams = { "route_nopull", 0, translate("Don't pull routes automatically") }, + { Flag, + "allow_recursive_routing", + 0, + translate("Don't drop incoming tun packets with same destination as host") }, { ListValue, "mtu_disc", { "yes", "maybe", "no" }, @@ -538,6 +546,10 @@ local knownParams = { { "", "local", "def1", "local def1" }, translate("Automatically redirect default route"), { client="1" } }, + { Value, + "verify_client_cert", + { "none", "optional", "require" }, + translate("Specify whether the client is required to supply a valid certificate") }, } }, { "Cryptography", { @@ -553,7 +565,51 @@ local knownParams = { -- parse { Value, "cipher", - "BF-CBC", + { + "AES-128-CBC", + "AES-128-CFB", + "AES-128-CFB1", + "AES-128-CFB8", + "AES-128-GCM", + "AES-128-OFB", + "AES-192-CBC", + "AES-192-CFB", + "AES-192-CFB1", + "AES-192-CFB8", + "AES-192-GCM", + "AES-192-OFB", + "AES-256-CBC", + "AES-256-CFB", + "AES-256-CFB1", + "AES-256-CFB8", + "AES-256-GCM", + "AES-256-OFB", + "BF-CBC", + "BF-CFB", + "BF-OFB", + "CAST5-CBC", + "CAST5-CFB", + "CAST5-OFB", + "DES-CBC", + "DES-CFB", + "DES-CFB1", + "DES-CFB8", + "DES-EDE-CBC", + "DES-EDE-CFB", + "DES-EDE-OFB", + "DES-EDE3-CBC", + "DES-EDE3-CFB", + "DES-EDE3-CFB1", + "DES-EDE3-CFB8", + "DES-EDE3-OFB", + "DES-OFB", + "DESX-CBC", + "RC2-40-CBC", + "RC2-64-CBC", + "RC2-CBC", + "RC2-CFB", + "RC2-OFB" + }, translate("Encryption cipher for packets") }, -- parse { Value, @@ -691,6 +747,14 @@ local knownParams = { "key_direction", { 0, 1 }, translate("The key direction for 'tls-auth' and 'secret' options") }, + { Flag, + "ncp_disable", + 0, + translate("This completely disables cipher negotiation") }, + { Value, + "ncp_ciphers", + "AES-256-GCM:AES-128-GCM", + translate("Restrict the allowed ciphers to be negotiated") }, } } } diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua index c4066a259..d85cb5824 100644 --- a/modules/luci-base/luasrc/dispatcher.lua +++ b/modules/luci-base/luasrc/dispatcher.lua @@ -40,6 +40,28 @@ function build_url(...) return table.concat(url, "") end +function _ordered_children(node) + local name, child, children = nil, nil, {} + + for name, child in pairs(node.nodes) do + children[#children+1] = { + name = name, + node = child, + order = child.order or 100 + } + end + + table.sort(children, function(a, b) + if a.order == b.order then + return a.name < b.name + else + return a.order < b.order + end + end) + + return children +end + function node_visible(node) if node then return not ( @@ -55,15 +77,10 @@ end function node_childs(node) local rv = { } if node then - local k, v - for k, v in util.spairs(node.nodes, - function(a, b) - return (node.nodes[a].order or 100) - < (node.nodes[b].order or 100) - end) - do - if node_visible(v) then - rv[#rv+1] = k + local _, child + for _, child in ipairs(_ordered_children(node)) do + if node_visible(child.node) then + rv[#rv+1] = child.name end end end @@ -595,11 +612,9 @@ function createtree() local ctx = context local tree = {nodes={}, inreq=true} - local modi = {} ctx.treecache = setmetatable({}, {__mode="v"}) ctx.tree = tree - ctx.modifiers = modi local scope = setmetatable({}, {__index = luci.dispatcher}) @@ -609,28 +624,9 @@ function createtree() v() end - local function modisort(a,b) - return modi[a].order < modi[b].order - end - - for _, v in util.spairs(modi, modisort) do - scope._NAME = v.module - setfenv(v.func, scope) - v.func() - end - return tree end -function modifier(func, order) - context.modifiers[#context.modifiers+1] = { - func = func, - order = order or 0, - module - = getfenv(2)._NAME - } -end - function assign(path, clone, title, order) local obj = node(unpack(path)) obj.nodes = nil @@ -720,24 +716,7 @@ end -- Subdispatchers -- function _find_eligible_node(root, prefix, deep, types, descend) - local _, cur_name, cur_node - local childs = { } - - for cur_name, cur_node in pairs(root.nodes) do - childs[#childs+1] = { - node = cur_node, - name = cur_name, - order = cur_node.order or 100 - } - end - - table.sort(childs, function(a, b) - if a.order == b.order then - return a.name < b.name - else - return a.order < b.order - end - end) + local children = _ordered_children(root) if not root.leaf and deep ~= nil then local sub_path = { unpack(prefix) } @@ -746,10 +725,11 @@ function _find_eligible_node(root, prefix, deep, types, descend) deep = nil end - for _, cur_node in ipairs(childs) do - sub_path[#prefix+1] = cur_node.name + local _, child + for _, child in ipairs(children) do + sub_path[#prefix+1] = child.name - local res_path = _find_eligible_node(cur_node.node, sub_path, + local res_path = _find_eligible_node(child.node, sub_path, deep, types, true) if res_path then diff --git a/modules/luci-base/luasrc/dispatcher.luadoc b/modules/luci-base/luasrc/dispatcher.luadoc index f26256953..a77f8d8b0 100644 --- a/modules/luci-base/luasrc/dispatcher.luadoc +++ b/modules/luci-base/luasrc/dispatcher.luadoc @@ -82,15 +82,6 @@ Build the index before if it does not exist yet. ]] ---[[ -Register a tree modifier. - -@class function -@name modifier -@param func Modifier function -@param order Modifier order value (optional) -]] - ----[[ Clone a node of the dispatching tree to another position. @class function diff --git a/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua b/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua index 7c4088660..9ab282c3a 100644 --- a/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua +++ b/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua @@ -17,7 +17,9 @@ local acct_port, acct_secret, acct_server, anonymous_identity, ant1, ant2, privkeypwd2, r0_key_lifetime, r0kh, r1_key_holder, r1kh, reassociation_deadline, retry_timeout, ssid, st, tp, wepkey, wepslot, wmm, wpakey, wps, disassoc_low_ack, short_preamble, beacon_int, dtim_period, - wparekey, inactivitypool, maxinactivity, listeninterval + wparekey, inactivitypool, maxinactivity, listeninterval, + dae_client, dae_port, dae_port + arg[1] = arg[1] or "" @@ -755,6 +757,30 @@ acct_secret:depends({mode="ap-wds", encryption="wpa2"}) acct_secret.rmempty = true acct_secret.password = true +dae_client = s:taboption("encryption", Value, "dae_client", translate("DAE-Client")) +dae_client:depends({mode="ap", encryption="wpa"}) +dae_client:depends({mode="ap", encryption="wpa2"}) +dae_client:depends({mode="ap-wds", encryption="wpa"}) +dae_client:depends({mode="ap-wds", encryption="wpa2"}) +dae_client.rmempty = true +dae_client.datatype = "host(0)" + +dae_port = s:taboption("encryption", Value, "dae_port", translate("DAE-Port"), translatef("Default %d", 3799)) +dae_port:depends({mode="ap", encryption="wpa"}) +dae_port:depends({mode="ap", encryption="wpa2"}) +dae_port:depends({mode="ap-wds", encryption="wpa"}) +dae_port:depends({mode="ap-wds", encryption="wpa2"}) +dae_port.rmempty = true +dae_port.datatype = "port" + +dae_secret = s:taboption("encryption", Value, "dae_secret", translate("DAE-Secret")) +dae_secret:depends({mode="ap", encryption="wpa"}) +dae_secret:depends({mode="ap", encryption="wpa2"}) +dae_secret:depends({mode="ap-wds", encryption="wpa"}) +dae_secret:depends({mode="ap-wds", encryption="wpa2"}) +dae_secret.rmempty = true +dae_secret.password = true + wpakey = s:taboption("encryption", Value, "_wpa_key", translate("Key")) wpakey:depends("encryption", "psk") wpakey:depends("encryption", "psk2") diff --git a/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css b/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css index 394361ecd..98f6022ca 100644 --- a/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css +++ b/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css @@ -174,6 +174,10 @@ a:hover { float: left; } +.nowrap { + white-space: nowrap; +} + /* Typography.less * Headings, body text, lists, code, and more for a versatile and durable typography system * ---------------------------------------------------------------------------------------- */ @@ -1020,8 +1024,9 @@ header .dropdown-menu a.hover, padding: 0 2px; list-style: none; display: flex; - background: linear-gradient(#ddd 0%, #ddd 100%) repeat-x; - background-size: 1px 1px; + flex-wrap: wrap; + background: linear-gradient(#fff 28px, #ddd 28px); + background-size: 1px 29px; background-position: left bottom; } diff --git a/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/mobile.css b/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/mobile.css index 2e1ffb035..062d274b7 100644 --- a/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/mobile.css +++ b/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/mobile.css @@ -11,7 +11,6 @@ header h3 a, header .brand { background: linear-gradient(#fff 20%, #ddd 100%); background-size: 1px 34px; margin-bottom: 10px; - flex-wrap: wrap; } .tabs > li, .cbi-tabmenu > li { |