New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

storj

Package Overview
Dependencies
Maintainers
1
Versions
82
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

storj - npm Package Compare versions

Comparing version 0.6.5 to 0.6.6

ISSUE_TEMPLATE.md

7

CONTRIBUTING.md

@@ -11,2 +11,9 @@ Contributing

Reporting Issues
----------------
When submitting an issue, please take care to follow the
`ISSUE_TEMPLATE.md` and include as much information as possible. Bonus points
for a corresponding pull request that fixes the issue.
Style & Conventions

@@ -13,0 +20,0 @@ -------------------

36

lib/datachannel/server.js

@@ -6,3 +6,2 @@ 'use strict';

var assert = require('assert');
var Transport = require('../network/transport');
var Manager = require('../manager');

@@ -19,3 +18,3 @@ var events = require('events');

* @param {Object} options
* @param {Transport} options.transport - Transport adapter from {@link Network}
* @param {http.Server} options.server - A http(s).Server instance
* @param {Manager} options.manager - The Manager from {@link Network}

@@ -33,7 +32,7 @@ * @param {kad.Logger} options.logger - Logger to use from {@link Network}

this._transport = options.transport;
this._server = options.server;
this._manager = options.manager;
this._log = options.logger;
this._ttl = options.ttl || ms('2m');
this._server = new ws.Server({ server: this._transport._server });
this._server = new ws.Server({ server: this._server });
this._allowed = {};

@@ -66,9 +65,11 @@

if (this._allowed[token]) {
if (this._allowed[token].client) {
if (this._allowed[token] && this._allowed[token].client) {
var client = this._allowed[token].client;
if ([ws.CONNECTING, ws.OPEN].indexOf(client.readyState) !== -1) {
this._allowed[token].client.close();
}
}
delete this._allowed[token];
}
delete this._allowed[token];
};

@@ -89,3 +90,2 @@

assert.ok(options, 'No options were supplied to constructor');
assert(options.transport instanceof Transport, 'Invalid transport adapter');
assert(options.manager instanceof Manager, 'Invalid manager supplied');

@@ -113,6 +113,2 @@ assert.ok(options.logger, 'Invalid logger supplied');

