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.
- package/README.md +277 -0
- package/bin/proxyall +5 -0
- package/build/app.js +89 -0
- package/build/app.js.map +1 -0
- package/build/common/Message.js +34 -0
- package/build/common/Message.js.map +1 -0
- package/build/common/ProxyConfig.js +27 -0
- package/build/common/ProxyConfig.js.map +1 -0
- package/build/node-http-mitm-proxy/.gitattributes +2 -0
- package/build/node-http-mitm-proxy/.travis.yml +10 -0
- package/build/node-http-mitm-proxy/README.md +539 -0
- package/build/node-http-mitm-proxy/bin/mitm-proxy.js +36 -0
- package/build/node-http-mitm-proxy/examples/forwardHttps.js +62 -0
- package/build/node-http-mitm-proxy/examples/modifyGoogle.js +44 -0
- package/build/node-http-mitm-proxy/examples/onCertificateMissing.js +30 -0
- package/build/node-http-mitm-proxy/examples/onCertificateRequired.js +23 -0
- package/build/node-http-mitm-proxy/examples/preventRequest.js +20 -0
- package/build/node-http-mitm-proxy/examples/processFullResponseBody.js +36 -0
- package/build/node-http-mitm-proxy/examples/removeProxyToServerContentLength.js +17 -0
- package/build/node-http-mitm-proxy/examples/websocket.js +31 -0
- package/build/node-http-mitm-proxy/examples/wildcard.js +17 -0
- package/build/node-http-mitm-proxy/index.d.ts +233 -0
- package/build/node-http-mitm-proxy/index.js +3 -0
- package/build/node-http-mitm-proxy/lib/ca.js +245 -0
- package/build/node-http-mitm-proxy/lib/middleware/gunzip.js +19 -0
- package/build/node-http-mitm-proxy/lib/middleware/wildcard.js +22 -0
- package/build/node-http-mitm-proxy/lib/proxy.js +1137 -0
- package/build/node-http-mitm-proxy/package-lock.json +1406 -0
- package/build/node-http-mitm-proxy/package.json +45 -0
- package/build/node-http-mitm-proxy/test/01_proxy.js +449 -0
- package/build/node-http-mitm-proxy/test/www/1024.bin +64 -0
- package/build/node-http-mitm-proxy/test/wwwA/1024.bin +64 -0
- package/build/node-http-mitm-proxy/test/wwwA/example.com.html +8 -0
- package/build/node-http-mitm-proxy/test/wwwA/index.html +0 -0
- package/build/node-http-mitm-proxy/test/wwwB/1024.bin +64 -0
- package/build/node-http-mitm-proxy/test/wwwB/index.html +0 -0
- package/build/private/keys/README.md +2 -0
- package/build/private/keys/server.crt +20 -0
- package/build/private/keys/server.key +28 -0
- package/build/private/keys/ssl.conf +25 -0
- package/build/server/src/Global.js +38 -0
- package/build/server/src/Global.js.map +1 -0
- package/build/server/src/Http2Proxy.js +197 -0
- package/build/server/src/Http2Proxy.js.map +1 -0
- package/build/server/src/HttpMessage.js +99 -0
- package/build/server/src/HttpMessage.js.map +1 -0
- package/build/server/src/HttpProxy.js +196 -0
- package/build/server/src/HttpProxy.js.map +1 -0
- package/build/server/src/HttpsProxy.js +110 -0
- package/build/server/src/HttpsProxy.js.map +1 -0
- package/build/server/src/LogProxy.js +115 -0
- package/build/server/src/LogProxy.js.map +1 -0
- package/build/server/src/Paths.js +28 -0
- package/build/server/src/Paths.js.map +1 -0
- package/build/server/src/Ping.js +21 -0
- package/build/server/src/Ping.js.map +1 -0
- package/build/server/src/ProxyAllApp.js +70 -0
- package/build/server/src/ProxyAllApp.js.map +1 -0
- package/build/server/src/Resend.js +89 -0
- package/build/server/src/Resend.js.map +1 -0
- package/build/server/src/SocketIoManager.js +312 -0
- package/build/server/src/SocketIoManager.js.map +1 -0
- package/build/server/src/SocketMessage.js +68 -0
- package/build/server/src/SocketMessage.js.map +1 -0
- package/build/server/src/TcpProxy.js +202 -0
- package/build/server/src/TcpProxy.js.map +1 -0
- package/build/server/src/formatters/HexFormatter.js +33 -0
- package/build/server/src/formatters/HexFormatter.js.map +1 -0
- package/build/server/src/formatters/MongoFormatter.js +97 -0
- package/build/server/src/formatters/MongoFormatter.js.map +1 -0
- package/build/server/src/formatters/MongoOpCode.js +51 -0
- package/build/server/src/formatters/MongoOpCode.js.map +1 -0
- package/build/server/src/formatters/RedisFormatter.js +25 -0
- package/build/server/src/formatters/RedisFormatter.js.map +1 -0
- package/build/server/src/formatters/SqlCommand.js +111 -0
- package/build/server/src/formatters/SqlCommand.js.map +1 -0
- package/build/server/src/formatters/SqlFormatter.js +150 -0
- package/build/server/src/formatters/SqlFormatter.js.map +1 -0
- package/client/README.md +46 -0
- package/client/build/asset-manifest.json +26 -0
- package/client/build/favicon.ico +0 -0
- package/client/build/index.html +1 -0
- package/client/build/manifest.json +8 -0
- package/client/build/robots.txt +3 -0
- package/client/build/static/css/2.bbde182e.chunk.css +12 -0
- package/client/build/static/css/2.bbde182e.chunk.css.map +1 -0
- package/client/build/static/css/main.5bf489b2.chunk.css +2 -0
- package/client/build/static/css/main.5bf489b2.chunk.css.map +1 -0
- package/client/build/static/js/2.ba308ba1.chunk.js +3 -0
- package/client/build/static/js/2.ba308ba1.chunk.js.LICENSE.txt +100 -0
- package/client/build/static/js/2.ba308ba1.chunk.js.map +1 -0
- package/client/build/static/js/3.7073b0d8.chunk.js +2 -0
- package/client/build/static/js/3.7073b0d8.chunk.js.map +1 -0
- package/client/build/static/js/main.494a7501.chunk.js +2 -0
- package/client/build/static/js/main.494a7501.chunk.js.map +1 -0
- package/client/build/static/js/runtime-main.00264969.js +2 -0
- package/client/build/static/js/runtime-main.00264969.js.map +1 -0
- package/client/build/static/media/fa-brands-400.2285773e.woff +0 -0
- package/client/build/static/media/fa-brands-400.23f19bb0.eot +0 -0
- package/client/build/static/media/fa-brands-400.2f517e09.svg +3717 -0
- package/client/build/static/media/fa-brands-400.527940b1.ttf +0 -0
- package/client/build/static/media/fa-brands-400.d878b0a6.woff2 +0 -0
- package/client/build/static/media/fa-regular-400.4689f52c.svg +801 -0
- package/client/build/static/media/fa-regular-400.491974d1.ttf +0 -0
- package/client/build/static/media/fa-regular-400.77206a6b.eot +0 -0
- package/client/build/static/media/fa-regular-400.7a333762.woff2 +0 -0
- package/client/build/static/media/fa-regular-400.bb58e57c.woff +0 -0
- package/client/build/static/media/fa-solid-900.1551f4f6.woff2 +0 -0
- package/client/build/static/media/fa-solid-900.7a8b4f13.svg +5034 -0
- package/client/build/static/media/fa-solid-900.9bbb245e.eot +0 -0
- package/client/build/static/media/fa-solid-900.be9ee23c.ttf +0 -0
- package/client/build/static/media/fa-solid-900.eeccf4f6.woff +0 -0
- 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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"}
|