From 49529bb59b345619cfac8fd1cf278e5529298f58 Mon Sep 17 00:00:00 2001 From: Paul Donald Date: Fri, 16 Feb 2024 01:49:29 +0100 Subject: [PATCH] luci-mod-network: wireless: RADIUS Access/Accounting-Request attrs See following for more detail: https://w1.fi/cgit/hostap/commit/?id=af35e7af7f8bb1ca9f0905b4074fb56a264aa12b Signed-off-by: Paul Donald (cherry picked from commit d9e7be1b435c9dc98829b10d153e5ff83ee4c213) --- .../resources/view/network/wireless.js | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js index 294fec7957..de08031877 100644 --- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js +++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js @@ -1434,6 +1434,34 @@ return view.extend({ o.password = true; /* extra RADIUS settings start */ + var attr_validate = function(section_id, value) { + if (!value) + return true; + + if (!/^[0-9]+(:s:.+|:d:[0-9]+|:x:([0-9a-zA-Z]{2})+)?$/.test(value) ) + return _('Must be in %s format.').format('[:]'); + + return true; + }; + + var req_attr_syntax = _('Format:') + '<attr_id>[:<syntax:value>]' + '
' + + 'syntax: s = %s; '.format(_('string (UTF-8)')) + 'd = %s; '.format(_('integer')) + 'x = %s'.format(_('octet string')) + + /* https://w1.fi/cgit/hostap/commit/?id=af35e7af7f8bb1ca9f0905b4074fb56a264aa12b */ + o = ss.taboption('encryption', form.DynamicList, 'radius_auth_req_attr', _('RADIUS Access-Request attributes'), + _('Attributes to add/replace in each request.') + '
' + req_attr_syntax ); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o.rmempty = true; + o.validate = attr_validate; + o.placeholder = '126:s:Operator'; + + o = ss.taboption('encryption', form.DynamicList, 'radius_acct_req_attr', _('RADIUS Accounting-Request attributes'), + _('Attributes to add/replace in each request.') + '
' + req_attr_syntax ); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o.rmempty = true; + o.validate = attr_validate; + o.placeholder = '77:x:74657374696e67'; + o = ss.taboption('encryption', form.ListValue, 'dynamic_vlan', _('RADIUS Dynamic VLAN Assignment'), _('Required: Rejects auth if RADIUS server does not provide appropriate VLAN attributes.')); add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); o.value('0', _('Disabled')); @@ -1462,6 +1490,7 @@ return view.extend({ o = ss.taboption('encryption', form.Value, 'vlan_bridge', _('RADIUS VLAN Bridge Naming Scheme'), _('E.g. br-vlan or brvlan.')); add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); o.rmempty = true; + /* extra RADIUS settings end */ o = ss.taboption('encryption', form.Value, 'dae_client', _('DAE-Client'), _('Dynamic Authorization Extension client.')); -- 2.30.2