socket.on('message', function(data) {
if (self._allowed[token] && self._allowed[token].client !== null) {
return;
}
try {

@@ -183,3 +179,3 @@ data = JSON.parse(data);

if (err) {
socket.send(JSON.stringify({ code: 500, message: err.message }));
socket.close(500, err.message );
return self.reject(token);

@@ -214,6 +210,3 @@ }

if (utils.rmd160(hasher.digest('hex')) !== hash) {
socket.send(JSON.stringify({
code: 400,
message: 'Calculated hash does not match the expected result'
}));
socket.close(400, 'Calculated hash does not match the expected result');
return self.reject(token);

@@ -245,3 +238,3 @@ }

if (err) {
socket.send(JSON.stringify({ code: 500, message: err.message }));
socket.close(500, err.message);
return self.reject(token);

@@ -276,6 +269,3 @@ }

client.send({
code: 400,
message: 'Failed to handle the defined operation'
});
client.close(400, 'Failed to handle the defined operation');

@@ -282,0 +272,0 @@ this.reject(token);

@@ -33,6 +33,2 @@ 'use strict';

Network.call(this, options);
this._transport.on(
'ready',
this._listenForContracts.bind(this, options.opcodes)
);
}

@@ -52,2 +48,20 @@

/**
* Wraps the super call to {@link Network#join} to listen for contract after
* successfully establishing a connection to the network
* @param {Function} callback - Called on successful join
*/
FarmerInterface.prototype.join = function(callback) {
var self = this;
Network.prototype.join.call(this, function(err) {
if (err) {
return callback(err);
}
self._listenForContracts(self._options.opcodes);
callback();
});
};
/**
* Handles a received contract and negotiates storage

@@ -57,3 +71,3 @@ * @private

*/
Network.prototype._negotiateContract = function(contract) {
FarmerInterface.prototype._negotiateContract = function(contract) {
var self = this;

@@ -60,0 +74,0 @@

@@ -96,3 +96,3 @@ 'use strict';

));
this._node = new kad.Node({

@@ -115,9 +115,8 @@ transport: this._transport,

}, function() {
self._listenForTunnelers();
if (self._transport._isPublic) {
return callback(null, self);
self._listenForTunnelers();
callback(null, self);
} else {
self._setupTunnelClient(callback);
}
self._setupTunnelClient(callback);
});

@@ -169,3 +168,3 @@ };

return new kad.contacts.AddressPortContact({
return new Contact({
address: parsed.hostname,

@@ -212,3 +211,3 @@ port: Number(parsed.port),

this._channel = new DataChannelServer({
transport: this._transport,
server: this._transport._server,
manager: this._manager,

@@ -406,2 +405,3 @@ logger: this._logger

);
self._listenForTunnelers();
callback(null);

@@ -507,2 +507,3 @@ });

self._listenForTunnelers();
callback();

@@ -509,0 +510,0 @@ });

@@ -83,10 +83,10 @@ 'use strict';

var self = this;
var authID = null;
var usedPort = null;
// TODO: Pass in SSL options into first arg if provided
var gateway = new TunnelGateway({}, this._getAvailablePort());
var authID = gateway.getEntranceToken();
var usedPort = null;
gateway.on('close', function() {
delete self._gateways[authID];
self._usedPorts.splice(usedPort, 1);
self._usedPorts.splice(self._usedPorts.indexOf(usedPort), 1);
self.emit('unlocked');

@@ -159,10 +159,15 @@ });

var end = this._options.portRange.max;
var available = [];
while (start <= end) {
if (this._usedPorts.indexOf(start) === -1) {
return start;
available.push(++start);
}
for (var i = 0; i < this._usedPorts.length; i++) {
if (available.indexOf(this._usedPorts[i]) !== -1) {
available.splice(available.indexOf(this._usedPorts[i]), 1);
}
start++;
}
return available[Math.floor(Math.random() * available.length)];
};

@@ -199,32 +204,40 @@

demuxer.on('error', function(err) {
client.close(400, { error: err.message });
});
function cleanup() {
gateway.close();
demuxer.removeAllListeners();
muxer.removeAllListeners();
}
demuxer.on('data', function(object) {
switch (object.type) {
case 'rpc':
return gateway.respond(object.data);
case 'datachannel':
return gateway.transfer(object.flags.quid, object.data);
default:
// NOOP
}
});
demuxer
.on('error', function(err) {
client.close(400, { error: err.message });
})
.on('data', function(object) {
switch (object.type) {
case 'rpc':
return gateway.respond(object.data);
case 'datachannel':
return gateway.transfer(object.flags.quid, object.data);
default:
// NOOP
}
});
muxer.on('error', function(err) {
client.close(400, { error: err.message });
});
muxer
.on('error', function(err) {
client.close(400, { error: err.message });
})
.on('data', function(data) {
client.send(data, { binary: true });
})
.source(gateway);
muxer.on('data', function(data) {
client.send(data, { binary: true });
});
muxer.source(gateway);
client.on('message', function(data) {
demuxer.write(data);
});
client
.on('message', function(data) {
demuxer.write(data);
})
.on('close', cleanup)
.on('error', cleanup);
};
module.exports = TunnelServer;
{
"name": "storj",
"version": "0.6.5",
"version": "0.6.6",
"description": "implementation of the storj protocol for node.js and the browser",

@@ -17,3 +17,3 @@ "main": "index.js",

"build": "./node_modules/.bin/browserify index.js -s storj -o dist/storj.browser.js",
"make-docs": "./node_modules/.bin/jsdoc index.js lib -r -R README.md -u ./doc -c .jsdoc.json --verbose -d ./jsdoc",
"make-docs": "mkdir -p ./jsdoc && rm -r ./jsdoc && ./node_modules/.bin/jsdoc index.js lib -r -R README.md -u ./doc -c .jsdoc.json --verbose -d ./jsdoc",
"publish-docs": "npm run make-docs && node script/publishdoc.js"

@@ -20,0 +20,0 @@ },

@@ -5,2 +5,3 @@ 'use strict';

var TunnelServer = require('../../lib/tunnel/server');
var EventEmitter = require('events').EventEmitter;

@@ -47,9 +48,14 @@ describe('TunnelServer', function() {

});
var options = [55000, 55001, 55002];
ts.createGateway(function(err, gw1) {
expect(gw1.getEntranceAddress().port).to.equal(55000);
options.splice(options.indexOf(gw1.getEntranceAddress().port), 1);
ts.createGateway(function(err, gw2) {
expect(gw2.getEntranceAddress().port).to.equal(55001);
options.splice(options.indexOf(gw2.getEntranceAddress().port), 1);
ts.createGateway(function(err, gw3) {
expect(gw3.getEntranceAddress().port).to.equal(55002);
done();
options.splice(options.indexOf(gw3.getEntranceAddress().port), 1);
expect(options).to.have.lengthOf(0);
ts.createGateway(function(err) {
expect(err).to.not.equal(null);
done();
});
});

@@ -93,4 +99,22 @@ });

it('should glose the gateway if client disconnects', function(done) {
var ts = new TunnelServer({ port: 0 });
var client = new EventEmitter();
ts.createGateway(function(err, gateway) {
client.upgradeReq = {
url: 'ws://127.0.0.1:' + gateway.getEntranceAddress().port +
'/tun?token=' + gateway.getEntranceToken()
};
ts._handleClient(client);
client.emit('close');
setImmediate(function() {
expect(Object.keys(ts._gateways)).to.have.lengthOf(0);
expect(ts._usedPorts).to.have.lengthOf(0);
done();
});
});
});
});
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc