Created
May 16, 2013 12:24
-
-
Save bencevans/5591354 to your computer and use it in GitHub Desktop.
SOCKSio net SOCKS4a Proxy Server Helper
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Module Dependencies | |
*/ | |
var net = require('net'), | |
EventEmitter = require('events').EventEmitter, | |
util = require('util'); | |
/** | |
* SOCKS Server Wrapper for a net stream | |
* @param {Stream} netStream Instance of net.createServer() | |
* @return {SOCKSio} | |
*/ | |
var SOCKSio = function(netStream) { | |
if(!netStream || typeof netStream !== 'object') throw new Error('No (net) Stream Provided'); | |
var self = this; | |
this.stream = netStream; | |
this.stream.on('connection', function(socket) { | |
socket.once('data', function(requestBuffer) { | |
var request = {}; | |
if(requestBuffer.length < 10) return this.emit('error', new Error('Buffer too short')); | |
if(requestBuffer[0] !== 4) return this.emit('error', new Error('Unsupported SOCKS Version')); | |
if(requestBuffer[1] !== 1) return this.emit('error', new Error('Unsupported SOCKS Command')); | |
request.version = requestBuffer[0]; | |
request.socket = socket; | |
request.port = requestBuffer.readUInt16BE(2); | |
self.emit('request', request); | |
}); | |
}); | |
return this; | |
}; | |
util.inherits(SOCKSio, EventEmitter); | |
// Create Instance | |
var net = require('net'); | |
var server = net.createServer(); | |
var proxyServer = new SOCKSio(server); | |
proxyServer.on('request', function(req) { | |
console.log('yay req: ', req); | |
}); | |
server.listen(3001); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment