1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 'use strict';
- const RFC3986 = require('./rfc3986');
- const internals = {
- Ip: {
- cidrs: {
- ipv4: {
- required: '\\/(?:' + RFC3986.ipv4Cidr + ')',
- optional: '(?:\\/(?:' + RFC3986.ipv4Cidr + '))?',
- forbidden: ''
- },
- ipv6: {
- required: '\\/' + RFC3986.ipv6Cidr,
- optional: '(?:\\/' + RFC3986.ipv6Cidr + ')?',
- forbidden: ''
- },
- ipvfuture: {
- required: '\\/' + RFC3986.ipv6Cidr,
- optional: '(?:\\/' + RFC3986.ipv6Cidr + ')?',
- forbidden: ''
- }
- },
- versions: {
- ipv4: RFC3986.IPv4address,
- ipv6: RFC3986.IPv6address,
- ipvfuture: RFC3986.IPvFuture
- }
- }
- };
- internals.Ip.createIpRegex = function (versions, cidr) {
- let regex;
- for (let i = 0; i < versions.length; ++i) {
- const version = versions[i];
- if (!regex) {
- regex = '^(?:' + internals.Ip.versions[version] + internals.Ip.cidrs[version][cidr];
- }
- else {
- regex += '|' + internals.Ip.versions[version] + internals.Ip.cidrs[version][cidr];
- }
- }
- return new RegExp(regex + ')$');
- };
- module.exports = internals.Ip;
|