luci-base: validation.js: add iprange, iprange4 and iprange6 validators
Add datatype validators for IP address ranges which are required for certain firewall inputs. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
5ef203a46e
commit
cf09f89df3
1 changed files with 30 additions and 0 deletions
|
@ -5,6 +5,19 @@ function bytelen(x) {
|
|||
return new Blob([x]).size;
|
||||
}
|
||||
|
||||
function arrayle(a, b) {
|
||||
if (!Array.isArray(a) || !Array.isArray(b))
|
||||
return false;
|
||||
|
||||
for (var i = 0; i < a.length; i++)
|
||||
if (a[i] > b[i])
|
||||
return false;
|
||||
else if (a[i] < b[i])
|
||||
return true;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
var Validator = baseclass.extend({
|
||||
__name__: 'Validation',
|
||||
|
||||
|
@ -333,6 +346,23 @@ var ValidatorFactory = baseclass.extend({
|
|||
_('valid IPv6 network'));
|
||||
},
|
||||
|
||||
iprange: function(negative) {
|
||||
return this.assert(this.apply('iprange4', null, [negative]) || this.apply('iprange6', null, [negative]),
|
||||
_('valid IP address range'));
|
||||
},
|
||||
|
||||
iprange4: function(negative) {
|
||||
var m = this.value.split('-');
|
||||
return this.assert(m.length == 2 && arrayle(this.factory.parseIPv4(m[0]), this.factory.parseIPv4(m[1])),
|
||||
_('valid IPv4 address range'));
|
||||
},
|
||||
|
||||
iprange6: function(negative) {
|
||||
var m = this.value.split('-');
|
||||
return this.assert(m.length == 2 && arrayle(this.factory.parseIPv6(m[0]), this.factory.parseIPv6(m[1])),
|
||||
_('valid IPv6 address range'));
|
||||
},
|
||||
|
||||
port: function() {
|
||||
var p = this.factory.parseInteger(this.value);
|
||||
return this.assert(p >= 0 && p <= 65535, _('valid port value'));
|
||||
|
|
Loading…
Reference in a new issue