summaryrefslogtreecommitdiff
path: root/includes/external/addressbook/node_modules/validator/lib/isIPRange.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/external/addressbook/node_modules/validator/lib/isIPRange.js')
-rw-r--r--includes/external/addressbook/node_modules/validator/lib/isIPRange.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/includes/external/addressbook/node_modules/validator/lib/isIPRange.js b/includes/external/addressbook/node_modules/validator/lib/isIPRange.js
new file mode 100644
index 0000000..293a1a2
--- /dev/null
+++ b/includes/external/addressbook/node_modules/validator/lib/isIPRange.js
@@ -0,0 +1,62 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isIPRange;
+
+var _assertString = _interopRequireDefault(require("./util/assertString"));
+
+var _isIP = _interopRequireDefault(require("./isIP"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var subnetMaybe = /^\d{1,3}$/;
+var v4Subnet = 32;
+var v6Subnet = 128;
+
+function isIPRange(str) {
+ var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
+ (0, _assertString.default)(str);
+ var parts = str.split('/'); // parts[0] -> ip, parts[1] -> subnet
+
+ if (parts.length !== 2) {
+ return false;
+ }
+
+ if (!subnetMaybe.test(parts[1])) {
+ return false;
+ } // Disallow preceding 0 i.e. 01, 02, ...
+
+
+ if (parts[1].length > 1 && parts[1].startsWith('0')) {
+ return false;
+ }
+
+ var isValidIP = (0, _isIP.default)(parts[0], version);
+
+ if (!isValidIP) {
+ return false;
+ } // Define valid subnet according to IP's version
+
+
+ var expectedSubnet = null;
+
+ switch (String(version)) {
+ case '4':
+ expectedSubnet = v4Subnet;
+ break;
+
+ case '6':
+ expectedSubnet = v6Subnet;
+ break;
+
+ default:
+ expectedSubnet = (0, _isIP.default)(parts[0], '6') ? v6Subnet : v4Subnet;
+ }
+
+ return parts[1] <= expectedSubnet && parts[1] >= 0;
+}
+
+module.exports = exports.default;
+module.exports.default = exports.default; \ No newline at end of file