
Modul mandiri dengan beberapa fitur praktis mengenai IPS:
npm install --save ip-matching
# or
yarn add ip-matchingDilengkapi dengan deklarasi naskah bawaannya sendiri dengan dokumentasi yang disertakan.
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' Catatan : Fungsi matches dan semua kesalahan konstruktor untuk input yang tidak valid
Anda dapat melihat kode uji atau deklarasi TypeScript untuk semua fitur.
10.0.0.010.0.0.* Atau bahkan 10.*.0.*2001:0db8:85a3:0000:0000:8a2e:0370:73342001:db8:85a3::8a2e:0370:7334 atau :: atau ::1 atau a::2001::* atau bahkan 2001::*:abc:*::ffff:127.0.0.1 (tidak ada wildcard yang diizinkan di bagian IPv4)10.0.1*.0 atau 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:: Metode IPMASK toString() tidak secara otomatis menyederhanakan EG /255.0.0.0 hingga /8 , meskipun itu setara. Sejak 2.0.0, IPMASK dilengkapi dengan metode convertToSubnet() yang mengembalikan ipsubnetwork yang setara jika memungkinkan, jika undefined .
Berikut adalah beberapa paket NPM serupa yang terkenal dan fitur apa yang mereka miliki dan sebaliknya. Dalam semua kasus, jangan ragu untuk meminta fitur baru jika Anda pikir itu cocok untuk modul ini.
.ip6.arpa ) dan scoped (Zoned) alamat