UNPKG

allproxy

Version:

AllProxy: MITM HTTP Debugging Tool.

204 lines 8.95 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.setOsBinaries = void 0; const process_1 = require("process"); const Global_1 = __importDefault(require("./server/src/Global")); const SocketIoManager_1 = __importStar(require("./server/src/SocketIoManager")); const Paths_1 = __importDefault(require("./server/src/Paths")); const GrpcProxy_1 = __importDefault(require("./server/src/GrpcProxy")); const PortConfig_1 = __importDefault(require("./common/PortConfig")); const HttpXProxy_1 = __importDefault(require("./server/src/HttpXProxy")); const GenerateCertKey_1 = require("./server/src/GenerateCertKey"); const Protobuf_1 = require("./server/src/Protobuf"); const path_1 = __importDefault(require("path")); const fs_1 = __importDefault(require("fs")); const ConsoleLog_1 = __importDefault(require("./server/src/ConsoleLog")); const BrowserLauncher_1 = __importDefault(require("./server/src/BrowserLauncher")); const listen = []; let hostname = ''; //console.log('app.ts', process.argv); for (let i = 2; i < process.argv.length; ++i) { switch (process.argv[i]) { case '--help': usage(); (0, process_1.exit)(1); break; case '--hostname': if (i + 1 >= process.argv.length) { usage(); console.error('\nMissing host name for ' + process.argv[i]); } hostname = process.argv[++i]; break; case '--listen': case '--listenGrpc': case '--listenSecureGrpc': { if (i + 1 >= process.argv.length) { usage(); console.error('\nMissing port number for ' + process.argv[i]); } let protocol = 'httpx:'; switch (process.argv[i]) { case '--listen': protocol = 'httpx:'; break; case '--listenGrpc': protocol = 'grpc:'; break; case '--listenSecureGrpc': protocol = 'securegrpc:'; break; } let port = process.argv[++i]; const portNum = +port; listen.push({ protocol, port: portNum }); break; } case '--http2': Global_1.default.useHttp2 = true; break; case '--debug': ConsoleLog_1.default.enableDebug = true; break; case '--info': ConsoleLog_1.default.enableInfo = true; break; case '--inDockerContainer': Global_1.default.inDockerContainer = true; break; default: usage(); console.error('\nInvalid option: ' + process.argv[i]); (0, process_1.exit)(1); } } if (listen.length === 0) { listen.push({ protocol: 'httpx:', port: 8888 }); } function usage() { console.log('\nUsage: npm start [--hostname name] [--listen port] [--debug]'); console.log('\nOptions:'); console.log('\t--hostname - Public host name used to access AllProxy from the web. The proxy is blocked.'); console.log('\t--listen - listen for incoming http connections. Default is 8888.'); console.log('\t--http2 - Enable HTTP/2 for https connections. (Experimental)'); console.log('\nExample: npm start -- --listen 8888'); } /** * Exception handler. */ process.on('uncaughtException', (err) => { var _a; BrowserLauncher_1.default.shutdown(); if (((_a = err.stack) === null || _a === void 0 ? void 0 : _a.indexOf('Error: This socket has been ended by the other party')) !== -1) { SocketIoManager_1.socketIoManager.clientEndedSocket(); } else { console.trace('uncaughtException:', err.stack); } // process.exit() }); process.on('exit', () => BrowserLauncher_1.default.shutdown()); Paths_1.default.setupInterceptDir(); setOsBinaries(process.platform); Global_1.default.portConfig = new PortConfig_1.default(); Global_1.default.socketIoManager = new SocketIoManager_1.default(); process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; // trust all certificates (0, Protobuf_1.parseProtoFiles)(); startServers(); function startServers() { return __awaiter(this, void 0, void 0, function* () { //console.log('startServers') yield (0, GenerateCertKey_1.createCertificateAuthority)(); Paths_1.default.copyCaPemToRoot(); BrowserLauncher_1.default.init(); for (const entry of listen) { const protocol = entry.protocol; const port = entry.port; if (hostname !== '') { console.log(`Using public hostname ${hostname}.`); console.log("The proxy is blocked."); Global_1.default.proxyIsBlocked = true; } switch (protocol) { case 'httpx:': console.log(`Listening on ${protocol} ${port}`); HttpXProxy_1.default.start(port, hostname); Global_1.default.portConfig.httpXPort = port; break; case 'grpc:': GrpcProxy_1.default.forwardProxy(port, false); console.log(`Listening on gRPC ${port}`); Global_1.default.portConfig.grpcPort = port; break; case 'securegrpc:': GrpcProxy_1.default.forwardProxy(port, true); console.log(`Listening on secure gRPC ${port}`); Global_1.default.portConfig.grpcSecurePort = port; break; } } }); } function setOsBinaries(os) { const dirName = __dirname + path_1.default.sep + '..'; const dataDir = process.env.ALLPROXY_DATA_DIR; if (dataDir) { const binPath = ':/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin'; switch (os) { case 'darwin': fs_1.default.copyFileSync(`${dirName + path_1.default.sep}/bin/macos/trustCert.sh`, `${dataDir}/bin/trustCert.sh`); fs_1.default.copyFileSync(`${dirName + path_1.default.sep}/bin/macos/systemProxy.sh`, `${dataDir}/bin/systemProxy.sh`); process.env.PATH += binPath; break; case 'win32': fs_1.default.copyFileSync(`${dirName + path_1.default.sep}bin\\windows\\trustCert.bat`, `${dataDir}\\bin\\trustCert.bat`); fs_1.default.copyFileSync(`${dirName + path_1.default.sep}bin\\windows\\systemProxy.bat`, `${dataDir}\\bin\\systemProxy.bat`); break; case 'linux': fs_1.default.copyFileSync(`${dirName + path_1.default.sep}/bin/linux/trustCert.sh`, `${dataDir}/bin/trustCert.sh`); fs_1.default.copyFileSync(`${dirName + path_1.default.sep}/bin/linux/systemProxy.sh`, `${dataDir}/bin/systemProxy.sh`); process.env.PATH += binPath; break; } } } exports.setOsBinaries = setOsBinaries; //# sourceMappingURL=app.js.map