ip matching
Release 2.1.2

الوحدة المستقلة مع بعض الميزات المفيدة بخصوص IPS:
npm install --save ip-matching
# or
yarn add ip-matchingيأتي مع إعلانات TypeScript المدمجة الخاصة بها مع وثائق متضمنة.
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 وجميع مخالطي المنشئين للمدخلات غير الصالحة
يمكنك إلقاء نظرة على رمز الاختبار أو إعلانات TypeScript لجميع الميزات.
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:: لا تقوم طريقة toString() IPMASK تلقائيًا بتبسيط مثل /255.0.0.0 إلى /8 ، على الرغم من أنها مكافئة. منذ 2.0.0 ، يأتي IPMASK مع طريقة convertToSubnet() التي تُرجع معاداة IPSubNetwork إن أمكن ، وإلا undefined .
فيما يلي بعض حزم NPM المماثلة المعروفة وما هي الميزات التي نفتقر إليها والعكس صحيح. في جميع الحالات ، لا تتردد في طلب ميزة جديدة إذا كنت تعتقد أنها مناسبة لهذه الوحدة.
.ip6.arpa ) وعناوين النطاق (المخصصة)