11var proxy = require ( "node-tcp-proxy" ) ;
22var util = require ( "util" ) ;
33var replace = require ( 'buffer-replace' ) ;
4+ var argv = require ( "commander" ) ;
45
5- var serviceHosts = [ "apache.org" , "apache.org" ] ;
6- var servicePorts = [ 80 , 80 ] ;
6+ argv
7+ . usage ( "[options]" )
8+ . option ( "--tls" , "Use TLS 1.2; " , false )
9+ . parse ( process . argv ) ;
710
8- var newProxy = proxy . createProxy ( 8080 , serviceHosts , servicePorts , {
11+ var PROXY_HOST = "localhost" ;
12+ var PROXY_PORT = "8080" ;
13+ var SERVICE_HOST = "www.baidu.com" ;
14+ var SERVICE_PORT = argv . tls ? 443 : 80 ;
15+
16+ var serviceHosts = [ SERVICE_HOST , SERVICE_HOST ] ;
17+ var servicePorts = [ SERVICE_PORT , SERVICE_PORT ] ;
18+
19+ var options = {
920 upstream : function ( context , data ) {
1021 log ( context . proxySocket , data ) ;
11- data = replace ( data , "localhost:8080" , "apache.org" ) ;
22+ data = replace ( data , ` ${ PROXY_HOST } : ${ PROXY_PORT } ` , SERVICE_HOST ) ;
1223 return data ;
1324 } ,
1425 downstream : function ( context , data ) {
1526 log ( context . serviceSocket , data ) ;
16- data = replace ( data , "apache.org" , "localhost:8080" ) ;
27+ data = replace ( data , SERVICE_HOST , ` ${ PROXY_HOST } : ${ PROXY_PORT } ` ) ;
1728 return data ;
1829 } ,
1930 serviceHostSelected : function ( proxySocket , i ) {
2031 console . log ( util . format ( "Service host %s:%s selected for client %s:%s." ,
21- serviceHosts [ i ] ,
22- servicePorts [ i ] ,
32+ serviceHosts [ parseInt ( i ) ] ,
33+ servicePorts [ parseInt ( i ) ] ,
2334 proxySocket . remoteAddress ,
2435 proxySocket . remotePort ) ) ;
2536 // use your own strategy to calculate i
2637 return i ;
2738 }
28- } ) ;
39+ } ;
40+
41+ if ( argv . tls ) {
42+ options . tls = "both" ;
43+ }
44+
45+ var newProxy = proxy
46+ . createProxy ( PROXY_PORT , serviceHosts , servicePorts , options ) ;
2947
3048function log ( socket , data ) {
3149 console . log ( util . format ( "%s:%s sent:" ,
@@ -36,6 +54,12 @@ function log(socket, data) {
3654
3755console . log ( "Open http://localhost:8080 in the browser." ) ;
3856
57+ if ( argv . tls ) {
58+ console . log ( "TLS 1.2 is enabled." ) ;
59+ } else {
60+ console . log ( "Specify --tls in command line if you want to use TLS 1.2." ) ;
61+ }
62+
3963console . log ( "press Enter key to quit..." ) ;
4064setTimeout ( handleTimeout , 1000 ) ;
4165function handleTimeout ( ) {
0 commit comments