@@ -8,14 +8,17 @@ const {
88
99const {
1010 BlockList : BlockListHandle ,
11- AF_INET ,
12- AF_INET6 ,
1311} = internalBinding ( 'block_list' ) ;
1412
1513const {
1614 customInspectSymbol : kInspect ,
1715} = require ( 'internal/util' ) ;
1816
17+ const {
18+ SocketAddress,
19+ kHandle : kSocketAddressHandle ,
20+ } = require ( 'internal/socketaddress' ) ;
21+
1922const {
2023 JSTransferable,
2124 kClone,
@@ -55,56 +58,76 @@ class BlockList extends JSTransferable {
5558 }
5659
5760 addAddress ( address , family = 'ipv4' ) {
58- validateString ( address , 'address' ) ;
59- validateString ( family , 'family' ) ;
60- family = family . toLowerCase ( ) ;
61- if ( family !== 'ipv4' && family !== 'ipv6' )
62- throw new ERR_INVALID_ARG_VALUE ( 'family' , family ) ;
63- const type = family === 'ipv4' ? AF_INET : AF_INET6 ;
64- this [ kHandle ] . addAddress ( address , type ) ;
61+ if ( ! SocketAddress . isSocketAddress ( address ) ) {
62+ validateString ( address , 'address' ) ;
63+ validateString ( family , 'family' ) ;
64+ address = new SocketAddress ( {
65+ address,
66+ family,
67+ } ) ;
68+ }
69+ this [ kHandle ] . addAddress ( address [ kSocketAddressHandle ] ) ;
6570 }
6671
6772 addRange ( start , end , family = 'ipv4' ) {
68- validateString ( start , 'start' ) ;
69- validateString ( end , 'end' ) ;
70- validateString ( family , 'family' ) ;
71- family = family . toLowerCase ( ) ;
72- if ( family !== 'ipv4' && family !== 'ipv6' )
73- throw new ERR_INVALID_ARG_VALUE ( 'family' , family ) ;
74- const type = family === 'ipv4' ? AF_INET : AF_INET6 ;
75- const ret = this [ kHandle ] . addRange ( start , end , type ) ;
73+ if ( ! SocketAddress . isSocketAddress ( start ) ) {
74+ validateString ( start , 'start' ) ;
75+ validateString ( family , 'family' ) ;
76+ start = new SocketAddress ( {
77+ address : start ,
78+ family,
79+ } ) ;
80+ }
81+ if ( ! SocketAddress . isSocketAddress ( end ) ) {
82+ validateString ( end , 'end' ) ;
83+ validateString ( family , 'family' ) ;
84+ end = new SocketAddress ( {
85+ address : end ,
86+ family,
87+ } ) ;
88+ }
89+ const ret = this [ kHandle ] . addRange (
90+ start [ kSocketAddressHandle ] ,
91+ end [ kSocketAddressHandle ] ) ;
7692 if ( ret === false )
7793 throw new ERR_INVALID_ARG_VALUE ( 'start' , start , 'must come before end' ) ;
7894 }
7995
8096 addSubnet ( network , prefix , family = 'ipv4' ) {
81- validateString ( network , 'network' ) ;
82- validateString ( family , 'family' ) ;
83- family = family . toLowerCase ( ) ;
84- let type ;
85- switch ( family ) {
97+ if ( ! SocketAddress . isSocketAddress ( network ) ) {
98+ validateString ( network , 'network' ) ;
99+ validateString ( family , 'family' ) ;
100+ network = new SocketAddress ( {
101+ address : network ,
102+ family,
103+ } ) ;
104+ }
105+ switch ( network . family ) {
86106 case 'ipv4' :
87- type = AF_INET ;
88107 validateInt32 ( prefix , 'prefix' , 0 , 32 ) ;
89108 break ;
90109 case 'ipv6' :
91- type = AF_INET6 ;
92110 validateInt32 ( prefix , 'prefix' , 0 , 128 ) ;
93111 break ;
94- default :
95- throw new ERR_INVALID_ARG_VALUE ( 'family' , family ) ;
96112 }
97- this [ kHandle ] . addSubnet ( network , type , prefix ) ;
113+ this [ kHandle ] . addSubnet ( network [ kSocketAddressHandle ] , prefix ) ;
98114 }
99115
100116 check ( address , family = 'ipv4' ) {
101- validateString ( address , 'address' ) ;
102- validateString ( family , 'family' ) ;
103- family = family . toLowerCase ( ) ;
104- if ( family !== 'ipv4' && family !== 'ipv6' )
105- throw new ERR_INVALID_ARG_VALUE ( 'family' , family ) ;
106- const type = family === 'ipv4' ? AF_INET : AF_INET6 ;
107- return Boolean ( this [ kHandle ] . check ( address , type ) ) ;
117+ if ( ! SocketAddress . isSocketAddress ( address ) ) {
118+ validateString ( address , 'address' ) ;
119+ validateString ( family , 'family' ) ;
120+ try {
121+ address = new SocketAddress ( {
122+ address,
123+ family,
124+ } ) ;
125+ } catch {
126+ // Ignore the error. If it's not a valid address, return false.
127+ return false ;
128+ }
129+ }
130+ return Boolean ( this [ kHandle ] . check ( address [ kSocketAddressHandle ] ) ) ;
108131 }
109132
110133 get rules ( ) {
0 commit comments