1 |
|
2 |
|
3 |
|
4 |
|
5 | const ruleLoader = require('../lib/ruleLoader');
|
6 | const logUtil = require('../lib/log');
|
7 | const AnyProxy = require('../proxy');
|
8 |
|
9 | module.exports = function startServer(program) {
|
10 | let proxyServer;
|
11 |
|
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 |
|
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 |
|
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 |
|
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 | }
|