@@ -15,49 +15,37 @@ var http = require('http'),
1515 getPort = require ( "./lib/getPort" ) ,
1616 requestHandler = require ( "./lib/requestHandler" ) ,
1717 Recorder = require ( "./lib/Recorder" ) ,
18+ util = require ( "./lib/util" ) ,
1819 entities = require ( "entities" ) ,
1920 express = require ( "express" ) ,
2021 WebSocketServer = require ( 'ws' ) . Server ;
2122
2223GLOBAL . recorder = new Recorder ( ) ;
2324
24- var T_TYPE_HTTP = 0 ,
25+ var T_TYPE_HTTP = 0 ,
2526 T_TYPE_HTTPS = 1 ,
2627 DEFAULT_PORT = 8001 ,
2728 DEFAULT_WEB_PORT = 8002 ,
2829 DEFAULT_WEBSOCKET_PORT = 8003 ,
2930 DEFAULT_HOST = "localhost" ,
3031 DEFAULT_TYPE = T_TYPE_HTTP ;
3132
32- function proxyServer ( type , port , hostname , ruleFile ) {
33- var self = this ,
34- proxyType = / h t t p s / i. test ( type || DEFAULT_TYPE ) ? T_TYPE_HTTPS : T_TYPE_HTTP ,
35- proxyPort = port || DEFAULT_PORT ,
36- proxyHost = hostname || DEFAULT_HOST ;
37-
33+ //option
34+ //option.type : 'http'(default) or 'https'
35+ //option.port : 8001(default)
36+ //option.rule : ruleModule
37+ //option.hostname : localhost(default)
38+ function proxyServer ( option ) {
39+ option = option || { } ;
40+
41+ var self = this ,
42+ proxyType = / h t t p s / i. test ( option . type || DEFAULT_TYPE ) ? T_TYPE_HTTPS : T_TYPE_HTTP ,
43+ proxyPort = option . port || DEFAULT_PORT ,
44+ proxyHost = option . hostname || DEFAULT_HOST ,
45+ proxyRules = option . rule ;
46+
47+ requestHandler . setRules ( proxyRules ) ;
3848 self . httpProxyServer = null ;
39- self . close = function ( ) {
40- self . httpProxyServer && self . httpProxyServer . close ( ) ;
41- console . log ( color . green ( "server closed :" + proxyHost + ":" + proxyPort ) ) ;
42- }
43-
44- startWebServer ( ) ;
45-
46- if ( ruleFile ) {
47- if ( fs . existsSync ( ruleFile ) ) {
48- try { //for abs path
49- requestHandler . setRules ( require ( ruleFile ) ) ;
50- } catch ( e ) { //for relative path
51- requestHandler . setRules ( require ( "./" + ruleFile ) ) ;
52- }
53- console . log ( color . green ( "rule file loaded" ) ) ;
54- } else {
55- console . log ( color . red ( "can not find rule file" ) ) ;
56- }
57- } else {
58- rules = require ( "./lib/rule_default.js" ) ;
59- requestHandler . setRules ( rules ) ;
60- }
6149
6250 async . series (
6351 [
@@ -82,12 +70,18 @@ function proxyServer(type, port, hostname,ruleFile){
8270 }
8371 } ,
8472
73+ //listen CONNECT method for https over http
8574 function ( callback ) {
86- //listen CONNECT method for https over http
8775 self . httpProxyServer . on ( 'connect' , requestHandler . connectReqHandler ) ;
8876
8977 self . httpProxyServer . listen ( proxyPort ) ;
9078 callback ( null ) ;
79+ } ,
80+
81+ //start web interface
82+ function ( callback ) {
83+ startWebServer ( ) ;
84+ callback ( null ) ;
9185 }
9286 ] ,
9387
@@ -104,6 +98,10 @@ function proxyServer(type, port, hostname,ruleFile){
10498 }
10599 ) ;
106100
101+ self . close = function ( ) {
102+ self . httpProxyServer && self . httpProxyServer . close ( ) ;
103+ console . log ( color . green ( "server closed :" + proxyHost + ":" + proxyPort ) ) ;
104+ }
107105}
108106
109107function startWebServer ( port ) {
0 commit comments