ipcheck
v0.1.0
Published
Super-efficient module to parse and check if an IP address is in a CIDR block. IPv4 and IPv6 supported.
Downloads
15,411
Readme
IPCheck
Quickly parses IP addresses, allowing them to be checked for CIDR matches.
Converts IPv4 to IPv6 to keep the process seamless and allow transitional IPs.
Install
npm install ipcheck --save
Usage
Quick
To easily check an IP and a CIDR without any extra thrills...
var IPCheck = require('ipcheck');
IPCheck.match('192.168.0.1', '192.168.0.1/32'); //= true
Ordinary
Allows you to individually validate and re-use different IPs.
var IPCheck = require('ipcheck');
var ip = new IPCheck('192.168.0.1');
var cidr = new IPCheck('192.168.0.1/32');
ip.match(cidr); //= true
IPv6
Works seamlessly!
IPCheck.match('FE80:0000:0000:0000:0202:B3FF:FE1E:8329', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329/128'); //= true
IPv4 and IPv6 transitional
As all IPv4 addresses are converted to IPv6, transitional IPs are supported.
var ip = new IPCheck('192.168.0.1');
var ipv4cidr = new IPCheck('192.168.0.1/32');
var ipv6cidr = new IPCheck('::ffff:192.168.0.1/128');
ip.match(ipv4cidr); //= true
ip.match(ipv6cidr); //= true
To convert a CIDR from IPv4 to IPv6, the mask simply has 96 added to it.
Invalid IPs/errors
IPCheck is designed to not throw errors.
If you'd like to know an address is valid, simply read the valid
property...
var ip = new IPCheck('192.168.0.1');
ip.valid; //= true
var badIP = new IPCheck([ 'huh?' ]);
badIP.valid; //= false
var anotherBadIP = new IPCheck('silly.ip');
anotherBadIP.valid; //= false
// Match always returns false if either the IP or the CIDR are invalid
IPCheck.match('hi', 'oh/no');
Other
Benchmarks
npm run benchmark
- simply compares this to ipaddr.js and ip-address modules in places. The TL;DR of it is that ipcheck is reliably faster.
Tests
npm test
- ensure everything works!