Skip to content

Super-efficient Node.js module to parse and check if an IP address is in a CIDR block. IPv4 and IPv6 supported.

Notifications You must be signed in to change notification settings

gosquared/ipcheck

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IPCheck

Travis Dependencies Join the chat at https://gitter.im/gosquared/ipcheck

NPM

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!

About

Super-efficient Node.js module to parse and check if an IP address is in a CIDR block. IPv4 and IPv6 supported.

Resources

Stars

Watchers

Forks

Packages

No packages published