Skip to content

Commit

Permalink
parsing version end-to-end, buffer size miscalculated
Browse files Browse the repository at this point in the history
  • Loading branch information
James Halliday committed Dec 14, 2010
1 parent 329191f commit 28815eb
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 15 deletions.
25 changes: 16 additions & 9 deletions lib/clients/socks5.js
@@ -1,6 +1,7 @@
var Put = require('put');
var Binary = require('binary');
var net = require('net');
var EventEmitter = require('events').EventEmitter;

module.exports = function () {
var params = {};
Expand Down Expand Up @@ -29,14 +30,17 @@ module.exports = function () {
}
};

function fromStream (stream) {
function fromStream (stream, cb) {
var auth = null;
stream.auth = function (user, pass) {
var self = new EventEmitter;

self.auth = function (user, pass) {
return self;
};

var binary = Binary(stream);
stream.connect = function (addr, port) {
stream.on('end', function () { self.emit('end') });

self.connect = function (addr, port) {
if (stream.readyState === 'open' || stream.readyState === 'readOnly') {
connect(addr, port);
}
Expand All @@ -46,7 +50,7 @@ function fromStream (stream) {
});
}

return stream;
return self;
};

var methods = new Buffer([
Expand All @@ -56,7 +60,7 @@ function fromStream (stream) {
]);

function connect (addr, port) {
binary = binary
Binary(stream)
.word8('ver')
.word8('method')
.tap(function (vars) {
Expand All @@ -66,8 +70,11 @@ function fromStream (stream) {
console.log('No supported methods');
}
else {
var dst = atype(addr);
self.emit('connect');
stream.on('data', self.emit.bind(self, 'data'));

var dst = atype(addr);
console.dir(dst.buffer);
Put()
.word8(5)
.word8(1) // connect
Expand All @@ -89,12 +96,12 @@ function fromStream (stream) {
.write(stream)
;

return stream;
return self;
}

module.exports.atype = atype;
function atype (addr) {
var ipv = process.binding('net').isIp(addr);
var ipv = process.binding('net').isIP(addr);

if (ipv === 0) {
var buf = new Buffer('x' + addr);
Expand Down
3 changes: 2 additions & 1 deletion lib/servers/socks5.js
Expand Up @@ -17,7 +17,8 @@ function session (stream, cb) {
var methods = [].slice.call(vars.methods)
.reduce(function (acc,m) { acc[m] = true; return acc }, {});
// username + password only
var method = methods[2] ? 0x02 : 0xff;
//var method = methods[2] ? 0x02 : 0xff;
var method = methods[0] ? 0x00 : 0xff;

Put().word8(5).word8(method).write(stream);
})
Expand Down
11 changes: 6 additions & 5 deletions test/proxy.js
Expand Up @@ -9,6 +9,10 @@ exports.socks5 = function (assert) {
var tc = setTimeout(function () {
assert.fail('Never connected');
}, 500);

var td = setTimeout(function () {
assert.fail('Never got data');
}, 500);

socks5.createServer(function (err, req, stream) {
assert.eql(req.host, 'moo');
Expand All @@ -26,12 +30,9 @@ exports.socks5 = function (assert) {
clearTimeout(tc);
});

stream.on('error', function (msg) {
assert.fail(msg);
});

stream.on('data', function (buf) {
assert.eql(buf, new Buffer('oh hello'));
clearTimeout(td);
assert.eql(buf.toString(), 'oh hello');
});

stream.on('end', function () {
Expand Down

0 comments on commit 28815eb

Please sign in to comment.