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;
|
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({
|
var Validator = baseclass.extend({
|
||||||
__name__: 'Validation',
|
__name__: 'Validation',
|
||||||
|
|
||||||
|
@ -333,6 +346,23 @@ var ValidatorFactory = baseclass.extend({
|
||||||
_('valid IPv6 network'));
|
_('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() {
|
port: function() {
|
||||||
var p = this.factory.parseInteger(this.value);
|
var p = this.factory.parseInteger(this.value);
|
||||||
return this.assert(p >= 0 && p <= 65535, _('valid port value'));
|
return this.assert(p >= 0 && p <= 65535, _('valid port value'));
|
||||||
|
|
Loading…
Reference in a new issue