lightsword
Version:
LightSword Secure SOCKS5 Proxy / iOS VPN Server
49 lines (38 loc) • 1.23 kB
text/typescript
//-----------------------------------
// Copyright(c) 2015 Neko
//-----------------------------------
require('../lib/socketEx');
require('kinq').enable();
require('async-node');
import * as net from 'net';
import { defaultServerPort } from '../common/constant';
export class App {
constructor(options: { dstAddr: string, dstPort?: number, localPort?: number }) {
let dstAddr = options.dstAddr;
let dstPort = options.dstPort || defaultServerPort;
let localPort = options.localPort || defaultServerPort;
let server = net.createServer((socket) => {
let transitSocket = net.createConnection(dstPort, dstAddr, () => {
socket.pipe(transitSocket);
transitSocket.pipe(socket);
});
function dispose() {
transitSocket.dispose();
socket.dispose();
}
transitSocket.on('end', dispose);
transitSocket.on('error', dispose);
socket.on('end', dispose);
socket.on('error', dispose);
});
server.on('error', (err) => {
console.log(err.message);
process.exit(1);
});
server.listen(localPort);
}
}
if (!module.parent) {
process.title = 'LightSword Bridge Debug Mode';
}