lightsword
Version:
LightSword Secure SOCKS5 Proxy / iOS VPN Server
56 lines (45 loc) • 1.6 kB
text/typescript
//-----------------------------------
// Copyright(c) 2015 Neko
//-----------------------------------
import * as program from 'commander';
import { App } from '../app';
import * as path from 'path';
import * as ipc from '../../common/ipc';
import * as child from 'child_process';
program
.version('0.6.0')
.option('-s, --server <Address>', 'Next Node Address', String)
.option('-p, --port <Number>', 'Next Node Server Port', Number.parseInt)
.option('-l, --listenport <Number>', 'Local Port', Number.parseInt)
.option('-d, --daemon <command>', 'Daemon Control', String)
.option('-f, --fork', 'Run as Daemon')
.parse(process.argv);
var args = <any>program;
var options = {
dstAddr: <string>args.server,
dstPort: <number>args.port,
localPort: args.listenport
};
if (args.daemon && !process.env.__daemon) {
ipc.sendCommand('bridge', args.daemon, (code) => process.exit(code));
return;
}
if (!options.dstAddr) {
console.error('Server Address not found.\n');
console.info('Example: lsbridge -s 127.0.0.1 -p 443\n');
process.exit(1);
}
if (args.fork && !process.env.__daemon) {
console.info('Run as daemon');
process.env.__daemon = true;
var cp = child.spawn(process.argv[1], process.argv.skip(2).toArray(), { detached: true, stdio: 'ignore', env: process.env, cwd: process.cwd() });
cp.unref();
console.info('Child PID: ' + cp.pid);
process.exit(0);
}
if (process.env.__daemon) {
ipc.IpcServer.start('bridge');
}
new App(options);
process.title = process.env.__daemon ? path.basename(process.argv[1]) + 'd' : 'LightSword Bridge';