@@ -28,6 +28,16 @@ var enableCors = function(req, res) {
28
28
}
29
29
} ;
30
30
31
+ var redirect2HomePage = function ( { res, httpprefix, serverName, } ) {
32
+ try {
33
+ res . setHeader ( 'location' , `${ httpprefix } ://${ serverName } ` )
34
+ } catch ( e ) {
35
+ logSave ( `error: ${ e } ` )
36
+ return
37
+ }
38
+ res . status ( 302 ) . send ( `` )
39
+ }
40
+
31
41
let getHostFromReq = ( req ) => { //return target
32
42
// url: http://127.0.0.1:8011/https/www.youtube.com/xxx/xxx/...
33
43
let https_prefix = '/https/'
@@ -114,7 +124,7 @@ let Proxy = ({blockedSites, urlModify, httpprefix, serverName, port, cookieDomai
114
124
if ( ! req . url ) {
115
125
return
116
126
}
117
- if ( req . url . indexOf ( site ) !== - 1 || req . headers [ 'referer' ] . indexOf ( site ) !== - 1 ) {
127
+ if ( req . url . indexOf ( site ) !== - 1 || ( req . headers [ 'referer' ] && req . headers [ 'referer' ] . indexOf ( site ) !== - 1 ) ) {
118
128
keys = Object . keys ( siteSpecificReplace [ site ] )
119
129
keys . forEach ( key => {
120
130
myRe = new RegExp ( key , 'g' ) // match group
@@ -188,7 +198,7 @@ let Proxy = ({blockedSites, urlModify, httpprefix, serverName, port, cookieDomai
188
198
if ( ( err . code && ( err . code === 'ECONNREFUSED' || err . code === 'EHOSTUNREACH' || err . code === 'EPROTO' ||
189
199
err . code === 'ECONNRESET' || err . code === 'ENOTFOUND' ) ) ||
190
200
( err . reason && err . reason . indexOf ( 'Expected' ) === - 1 ) ) {
191
- res . status ( 404 ) . send ( `{"error": " ${ err } "}` )
201
+ redirect2HomePage ( { res , httpprefix , serverName , } )
192
202
}
193
203
} catch ( e ) {
194
204
logSave ( `error of sending 404: ${ e } ` )
@@ -225,7 +235,8 @@ let Proxy = ({blockedSites, urlModify, httpprefix, serverName, port, cookieDomai
225
235
proxyRes . headers [ "content-type" ] . indexOf ( 'urlencoded' ) !== - 1 ||
226
236
proxyRes . headers [ "content-type" ] . indexOf ( 'json' ) !== - 1 ) {
227
237
if ( ! gunzipped ) {
228
- res . status ( 404 ) . send ( `{"error":"failed unzip"}` )
238
+ // res.status(404).send(`{"error":"failed unzip"}`)
239
+ redirect2HomePage ( { res, httpprefix, serverName, } )
229
240
return
230
241
}
231
242
logSave ( `utf-8 text...` )
@@ -316,7 +327,7 @@ let Proxy = ({blockedSites, urlModify, httpprefix, serverName, port, cookieDomai
316
327
if ( res . statusCode === 404 ) {
317
328
try {
318
329
delete res . headers [ 'content-length' ] //remove content-length field
319
- res . status ( 404 ) . send ( "" )
330
+ redirect2HomePage ( { res , httpprefix , serverName , } )
320
331
} catch ( e ) {
321
332
logSave ( `error: ${ e } ` )
322
333
}
@@ -331,15 +342,16 @@ let Proxy = ({blockedSites, urlModify, httpprefix, serverName, port, cookieDomai
331
342
332
343
let { host, httpType} = getHostFromReq ( req )
333
344
for ( let i = 0 ; i < blockedSites . length ; i ++ ) {
334
- let site = blockedSites [ i ]
345
+ let site = blockedSites [ i ]
335
346
if ( site === host ) {
336
- res . status ( 404 ) . send ( `{"blockedSite":true}` )
347
+ redirect2HomePage ( { res , httpprefix , serverName , } )
337
348
return
338
349
}
339
350
}
340
- console . log ( `httpType:${ httpType } , host:${ host } ` )
351
+ let timestr = new Date ( ) . toISOString ( )
352
+ console . log ( `[${ timestr } ] route:${ fwdStr } , httpType:${ httpType } , host:${ host } ` )
341
353
if ( host . indexOf ( serverName ) !== - 1 || // we cannot request resource from proxy itself
342
- host == '' || host . indexOf ( '.' ) === - 1 || ( fwdStr && fwdStr . split ( ',' ) . length > 3 ) ) { // too many forwardings
354
+ host == '' || host . indexOf ( '.' ) === - 1 || ( fwdStr && fwdStr . split ( ',' ) . length > 1 ) ) { // too many forwardings
343
355
res . status ( 404 ) . send ( "{}" )
344
356
return
345
357
}
@@ -365,7 +377,7 @@ let Proxy = ({blockedSites, urlModify, httpprefix, serverName, port, cookieDomai
365
377
logSave ( `req host:${ host } , req.url:${ req . url } , proxyReq.query:${ proxyReq . query } proxyReq.path:${ proxyReq . path } , proxyReq.url:${ proxyReq . url } proxyReq headers:${ JSON . stringify ( proxyReq . getHeaders ( ) ) } ` )
366
378
if ( host === '' || ! host ) {
367
379
logSave ( `------------------ sending status 404` )
368
- res . status ( 404 ) . send ( "{}" )
380
+ redirect2HomePage ( { res , httpprefix , serverName , } )
369
381
res . end ( )
370
382
}
371
383
0 commit comments