ipcheck
Version:
Super-efficient module to parse and check if an IP address is in a CIDR block. IPv4 and IPv6 supported.
92 lines (57 loc) • 2.32 kB
Markdown
# IPCheck
[](https://travis-ci.org/gosquared/ipcheck)
[](https://david-dm.org/gosquared/ipcheck)
[](https://gitter.im/gosquared/ipcheck)
[](https://www.npmjs.com/package/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...
```js
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.
```js
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!
```js
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.
```js
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...
```js
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!