diff options
author | Jo-Philipp Wich <jo@mein.io> | 2017-01-23 16:10:36 +0100 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2017-01-23 16:15:22 +0100 |
commit | e4b1bb315606c6c6078a1d3f81eea092762a47e7 (patch) | |
tree | 8ada839aa22c7476b81a2b347eaa0b198a7178aa /modules/luci-base/htdocs | |
parent | 937f4fbbdf8365664de2d1a20e382679a8f05543 (diff) |
luci-base: ipmask, ipmask4 and ipmask6 validators
These validators accept IP address specifications in the form
- address
- address/bits
- address/netmask
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'modules/luci-base/htdocs')
-rw-r--r-- | modules/luci-base/htdocs/luci-static/resources/cbi.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/modules/luci-base/htdocs/luci-static/resources/cbi.js b/modules/luci-base/htdocs/luci-static/resources/cbi.js index 0ca7e264a7..8e66cbc380 100644 --- a/modules/luci-base/htdocs/luci-static/resources/cbi.js +++ b/modules/luci-base/htdocs/luci-static/resources/cbi.js @@ -118,6 +118,50 @@ var cbi_validators = { return false; }, + 'ipmask': function() + { + return cbi_validators.ipmask4.apply(this) || + cbi_validators.ipmask6.apply(this); + }, + + 'ipmask4': function() + { + var ip = this, mask = 32; + + if (ip.match(/^(\S+)\/(\S+)$/)) + { + ip = RegExp.$1; + mask = RegExp.$2; + } + + if (!isNaN(mask) && (mask < 0 || mask > 32)) + return false; + + if (isNaN(mask) && !cbi_validators.ip4addr.apply(mask)) + return false; + + return cbi_validators.ip4addr.apply(ip); + }, + + 'ipmask6': function() + { + var ip = this, mask = 128; + + if (ip.match(/^(\S+)\/(\S+)$/)) + { + ip = RegExp.$1; + mask = RegExp.$2; + } + + if (!isNaN(mask) && (mask < 0 || mask > 128)) + return false; + + if (isNaN(mask) && !cbi_validators.ip6addr.apply(mask)) + return false; + + return cbi_validators.ip6addr.apply(ip); + }, + 'port': function() { var p = Int(this); |