UNPKG

lightsword

Version:

LightSword Secure SOCKS5 Proxy / iOS VPN Server

56 lines (45 loc) 1.6 kB
#!/usr/bin/env node //----------------------------------- // 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';