luci-mod-network: add stricter wireless interface name validation
Linux wireless interface names have the following restrictions:
* It must not be an empty string
* It must not be '.' or '..'
* It must not contain any /, : or space character ( , \t, \n, ...)
* It must be less than 16 chars
* It likely must not contain any % either
Fixes: 8673aef8db
("luci-mod-network: remove uciname validation from wireless interface")
Signed-off-by: Glenn Washburn <development@efficientek.com>
[reword validation error messages, remove extended description text as it would be
shown as part of the validation errors]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
9c55500fe8
commit
6ad6a241c3
2 changed files with 10 additions and 1 deletions
|
@ -426,6 +426,15 @@ var ValidatorFactory = baseclass.extend({
|
|||
return this.assert(this.value.match(/^[a-zA-Z0-9_]+$/), _('valid UCI identifier'));
|
||||
},
|
||||
|
||||
netdevname: function() {
|
||||
var v = this.value;
|
||||
|
||||
if (v == '.' || v == '..')
|
||||
return this.assert(false, _('valid network device name, not "." or ".."'));
|
||||
|
||||
return this.assert(v.match(/^[^:/%\s]{1,15}$/), _('valid network device name between 1 and 15 characters not containing ":", "/", "%" or spaces'));
|
||||
},
|
||||
|
||||
range: function(min, max) {
|
||||
var val = this.factory.parseDecimal(this.value);
|
||||
return this.assert(val >= +min && val <= +max, _('value between %f and %f').format(min, max));
|
||||
|
|
|
@ -1152,7 +1152,7 @@ return view.extend({
|
|||
|
||||
o = ss.taboption('advanced', form.Value, 'ifname', _('Interface name'), _('Override default interface name'));
|
||||
o.optional = true;
|
||||
o.datatype = 'maxlength(15)';
|
||||
o.datatype = 'netdevname';
|
||||
o.placeholder = radioNet.getIfname();
|
||||
if (/^radio\d+\.network/.test(o.placeholder))
|
||||
o.placeholder = '';
|
||||
|
|
Loading…
Reference in a new issue