1
1
'use strict' ;
2
2
3
- const acao = { name : 'Access-Control-Allow-Origin' , value : '*' } ;
4
- const filter = { urls : [ "<all_urls>" ] } ;
5
- const rIDs = { } ; // tab objs by request ID
6
- const getRoot = host => {
3
+ /** ---------- Functions ---------- **/
4
+
5
+ function IPinRange ( ip , min , max ) {
6
+ for ( const i in ip ) {
7
+ if ( ip [ i ] < min [ i ] || ip [ i ] > max [ i ] ) return ;
8
+ }
9
+ return true ;
10
+ }
11
+
12
+ function isReservedAddress ( str ) {
13
+ const addr = str . split ( '.' ) ;
14
+ if ( addr . length !== 4 ) return ;
15
+ for ( const part of addr ) {
16
+ if ( Number . isNaN ( + part ) || part < 0 || part > 255 ) return ;
17
+ }
18
+ return (
19
+ IPinRange ( addr , [ 10 , 0 , 0 , 0 ] , [ 10 , 255 , 255 , 255 ] ) ||
20
+ IPinRange ( addr , [ 100 , 64 , 0 , 0 ] , [ 100 , 127 , 255 , 255 ] ) ||
21
+ IPinRange ( addr , [ 127 , 0 , 0 , 0 ] , [ 127 , 255 , 255 , 255 ] ) ||
22
+ IPinRange ( addr , [ 169 , 254 , 0 , 0 ] , [ 169 , 254 , 255 , 255 ] ) ||
23
+ IPinRange ( addr , [ 172 , 16 , 0 , 0 ] , [ 172 , 31 , 255 , 255 ] ) ||
24
+ IPinRange ( addr , [ 192 , 0 , 0 , 0 ] , [ 192 , 0 , 0 , 255 ] ) ||
25
+ IPinRange ( addr , [ 192 , 168 , 0 , 0 ] , [ 192 , 168 , 255 , 255 ] ) ||
26
+ IPinRange ( addr , [ 198 , 18 , 0 , 0 ] , [ 198 , 19 , 255 , 255 ] )
27
+ ) ;
28
+ }
29
+
30
+ function getRoot ( host ) {
7
31
const parts = host . split ( '.' ) ;
8
32
let root ;
9
33
while ( parts . length > 1 ) {
@@ -17,8 +41,9 @@ const getRoot = host => {
17
41
}
18
42
}
19
43
return root ;
20
- } ;
21
- const isExcluded = ( origin , target ) => {
44
+ }
45
+
46
+ function isExcluded ( origin , target ) {
22
47
const arr = settings . exclusions ;
23
48
for ( const e of arr ) {
24
49
if ( e . origin . includes ( '*' ) ) {
@@ -31,7 +56,13 @@ const isExcluded = (origin, target) => {
31
56
} else if ( e . target !== target ) continue ;
32
57
return true ;
33
58
}
34
- } ;
59
+ }
60
+
61
+ /** ------------------------------ **/
62
+
63
+ const acao = { name : 'Access-Control-Allow-Origin' , value : '*' } ;
64
+ const filter = { urls : [ "<all_urls>" ] } ;
65
+ const rIDs = { } ; // tab objs by request ID
35
66
36
67
browser . webRequest . onBeforeSendHeaders . addListener ( d => {
37
68
if ( d . tabId === - 1 || ! d . requestHeaders ) return ;
@@ -57,7 +88,7 @@ browser.webRequest.onBeforeSendHeaders.addListener(d => {
57
88
target . hash ||
58
89
target . username ||
59
90
target . password
60
- )
91
+ ) || isReservedAddress ( target . hostname )
61
92
) return ;
62
93
63
94
const newHeaders = [ ] ;
0 commit comments