davechri 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of davechri might be problematic. Click here for more details.

Files changed (113) hide show
  1. package/README.md +277 -0
  2. package/bin/proxyall +5 -0
  3. package/build/app.js +89 -0
  4. package/build/app.js.map +1 -0
  5. package/build/common/Message.js +34 -0
  6. package/build/common/Message.js.map +1 -0
  7. package/build/common/ProxyConfig.js +27 -0
  8. package/build/common/ProxyConfig.js.map +1 -0
  9. package/build/node-http-mitm-proxy/.gitattributes +2 -0
  10. package/build/node-http-mitm-proxy/.travis.yml +10 -0
  11. package/build/node-http-mitm-proxy/README.md +539 -0
  12. package/build/node-http-mitm-proxy/bin/mitm-proxy.js +36 -0
  13. package/build/node-http-mitm-proxy/examples/forwardHttps.js +62 -0
  14. package/build/node-http-mitm-proxy/examples/modifyGoogle.js +44 -0
  15. package/build/node-http-mitm-proxy/examples/onCertificateMissing.js +30 -0
  16. package/build/node-http-mitm-proxy/examples/onCertificateRequired.js +23 -0
  17. package/build/node-http-mitm-proxy/examples/preventRequest.js +20 -0
  18. package/build/node-http-mitm-proxy/examples/processFullResponseBody.js +36 -0
  19. package/build/node-http-mitm-proxy/examples/removeProxyToServerContentLength.js +17 -0
  20. package/build/node-http-mitm-proxy/examples/websocket.js +31 -0
  21. package/build/node-http-mitm-proxy/examples/wildcard.js +17 -0
  22. package/build/node-http-mitm-proxy/index.d.ts +233 -0
  23. package/build/node-http-mitm-proxy/index.js +3 -0
  24. package/build/node-http-mitm-proxy/lib/ca.js +245 -0
  25. package/build/node-http-mitm-proxy/lib/middleware/gunzip.js +19 -0
  26. package/build/node-http-mitm-proxy/lib/middleware/wildcard.js +22 -0
  27. package/build/node-http-mitm-proxy/lib/proxy.js +1137 -0
  28. package/build/node-http-mitm-proxy/package-lock.json +1406 -0
  29. package/build/node-http-mitm-proxy/package.json +45 -0
  30. package/build/node-http-mitm-proxy/test/01_proxy.js +449 -0
  31. package/build/node-http-mitm-proxy/test/www/1024.bin +64 -0
  32. package/build/node-http-mitm-proxy/test/wwwA/1024.bin +64 -0
  33. package/build/node-http-mitm-proxy/test/wwwA/example.com.html +8 -0
  34. package/build/node-http-mitm-proxy/test/wwwA/index.html +0 -0
  35. package/build/node-http-mitm-proxy/test/wwwB/1024.bin +64 -0
  36. package/build/node-http-mitm-proxy/test/wwwB/index.html +0 -0
  37. package/build/private/keys/README.md +2 -0
  38. package/build/private/keys/server.crt +20 -0
  39. package/build/private/keys/server.key +28 -0
  40. package/build/private/keys/ssl.conf +25 -0
  41. package/build/server/src/Global.js +38 -0
  42. package/build/server/src/Global.js.map +1 -0
  43. package/build/server/src/Http2Proxy.js +197 -0
  44. package/build/server/src/Http2Proxy.js.map +1 -0
  45. package/build/server/src/HttpMessage.js +99 -0
  46. package/build/server/src/HttpMessage.js.map +1 -0
  47. package/build/server/src/HttpProxy.js +196 -0
  48. package/build/server/src/HttpProxy.js.map +1 -0
  49. package/build/server/src/HttpsProxy.js +110 -0
  50. package/build/server/src/HttpsProxy.js.map +1 -0
  51. package/build/server/src/LogProxy.js +115 -0
  52. package/build/server/src/LogProxy.js.map +1 -0
  53. package/build/server/src/Paths.js +28 -0
  54. package/build/server/src/Paths.js.map +1 -0
  55. package/build/server/src/Ping.js +21 -0
  56. package/build/server/src/Ping.js.map +1 -0
  57. package/build/server/src/ProxyAllApp.js +70 -0
  58. package/build/server/src/ProxyAllApp.js.map +1 -0
  59. package/build/server/src/Resend.js +89 -0
  60. package/build/server/src/Resend.js.map +1 -0
  61. package/build/server/src/SocketIoManager.js +312 -0
  62. package/build/server/src/SocketIoManager.js.map +1 -0
  63. package/build/server/src/SocketMessage.js +68 -0
  64. package/build/server/src/SocketMessage.js.map +1 -0
  65. package/build/server/src/TcpProxy.js +202 -0
  66. package/build/server/src/TcpProxy.js.map +1 -0
  67. package/build/server/src/formatters/HexFormatter.js +33 -0
  68. package/build/server/src/formatters/HexFormatter.js.map +1 -0
  69. package/build/server/src/formatters/MongoFormatter.js +97 -0
  70. package/build/server/src/formatters/MongoFormatter.js.map +1 -0
  71. package/build/server/src/formatters/MongoOpCode.js +51 -0
  72. package/build/server/src/formatters/MongoOpCode.js.map +1 -0
  73. package/build/server/src/formatters/RedisFormatter.js +25 -0
  74. package/build/server/src/formatters/RedisFormatter.js.map +1 -0
  75. package/build/server/src/formatters/SqlCommand.js +111 -0
  76. package/build/server/src/formatters/SqlCommand.js.map +1 -0
  77. package/build/server/src/formatters/SqlFormatter.js +150 -0
  78. package/build/server/src/formatters/SqlFormatter.js.map +1 -0
  79. package/client/README.md +46 -0
  80. package/client/build/asset-manifest.json +26 -0
  81. package/client/build/favicon.ico +0 -0
  82. package/client/build/index.html +1 -0
  83. package/client/build/manifest.json +8 -0
  84. package/client/build/robots.txt +3 -0
  85. package/client/build/static/css/2.bbde182e.chunk.css +12 -0
  86. package/client/build/static/css/2.bbde182e.chunk.css.map +1 -0
  87. package/client/build/static/css/main.5bf489b2.chunk.css +2 -0
  88. package/client/build/static/css/main.5bf489b2.chunk.css.map +1 -0
  89. package/client/build/static/js/2.ba308ba1.chunk.js +3 -0
  90. package/client/build/static/js/2.ba308ba1.chunk.js.LICENSE.txt +100 -0
  91. package/client/build/static/js/2.ba308ba1.chunk.js.map +1 -0
  92. package/client/build/static/js/3.7073b0d8.chunk.js +2 -0
  93. package/client/build/static/js/3.7073b0d8.chunk.js.map +1 -0
  94. package/client/build/static/js/main.494a7501.chunk.js +2 -0
  95. package/client/build/static/js/main.494a7501.chunk.js.map +1 -0
  96. package/client/build/static/js/runtime-main.00264969.js +2 -0
  97. package/client/build/static/js/runtime-main.00264969.js.map +1 -0
  98. package/client/build/static/media/fa-brands-400.2285773e.woff +0 -0
  99. package/client/build/static/media/fa-brands-400.23f19bb0.eot +0 -0
  100. package/client/build/static/media/fa-brands-400.2f517e09.svg +3717 -0
  101. package/client/build/static/media/fa-brands-400.527940b1.ttf +0 -0
  102. package/client/build/static/media/fa-brands-400.d878b0a6.woff2 +0 -0
  103. package/client/build/static/media/fa-regular-400.4689f52c.svg +801 -0
  104. package/client/build/static/media/fa-regular-400.491974d1.ttf +0 -0
  105. package/client/build/static/media/fa-regular-400.77206a6b.eot +0 -0
  106. package/client/build/static/media/fa-regular-400.7a333762.woff2 +0 -0
  107. package/client/build/static/media/fa-regular-400.bb58e57c.woff +0 -0
  108. package/client/build/static/media/fa-solid-900.1551f4f6.woff2 +0 -0
  109. package/client/build/static/media/fa-solid-900.7a8b4f13.svg +5034 -0
  110. package/client/build/static/media/fa-solid-900.9bbb245e.eot +0 -0
  111. package/client/build/static/media/fa-solid-900.be9ee23c.ttf +0 -0
  112. package/client/build/static/media/fa-solid-900.eeccf4f6.woff +0 -0
  113. package/package.json +80 -0
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const url_1 = __importDefault(require("url"));
16
+ const Global_1 = __importDefault(require("./Global"));
17
+ const ProxyConfig_1 = __importDefault(require("../../common/ProxyConfig"));
18
+ const node_http_mitm_proxy_1 = __importDefault(require("../../node-http-mitm-proxy"));
19
+ const HttpMessage_1 = __importDefault(require("./HttpMessage"));
20
+ /**
21
+ * Important: This module must remain at the project root to properly set the document root for the index.html.
22
+ */
23
+ class HttpsProxy {
24
+ onRequest(proxy) {
25
+ proxy.onRequest(function (ctx, callback) {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ ctx.use(node_http_mitm_proxy_1.default.gunzip);
28
+ const clientReq = ctx.clientToProxyRequest;
29
+ const clientRes = ctx.proxyToClientResponse;
30
+ const sequenceNumber = ++Global_1.default.nextSequenceNumber;
31
+ const remoteAddress = clientReq.socket.remoteAddress;
32
+ const reqHeaders = ctx.proxyToServerRequestOptions.headers;
33
+ const connectRequest = Object.keys(ctx.connectRequest).length > 0;
34
+ if (connectRequest) {
35
+ const host = reqHeaders.host;
36
+ clientReq.url = 'https://' + host + clientReq.url;
37
+ }
38
+ // eslint-disable-next-line node/no-deprecated-api
39
+ const reqUrl = url_1.default.parse(clientReq.url ? clientReq.url : '');
40
+ // Find matching proxy configuration
41
+ let proxyConfig;
42
+ const clientHostName = yield Global_1.default.resolveIp(clientReq.socket.remoteAddress);
43
+ if (!connectRequest) {
44
+ proxyConfig = Global_1.default.socketIoManager.findProxyConfigMatchingURL('https:', clientHostName, reqUrl);
45
+ if (proxyConfig !== undefined) {
46
+ ctx.proxyToServerRequestOptions.headers.host = proxyConfig.hostname;
47
+ clientReq.url = 'https://' + proxyConfig.hostname + clientReq.url;
48
+ }
49
+ }
50
+ else {
51
+ proxyConfig = Global_1.default.socketIoManager.findProxyConfigMatchingURL('https:', clientHostName, reqUrl);
52
+ // Always proxy forward proxy requests
53
+ if (proxyConfig === undefined) {
54
+ proxyConfig = new ProxyConfig_1.default();
55
+ proxyConfig.path = reqUrl.pathname;
56
+ proxyConfig.protocol = reqUrl.protocol;
57
+ proxyConfig.hostname = reqUrl.hostname;
58
+ proxyConfig.port = reqUrl.port === null
59
+ ? reqUrl.protocol === 'http:' ? 80 : 443
60
+ : +reqUrl.port;
61
+ }
62
+ }
63
+ const httpMessage = new HttpMessage_1.default(proxyConfig, sequenceNumber, remoteAddress, clientReq.method, clientReq.url, reqHeaders);
64
+ if (proxyConfig === undefined) {
65
+ const msg = 'No matching proxy configuration found for ' + reqUrl.pathname;
66
+ ctx.proxyToClientResponse.end('404 ' + msg);
67
+ httpMessage.emitMessageToBrowser(msg);
68
+ }
69
+ else {
70
+ proxyRequest();
71
+ }
72
+ callback();
73
+ function proxyRequest() {
74
+ clientReq.on('close', function () {
75
+ });
76
+ clientReq.on('error', function (error) {
77
+ console.log(sequenceNumber, 'Client connection error', JSON.stringify(error, null, 2));
78
+ });
79
+ clientRes.on('error', function (error) {
80
+ console.error(sequenceNumber, 'Server connection error', JSON.stringify(error, null, 2));
81
+ httpMessage.emitMessageToBrowser(JSON.stringify(error, null, 2));
82
+ });
83
+ let reqChunks = '';
84
+ ctx.onRequestData(function (_ctx, chunk, callback) {
85
+ reqChunks += chunk.toString();
86
+ return callback(undefined, chunk);
87
+ });
88
+ ctx.onRequestEnd(function (_ctx, callback) {
89
+ httpMessage.emitMessageToBrowser(reqChunks);
90
+ return callback();
91
+ });
92
+ ctx.onResponse(function (ctx, callback) {
93
+ let resChunks = '';
94
+ ctx.onResponseData(function (_ctx, chunk, callback) {
95
+ resChunks += chunk.toString();
96
+ return callback(undefined, chunk);
97
+ });
98
+ ctx.onResponseEnd(function (ctx, callback) {
99
+ httpMessage.emitMessageToBrowser(reqChunks, ctx.serverToProxyResponse.statusCode, ctx.serverToProxyResponse.headers, resChunks);
100
+ return callback();
101
+ });
102
+ return callback();
103
+ });
104
+ }
105
+ });
106
+ });
107
+ }
108
+ }
109
+ exports.default = HttpsProxy;
110
+ //# sourceMappingURL=HttpsProxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpsProxy.js","sourceRoot":"","sources":["../../../server/src/HttpsProxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const child_process_1 = require("child_process");
16
+ const SocketMessage_1 = __importDefault(require("./SocketMessage"));
17
+ const Global_1 = __importDefault(require("./Global"));
18
+ const Message_1 = require("../../common/Message");
19
+ class LogProxy {
20
+ constructor(proxyConfig) {
21
+ this.retry = true;
22
+ this.TIMEOUT = 5000;
23
+ this.RECORD_LIMIT = 50;
24
+ this.streamName = '';
25
+ this.recordCount = 0;
26
+ this.buffer = '';
27
+ this.proxyConfig = proxyConfig;
28
+ this.command = proxyConfig.path;
29
+ this.start();
30
+ }
31
+ static destructor(proxyConfig) {
32
+ if (proxyConfig.logProxyProcess) {
33
+ try {
34
+ const proc = proxyConfig.logProxyProcess;
35
+ proc.stdout.removeAllListeners();
36
+ proc.stderr.removeAllListeners();
37
+ proc.removeAllListeners();
38
+ proc.kill('SIGINT');
39
+ }
40
+ catch (e) {
41
+ console.error(e);
42
+ }
43
+ }
44
+ }
45
+ start() {
46
+ LogProxy.destructor(this.proxyConfig);
47
+ this.retry = true;
48
+ const tokens = this.command.split(' ');
49
+ const proc = child_process_1.spawn(tokens[0], tokens.slice(1));
50
+ // ('start', proc.pid);
51
+ this.proxyConfig.logProxyProcess = proc; // save so we can kill process
52
+ const startTime = Date.now();
53
+ proc.stdout.on('data', data => {
54
+ if (warmUpCompleted()) {
55
+ this.sendToBrowser('stdout', data);
56
+ }
57
+ });
58
+ proc.stderr.on('data', data => {
59
+ if (warmUpCompleted()) {
60
+ this.sendToBrowser('stderr', data);
61
+ }
62
+ });
63
+ proc.on('error', error => {
64
+ console.error(`error: ${error} - ${this.command}`);
65
+ });
66
+ proc.on('exit', _rc => {
67
+ proc.stdout.removeAllListeners();
68
+ proc.stderr.removeAllListeners();
69
+ proc.removeAllListeners();
70
+ if (this.retry) {
71
+ setTimeout(() => this.start(), 10000); // Retry in 10 seconds
72
+ this.retry = false;
73
+ }
74
+ });
75
+ function warmUpCompleted() {
76
+ return Date.now() > startTime + 3000;
77
+ }
78
+ }
79
+ sendToBrowser(streamName, data) {
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ if (this.timerHandle) {
82
+ clearInterval(this.timerHandle);
83
+ }
84
+ if (this.streamName.length === 0) {
85
+ this.streamName = streamName;
86
+ }
87
+ this.buffer += data;
88
+ if (++this.recordCount < this.RECORD_LIMIT && streamName === this.streamName) {
89
+ this.timerHandle = setInterval(() => {
90
+ this.recordCount = this.RECORD_LIMIT;
91
+ this.sendToBrowser(this.streamName, '');
92
+ }, this.TIMEOUT);
93
+ return;
94
+ }
95
+ const seqNo = ++Global_1.default.nextSequenceNumber;
96
+ const commandTokens = this.command.split(' ');
97
+ const message = yield SocketMessage_1.default.buildRequest(Date.now(), seqNo, {}, // headers
98
+ '', // method
99
+ this.buffer.toString().split('\n')[0], // url
100
+ '', // endpoint
101
+ { proxyall_inner_body: this.command }, // req body
102
+ 'log:' + commandTokens[commandTokens.length - 1], // clientIp
103
+ streamName, // serverHost
104
+ '', // path
105
+ 0);
106
+ SocketMessage_1.default.appendResponse(message, {}, this.buffer.toString(), 0, 0);
107
+ message.protocol = 'log:';
108
+ Global_1.default.socketIoManager.emitMessageToBrowser(Message_1.MessageType.REQUEST_AND_RESPONSE, message, this.proxyConfig);
109
+ this.buffer = '';
110
+ this.recordCount = 0;
111
+ });
112
+ }
113
+ }
114
+ exports.default = LogProxy;
115
+ //# sourceMappingURL=LogProxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogProxy.js","sourceRoot":"","sources":["../../../server/src/LogProxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ class Paths {
8
+ static configJson() {
9
+ return Paths.platform(`${Paths.baseDir}config.json`);
10
+ }
11
+ static serverKey() {
12
+ return Paths.platform(`${Paths.baseDir}private/keys/server.key`);
13
+ }
14
+ static serverCrt() {
15
+ return Paths.platform(`${Paths.baseDir}private/keys/server.crt`);
16
+ }
17
+ static clientDir() {
18
+ return Paths.platform(`${Paths.baseDir}client`);
19
+ }
20
+ static platform(dir) {
21
+ return dir.replace(/\//g, path_1.default.sep);
22
+ }
23
+ }
24
+ exports.default = Paths;
25
+ Paths.baseDir = process.env.NODE_ENV === 'production'
26
+ ? `${__dirname + ''}/../../../`
27
+ : `${__dirname + ''}/../../`;
28
+ //# sourceMappingURL=Paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Paths.js","sourceRoot":"","sources":["../../../server/src/Paths.ts"],"names":[],"mappings":";;;;;AAAA,gDAAuB;AAEvB,MAAqB,KAAK;IAKjB,MAAM,CAAC,UAAU;QACtB,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;IACtD,CAAC;IAEM,MAAM,CAAC,SAAS;QACrB,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;IAClE,CAAC;IAEM,MAAM,CAAC,SAAS;QACrB,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;IAClE,CAAC;IAEM,MAAM,CAAC,SAAS;QACrB,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA;IACjD,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAE,GAAW;QAClC,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,cAAI,CAAC,GAAG,CAAC,CAAA;IACrC,CAAC;;AAvBH,wBAwBC;AAvBgB,aAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;IAC5D,CAAC,CAAC,GAAG,SAAS,GAAG,EAAE,YAAY;IAC/B,CAAC,CAAC,GAAG,SAAS,GAAG,EAAE,SAAS,CAAA"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const child_process_1 = require("child_process");
4
+ class Ping {
5
+ static host(hostName) {
6
+ return new Promise((resolve) => {
7
+ const proc = child_process_1.spawn('ping', ['-c', '1', hostName]);
8
+ proc.stdout.on('data', _data => {
9
+ resolve(true);
10
+ });
11
+ proc.stderr.on('data', _data => {
12
+ resolve(false);
13
+ });
14
+ proc.on('error', _error => {
15
+ resolve(false);
16
+ });
17
+ });
18
+ }
19
+ }
20
+ exports.default = Ping;
21
+ //# sourceMappingURL=Ping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ping.js","sourceRoot":"","sources":["../../../server/src/Ping.ts"],"names":[],"mappings":";;AAAA,iDAAqC;AAErC,MAAqB,IAAI;IAChB,MAAM,CAAC,IAAI,CAAE,QAAgB;QAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,qBAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;YAEjD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;gBAC7B,OAAO,CAAC,IAAI,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;gBAC7B,OAAO,CAAC,KAAK,CAAC,CAAA;YAChB,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;gBACxB,OAAO,CAAC,KAAK,CAAC,CAAA;YAChB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAlBD,uBAkBC"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const Paths_1 = __importDefault(require("./Paths"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const Global_1 = __importDefault(require("./Global"));
10
+ const ProxyAllApp = (clientRes, reqUrl) => {
11
+ var _a;
12
+ let responseSent = true;
13
+ const clientBuildDir = Paths_1.default.clientDir() + path_1.default.sep + 'build';
14
+ if (reqUrl.pathname === '/' + 'anyproxy' || reqUrl.pathname === '/' + 'proxyall') {
15
+ clientRes.writeHead(200, {
16
+ 'content-type': 'text/html'
17
+ });
18
+ clientRes.end(fs_1.default.readFileSync(clientBuildDir + path_1.default.sep + 'index.html'));
19
+ }
20
+ else {
21
+ const dir = clientBuildDir + ((_a = reqUrl.pathname) === null || _a === void 0 ? void 0 : _a.replace(/\//g, path_1.default.sep));
22
+ // File exists locally?
23
+ if (reqUrl.protocol === null &&
24
+ fs_1.default.existsSync(dir) && fs_1.default.lstatSync(dir).isFile()) {
25
+ const extname = path_1.default.extname(reqUrl.pathname);
26
+ let contentType = 'text/html';
27
+ switch (extname) {
28
+ case '.js':
29
+ contentType = 'text/javascript';
30
+ break;
31
+ case '.css':
32
+ contentType = 'text/css';
33
+ break;
34
+ case '.json':
35
+ contentType = 'application/json';
36
+ break;
37
+ case '.png':
38
+ contentType = 'image/png';
39
+ break;
40
+ case '.jpg':
41
+ contentType = 'image/jpg';
42
+ break;
43
+ case '.wav':
44
+ contentType = 'audio/wav';
45
+ break;
46
+ }
47
+ // Read local file and return to client
48
+ clientRes.writeHead(200, {
49
+ 'content-type': contentType
50
+ });
51
+ clientRes.end(fs_1.default.readFileSync(clientBuildDir + reqUrl.pathname));
52
+ }
53
+ else if (reqUrl.protocol === null &&
54
+ reqUrl.pathname === '/api/proxyall/config') {
55
+ Global_1.default.socketIoManager.updateHostReachable()
56
+ .then((configs) => {
57
+ clientRes.writeHead(200, {
58
+ 'content-type': 'application/json'
59
+ });
60
+ clientRes.end(JSON.stringify(configs, null, 2));
61
+ });
62
+ }
63
+ else {
64
+ responseSent = false;
65
+ }
66
+ }
67
+ return responseSent;
68
+ };
69
+ exports.default = ProxyAllApp;
70
+ //# sourceMappingURL=ProxyAllApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProxyAllApp.js","sourceRoot":"","sources":["../../../server/src/ProxyAllApp.ts"],"names":[],"mappings":";;;;;AAEA,gDAAuB;AAEvB,oDAA2B;AAC3B,4CAAmB;AACnB,sDAA6B;AAE7B,MAAM,WAAW,GAAG,CAClB,SAA+C,EAC/C,MAA0B,EACjB,EAAE;;IACX,IAAI,YAAY,GAAG,IAAI,CAAA;IACvB,MAAM,cAAc,GAAG,eAAK,CAAC,SAAS,EAAE,GAAG,cAAI,CAAC,GAAG,GAAG,OAAO,CAAA;IAE7D,IAAI,MAAM,CAAC,QAAQ,KAAK,GAAG,GAAG,UAAU,IAAI,MAAM,CAAC,QAAQ,KAAK,GAAG,GAAG,UAAU,EAAE;QAChF,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;YACvB,cAAc,EAAE,WAAW;SAC5B,CAAC,CAAA;QACF,SAAS,CAAC,GAAG,CAAC,YAAE,CAAC,YAAY,CAAC,cAAc,GAAG,cAAI,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,CAAA;KACzE;SAAM;QACL,MAAM,GAAG,GAAG,cAAc,IAAG,MAAA,MAAM,CAAC,QAAQ,0CAAE,OAAO,CAAC,KAAK,EAAE,cAAI,CAAC,GAAG,CAAC,CAAA,CAAA;QACtE,uBAAuB;QACvB,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI;YAClB,YAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,YAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1D,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAS,CAAC,CAAA;YAC9C,IAAI,WAAW,GAAG,WAAW,CAAA;YAC7B,QAAQ,OAAO,EAAE;gBACf,KAAK,KAAK;oBACR,WAAW,GAAG,iBAAiB,CAAA;oBAC/B,MAAK;gBACP,KAAK,MAAM;oBACT,WAAW,GAAG,UAAU,CAAA;oBACxB,MAAK;gBACP,KAAK,OAAO;oBACV,WAAW,GAAG,kBAAkB,CAAA;oBAChC,MAAK;gBACP,KAAK,MAAM;oBACT,WAAW,GAAG,WAAW,CAAA;oBACzB,MAAK;gBACP,KAAK,MAAM;oBACT,WAAW,GAAG,WAAW,CAAA;oBACzB,MAAK;gBACP,KAAK,MAAM;oBACT,WAAW,GAAG,WAAW,CAAA;oBACzB,MAAK;aACR;YAED,uCAAuC;YACvC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;gBACvB,cAAc,EAAE,WAAW;aAC5B,CAAC,CAAA;YACF,SAAS,CAAC,GAAG,CAAC,YAAE,CAAC,YAAY,CAAC,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;SACjE;aAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI;YACzB,MAAM,CAAC,QAAQ,KAAK,sBAAsB,EAAE;YACpD,gBAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE;iBACzC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBAChB,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;oBACvB,cAAc,EAAE,kBAAkB;iBACnC,CAAC,CAAA;gBACF,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACjD,CAAC,CAAC,CAAA;SACL;aAAM;YACL,YAAY,GAAG,KAAK,CAAA;SACrB;KACF;IAED,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAED,kBAAe,WAAW,CAAA"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const url_1 = __importDefault(require("url"));
16
+ const HttpMessage_1 = __importDefault(require("./HttpMessage"));
17
+ const axios_1 = __importDefault(require("axios"));
18
+ const ProxyConfig_1 = __importDefault(require("../../common/ProxyConfig"));
19
+ const Global_1 = __importDefault(require("./Global"));
20
+ const resend = (forwardProxy, method, url, message, body) => __awaiter(void 0, void 0, void 0, function* () {
21
+ const headers = {};
22
+ const unsafeHeaders = ['host',
23
+ 'connection',
24
+ 'content-length',
25
+ 'origin', 'user-agent',
26
+ 'referer',
27
+ 'accept-encoding',
28
+ 'cookie',
29
+ 'sec-fetch-dest',
30
+ 'proxy-connection'
31
+ ];
32
+ for (const header in message.requestHeaders) {
33
+ if (unsafeHeaders.indexOf(header) === -1) {
34
+ headers[header] = message.requestHeaders[header];
35
+ }
36
+ }
37
+ // eslint-disable-next-line node/no-deprecated-api
38
+ const reqUrl = url_1.default.parse(url);
39
+ headers.proxyall = 'resend';
40
+ // console.log(`Resend ${method} ${url} \n${body} \n${headers}`)
41
+ body = typeof body === 'string' && body.length === 0 ? undefined : body;
42
+ let httpMessage;
43
+ let clientHostName;
44
+ if (forwardProxy) {
45
+ clientHostName = yield Global_1.default.resolveIp(reqUrl.hostname);
46
+ httpMessage = recordHttpRequest();
47
+ }
48
+ const map = new Map();
49
+ map.set('GET', 'get');
50
+ map.set('HEAD', 'head');
51
+ map.set('POST', 'post');
52
+ axios_1.default({
53
+ method: map.get(method),
54
+ url,
55
+ data: body,
56
+ headers
57
+ }).then((response) => {
58
+ if (forwardProxy) {
59
+ recordHttpResponse(response);
60
+ }
61
+ })
62
+ .catch(error => {
63
+ if (forwardProxy) {
64
+ recordHttpResponse(error.response);
65
+ }
66
+ });
67
+ function recordHttpRequest() {
68
+ let proxyConfig = Global_1.default.socketIoManager.findProxyConfigMatchingURL('https:', clientHostName, reqUrl);
69
+ // Always proxy forward proxy requests
70
+ if (proxyConfig === undefined) {
71
+ proxyConfig = new ProxyConfig_1.default();
72
+ proxyConfig.path = reqUrl.pathname;
73
+ proxyConfig.protocol = reqUrl.protocol;
74
+ proxyConfig.hostname = reqUrl.hostname;
75
+ proxyConfig.port = reqUrl.port === null
76
+ ? reqUrl.protocol === 'http:' ? 80 : 443
77
+ : +reqUrl.port;
78
+ }
79
+ const sequenceNumber = ++Global_1.default.nextSequenceNumber;
80
+ const httpMessage = new HttpMessage_1.default(proxyConfig, sequenceNumber, clientHostName, method, url, headers);
81
+ httpMessage.emitMessageToBrowser(body);
82
+ return httpMessage;
83
+ }
84
+ function recordHttpResponse(response) {
85
+ httpMessage.emitMessageToBrowser(body, response.status, response.headers, response.data);
86
+ }
87
+ });
88
+ exports.default = resend;
89
+ //# sourceMappingURL=Resend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Resend.js","sourceRoot":"","sources":["../../../server/src/Resend.ts"],"names":[],"mappings":"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"}