luci-mod-network: fix address validation

Fixes --server validation for:
- /domain[/domain]
- //
- /#/

Fixes hostname validation for:
- *.domain
- *domain

Changes ..domain to be an invalid hostname

Signed-off-by: Kyle Schwarz <zeranoe@gmail.com>
This commit is contained in:
Kyle Schwarz 2022-11-19 16:33:55 -05:00
parent 12487d4c11
commit de9341648a

View file

@ -126,7 +126,7 @@ function validateHostname(sid, s) {
if (s.length > 256) if (s.length > 256)
return _('Expecting: %s').format(_('valid hostname')); return _('Expecting: %s').format(_('valid hostname'));
var labels = s.replace(/^\.+|\.$/g, '').split(/\./); var labels = s.replace(/^\*?\.?|\.$/g, '').split(/\./);
for (var i = 0; i < labels.length; i++) for (var i = 0; i < labels.length; i++)
if (!labels[i].match(/^[a-z0-9_](?:[a-z0-9-]{0,61}[a-z0-9])?$/i)) if (!labels[i].match(/^[a-z0-9_](?:[a-z0-9-]{0,61}[a-z0-9])?$/i))
@ -156,13 +156,15 @@ function validateServerSpec(sid, s) {
if (s == null || s == '') if (s == null || s == '')
return true; return true;
var m = s.match(/^(?:\/(.+)\/)?(.*)$/); var m = s.match(/^(\/.*\/)?(.*)$/);
if (!m) if (!m)
return _('Expecting: %s').format(_('valid hostname')); return _('Expecting: %s').format(_('valid hostname'));
if (m[1] != '//' && m[1] != '/#/') {
var res = validateAddressList(sid, m[1]); var res = validateAddressList(sid, m[1]);
if (res !== true) if (res !== true)
return res; return res;
}
if (m[2] == '' || m[2] == '#') if (m[2] == '' || m[2] == '#')
return true; return true;