ip matching
Release 2.1.2

IPSに関する便利な機能を備えたスタンドアロンモジュール:
npm install --save ip-matching
# or
yarn add ip-matching含まれたドキュメントを含む独自の組み込みのタイプスクリプト宣言が付属しています。
import { getMatch , IPMatch , IPSubnetwork , IPRange , matches } from 'ip-matching' ;
// matches(ip: string | IP, target: string | IPMatch): boolean;
matches ( '10.0.0.1' , '10.0.0.0/24' ) ; // true
matches ( '10.0.1.1' , '10.0.0.0/24' ) ; // false
matches ( 'abc::def' , 'abc:*::def' ) ; // true
matches ( 'abc::def' , 'abc:9::def' ) ; // false
matches ( '0001:2:3:4:5:6:7' , '1:2:3:4:5:6:7' ) ; // true
// getMatch returns an instance of
// IPv4, IPv6, IPRange, IPSubnetwork or IPMask, all extending IPMatch
const mySubnet : IPMatch = getMatch ( 'fefe::0001:abcd/112' ) ;
mySubnet . type ; // 'IPSubnetwork'
mySubnet instanceof IPSubnetwork ; // true
mySubnet instanceof IPMatch ; // true
mySubnet . toString ( ) ; // 'fefe::1:0/112'
mySubnet . matches ( 'FEFE::1:bbbb' ) ; // true
mySubnet . matches ( 'FEFE::2:bbbb' ) ; // false
mySubnet . equals ( new IPSubnetwork ( new IPv6 ( 'fefe::1:abcd' ) , 112 ) ) ; // true
mySubnet . getAmount ( ) ; // 65536
( mySubnet as IPSubnetwork ) . getLast ( ) . toString ( ) ; // 'fefe::1:ffff'
const myIp = new IPv6 ( 'a:0:0::B:0:C' ) ;
myIp . toString ( ) ; // 'a::b:0:c'
myIp . toLongString ( ) ; // 'a:0:0:0:0:b:0:c'
myIp . toFullString ( ) ; // '000a:0000:0000:0000:0000:000b:0000:000c'
new IPv6 ( '::ffff:a9db:*' ) . toMixedString ( ) ; // '::ffff:169.219.*.*'
const myRange = getMatch ( '10.0.0.0-10.1.2.3' ) as IPRange ;
myRange . convertToMasks ( ) . map ( ( mask : IPMask ) => mask . convertToSubnet ( ) . toString ( ) ) ;
// [ '10.0.0.0/16', '10.1.0.0/23', '10.1.2.0/30' ]
const mask1 = getMatch ( '10.0.1.0/255.0.255.0' ) as IPMask ;
const mask2 = getMatch ( '10.0.0.0/128.0.0.0' ) as IPMask ;
mask1 . isSubsetOf ( mask2 ) ; // true
mask2 . getAmount ( ) ; // 2147483648
getMatch ( 'a::abbc:1234/ffff::ff80:000f' ) . toString ( ) ; // 'a::ab80:4/ffff::ff80:f'注: matches関数と無効な入力のすべてのコンストラクターエラー
すべての機能のテストコードまたはタイプスクリプト宣言を見ることができます。
10.0.0.010.0.0.*または10.*.0.*2001:0db8:85a3:0000:0000:8a2e:0370:73342001:db8:85a3::8a2e:0370:7334または:: or ::1またはa::2001::*または2001::*:abc:*::ffff:127.0.0.1 (IPv4パーツではワイルドカードが許可されていません)10.0.1*.0または2001::a*c10.0.0.0-10.1.2.32001::abc-2001::1:ffff10.0.0.0/162001::/12310.0.0.0/255.0.64.02001:abcd::/ffff:ff8:: IPMASKのtoString()メソッドは、EG /255.0.0.0から/8自動的に簡素化しませんが、それらは同等です。 2.0.0以降、IPMASKには、可能であれば、同等のiPSubnetworkを返すメソッドundefined convertToSubnet()が付属しています。
よく知られている類似したNPMパッケージと、私たちに欠けている機能をいくつか紹介します。その逆も同様です。いずれの場合も、このモジュールに適していると思われる場合は、新しい機能をお気軽にお問い合わせください。
.ip6.arpa )およびスコープ(ゾーン)アドレスをサポートする