UNPKG

2.16 kBJavaScriptView Raw
1/**
2* start the AnyProxy server
3*/
4
5const ruleLoader = require('../lib/ruleLoader');
6const logUtil = require('../lib/log');
7const AnyProxy = require('../proxy');
8
9module.exports = function startServer(program) {
10 let proxyServer;
11 // load rule module
12 new Promise((resolve, reject) => {
13 if (program.rule) {
14 resolve(ruleLoader.requireModule(program.rule));
15 } else {
16 resolve(null);
17 }
18 })
19 .catch(e => {
20 logUtil.printLog('Failed to load rule file', logUtil.T_ERR);
21 logUtil.printLog(e, logUtil.T_ERR);
22 process.exit();
23 })
24
25 //start proxy
26 .then(ruleModule => {
27 proxyServer = new AnyProxy.ProxyServer({
28 type: 'http',
29 port: program.port || 8001,
30 throttle: program.throttle,
31 rule: ruleModule,
32 webInterface: {
33 enable: true,
34 webPort: program.web,
35 },
36 wsIntercept: program.wsIntercept,
37 forceProxyHttps: program.intercept,
38 dangerouslyIgnoreUnauthorized: !!program.ignoreUnauthorizedSsl,
39 silent: program.silent
40 });
41 // proxyServer.on('ready', () => {});
42 proxyServer.start();
43 })
44 .catch(e => {
45 logUtil.printLog(e, logUtil.T_ERR);
46 if (e && e.code) {
47 logUtil.printLog('code ' + e.code, logUtil.T_ERR);
48 }
49 logUtil.printLog(e.stack, logUtil.T_ERR);
50 });
51
52
53 process.on('exit', (code) => {
54 if (code > 0) {
55 logUtil.printLog('AnyProxy is about to exit with code: ' + code, logUtil.T_ERR);
56 }
57
58 process.exit();
59 });
60
61 //exit cause ctrl+c
62 process.on('SIGINT', () => {
63 try {
64 proxyServer && proxyServer.close();
65 } catch (e) {
66 console.error(e);
67 }
68 process.exit();
69 });
70
71 process.on('uncaughtException', (err) => {
72 let errorTipText = 'got an uncaught exception, is there anything goes wrong in your rule file ?\n';
73 try {
74 if (err && err.stack) {
75 errorTipText += err.stack;
76 } else {
77 errorTipText += err;
78 }
79 } catch (e) { }
80 logUtil.printLog(errorTipText, logUtil.T_ERR);
81 try {
82 proxyServer && proxyServer.close();
83 } catch (e) { }
84 process.exit();
85 });
86}