IP Address Toolkit Library
This is a tool library that implements IPv4 adn IPv6 address operations, providing functions like IP address conversion, validation, subnet calculation, etc. It can facilitate various IP address processing tasks in network programming.
Features
- IP address conversion: string to integer and vice versa
- IP address validation: check address validity
- Subnet check: determine if address are in the same subnet
- CIDR parsing: get address range info
- Subnet mask: generate mask from prefix
- IP range: represent address range
- And other functions
Installation
# Using npm
$ npm install --save ip-toolkit
# or Using yarn
$ yarn install --save ip-toolkit
IPv4 Usage
const { IP } = require('ip-toolkit')
IP.version("192.168.0.1")
IP.version("::ffff:ffff")
IP.version("::f1fff:ffff")
IP.ip2long("192.168.0.1")
IP.ip2long('::ffff:ffff')
IP.long2ip(3232235521)
IP.long2ip(4294967295n)
IP.isValidIP('172.16.1.1')
IP.isValidIP('f16c:f7ec::36b8')
IP.isCIDR('172.16.1.1/0')
IP.isCIDR('ff::99:ff/64')
IP.isConflict(['192.168.1.0/24', '192.168.0.0/16'])
IP.isConflict(['2001:1db8::/32', '2001:1db8::/16'])
IP.contains('192.168.1.0/24', '192.168.1.5')
IP.contains('2001:db8::1/64', '2001:db8::11')
const { IPv4 } = require('ip-toolkit')
IPv4.ip2long("192.168.0.1")
IPv4.ip2long("192.168.0.257")
IPv4.long2ip(3232235521)
IPv4.long2ip(-1)
IPv4.isValidIP('172.16.1.1')
IPv4.isValidIP('172.16.01.1')
IPv4.isValidIP('172.16.01.1', {strict: true})
IPv4.isCIDR('172.16.1.1/0')
IPv4.isCIDR('172.16.0.1/32')
IPv4.isCIDR('172.16.1.1/33')
IPv4.isCIDR('172.16.01.1/32')
IPv4.isEqual('192.168.0.1', 3232235521)
IPv4.isEqual('192.168.1.10', '192.168.1.10')
IPv4.contains('192.168.1.0/24', '192.168.1.5')
IPv4.contains('192.168.1.0/24', '192.168.2.5')
IPv4.isPrivate('192.168.0.1')
IPv4.isPrivate('114.114.114.114')
IPv4.isValidMask(24)
IPv4.isValidMask('255.255.255.0')
IPv4.isValidMask('255.255.256.0')
IPv4.isConflict(['192.168.1.0/24', '192.168.0.0/16'])
IPv4.isConflict(['192.168.1.0/24', '192.168.2.0/24'])
IPv4.isConflict(['192.168.1.0/24', '192.168.2.0/24', '192.168.3.0/16'])
IPv4.isConflict(['192.168.1.0/24', '192.168.2.0/24', '192.168.3.0/24'])
IPv4.toBinHex('172.16.0.1');
IPv4.toIPv6Format('192.168.1.1');
IPv4.toInverseMask(24);
IPv4.toInverseMask(16);
IPv4.toInverseMask('255.255.255.0');
IPv4.toInverseMask('255.255.0.0');
IPv4.toMaskLength('255.255.255.0')
IPv4.toMaskLength('255.255.256.0')
IPv4.toSubnetMask(0)
IPv4.toSubnetMask(8)
IPv4.toSubnetMask(16)
IPv4.toSubnetMask(24)
IPv4.isSameSubnet('192.168.1.10', '192.168.1.100', '255.255.255.0');
IPv4.isSameSubnet('192.168.1.10', '192.168.2.100', '255.255.255.0');
IPv4.parseCIDR('192.168.0.1/24')
IPv4.parseSubnet('192.168.0.1', '255.255.255.0')
const range1 = IPv4.ipRange.fromLong(3232235777, 3232235876);
IPv4.range1.ipCount();
IPv4.range1.contains('192.168.1.11');
IPv4.range1.long2ip()
const range2 = IPv4.ipRange.fromString('192.168.1.1', '192.168.1.100');
IPv4.range2.ipCount()
IPv4.range2.contains('192.168.1.11');
IPv4.range2.ip2long()
IPv6 Usage
const { IPv6 } = require('ip-toolkit')
IPv6.ip2long('::ffff:ffff')
IPv6.ip2long(4294967295n)
IPv6.isValidIP('f16c:f7ec:cfa2:e1c5:9a3c:cb08:801f:36b8')
IPv6.isCIDR('::9999:ffff/0')
IPv6.isCIDR('::9999:ffff/128')
IPv6.isCIDR('::9999:ffff/291')
IPv6.isConflict(['2001:db8::1/120', '2001:db8::1/122'])
IPv6.isConflict(['2001:db8::11/64', '2001:db8::11/48'])
IPv6.expandedForm('2001:db8::1')
IPv6.compressedForm('2001:0db8:0000:0000:0000:0000:0000:0001')
IPv6.parseCIDR('::9999:ffff/118')
Raycast Extension
This project has already released an extension plugin on Raycast !
Contributing
Issues and pull requests are welcome!
Star on GitHub
If you find this project useful, please star it on GitHub !
License
This project is under the MIT License.