@@ -8,14 +8,17 @@ const {
8
8
9
9
const {
10
10
BlockList : BlockListHandle ,
11
- AF_INET ,
12
- AF_INET6 ,
13
11
} = internalBinding ( 'block_list' ) ;
14
12
15
13
const {
16
14
customInspectSymbol : kInspect ,
17
15
} = require ( 'internal/util' ) ;
18
16
17
+ const {
18
+ SocketAddress,
19
+ kHandle : kSocketAddressHandle ,
20
+ } = require ( 'internal/socketaddress' ) ;
21
+
19
22
const {
20
23
JSTransferable,
21
24
kClone,
@@ -55,56 +58,76 @@ class BlockList extends JSTransferable {
55
58
}
56
59
57
60
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 ] ) ;
65
70
}
66
71
67
72
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 ] ) ;
76
92
if ( ret === false )
77
93
throw new ERR_INVALID_ARG_VALUE ( 'start' , start , 'must come before end' ) ;
78
94
}
79
95
80
96
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 ) {
86
106
case 'ipv4' :
87
- type = AF_INET ;
88
107
validateInt32 ( prefix , 'prefix' , 0 , 32 ) ;
89
108
break ;
90
109
case 'ipv6' :
91
- type = AF_INET6 ;
92
110
validateInt32 ( prefix , 'prefix' , 0 , 128 ) ;
93
111
break ;
94
- default :
95
- throw new ERR_INVALID_ARG_VALUE ( 'family' , family ) ;
96
112
}
97
- this [ kHandle ] . addSubnet ( network , type , prefix ) ;
113
+ this [ kHandle ] . addSubnet ( network [ kSocketAddressHandle ] , prefix ) ;
98
114
}
99
115
100
116
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 ] ) ) ;
108
131
}
109
132
110
133
get rules ( ) {
0 commit comments