68 lines
1.7 KiB
TypeScript
Executable File
68 lines
1.7 KiB
TypeScript
Executable File
import "localenv";
|
|
import optimist from "optimist";
|
|
import Debug from "debug";
|
|
import { CreateServer } from "./server";
|
|
import { type AddressInfo } from "ws";
|
|
|
|
const debug = Debug("localtunnel");
|
|
|
|
const argv = optimist
|
|
.usage("Usage: $0 --port [num]")
|
|
.options("secure", {
|
|
default: false,
|
|
describe: "use this flag to indicate proxy over https",
|
|
})
|
|
.options("port", {
|
|
default: "80",
|
|
describe: "listen on this port for outside requests",
|
|
})
|
|
.options("address", {
|
|
default: "0.0.0.0",
|
|
describe: "IP address to bind to",
|
|
})
|
|
.options("domain", {
|
|
describe:
|
|
"Specify the base domain name. This is optional if hosting localtunnel from a regular example.com domain. This is required if hosting a localtunnel server from a subdomain (i.e. lt.example.dom where clients will be client-app.lt.example.come)",
|
|
})
|
|
.options("max-sockets", {
|
|
default: 10,
|
|
describe:
|
|
"maximum number of tcp sockets each client is allowed to establish at one time (the tunnels)",
|
|
}).argv;
|
|
|
|
if (argv.help) {
|
|
console.log("Showing help");
|
|
optimist.showHelp();
|
|
process.exit();
|
|
}
|
|
|
|
const server = CreateServer({
|
|
max_tcp_sockets: argv["max-sockets"],
|
|
secure: argv.secure,
|
|
domain: argv.domain,
|
|
});
|
|
|
|
server.listen(argv.port, argv.address, () => {
|
|
debug("server listening on port: %d", (server.address() as AddressInfo).port);
|
|
});
|
|
|
|
process.on("SIGINT", () => {
|
|
console.error("SIGINT");
|
|
process.exit();
|
|
});
|
|
|
|
process.on("SIGTERM", () => {
|
|
console.warn("SIGTERM");
|
|
// process.exit();
|
|
});
|
|
|
|
process.on("uncaughtException", (err) => {
|
|
console.error("err:");
|
|
console.error(err);
|
|
});
|
|
|
|
process.on("unhandledRejection", (reason, promise) => {
|
|
console.error("reason:");
|
|
console.error(reason);
|
|
});
|