Skip to content

Latest commit

 

History

History
99 lines (75 loc) · 4.09 KB

README.md

File metadata and controls

99 lines (75 loc) · 4.09 KB

get-ip-range

All Contributors

Simple utility to convert either CIDR notation, a hyphenated IP range, or two IP addresses to an array of the range of IP addresses.


Build StatusISC License


Installation

$ npm i get-ip-range

Accepted formats

IPv4

  • CIDR "x.x.x.x/x"
  • Range "x.x.x.x-x.x.x.x"
  • Two IPs "x.x.x.x", "x.x.x.x"

IPv6

  • CIDR "x:x:x:x:x:x:x:x/x"
  • Range "::x:x:x-::x:x:x"
  • Two IPs "::x:x:x", "::x:x:x"

N.B. Shorthand IPv6 is supported


Usage

import { getIPRange } from 'get-ip-range';

const ipv4CIDR = getIPRange('192.168.1.134/29');
const ipv4Range = getIPRange('192.168.1.128-192.168.1.135');
const twoIPv4 = getIPRange('192.168.1.128', '192.168.1.135');

// All return:
[
  '192.168.1.128',
  '192.168.1.129',
  '192.168.1.130',
  '192.168.1.131',
  '192.168.1.132',
  '192.168.1.133',
  '192.168.1.134',
  '192.168.1.135',
]

const ipv6CIDR = getIPRange('0:0:0:0:0:ffff:102:304/126');
const ipv6Range = getIPRange('::ffff:102:304-::ffff:102:307');
const twoIPv6 = getIPRange('::ffff:102:304', '::ffff:102:307');

// All return:
[
  '::ffff:102:304',
  '::ffff:102:305',
  '::ffff:102:306',
  '::ffff:102:307',
]

Errors

  • If the supplied IP address(es) are invalid, the request will throw an error. Please handle errors appropriately.
  • If there are more than the default maximum range (10000) or the environment variable (MAX_RANGE) IPs in the range, it will throw an error.

Contributors


Joe Schofield

💻

Miosame

💻

João Antunes

💻

Chingiz Toimbetov

💻

yaniv-checkmarx

🐛

Stanislav Sizonenko

🐛