Skip to content

Commit

Permalink
v1.16.0 remove unclaimeddevices, localdevices, disable check for same…
Browse files Browse the repository at this point in the history
…LAN in canConfigure
  • Loading branch information
sqrtofsaturn committed Dec 21, 2015
1 parent ec1c276 commit 4c599a7
Show file tree
Hide file tree
Showing 5 changed files with 2 additions and 143 deletions.
46 changes: 0 additions & 46 deletions lib/setupHttpRoutes.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ var claimDevice = require('./claimDevice');
var getPublicKey = require('./getPublicKey');
var securityImpl = require('./getSecurityImpl');
var createActivity = require('./createActivity');
var getLocalDevices = require('./getLocalDevices');
var getSystemStatus = require('./getSystemStatus');
var updateFromClient = require('./updateFromClient');
var createReadStream = require('./createReadStream');
Expand Down Expand Up @@ -317,51 +316,6 @@ function setupHttpRoutes(server, skynet){
});
});

server.get('/localdevices', function(req, res){
authorizeRequest(req, res, function(fromDevice){
skynet.sendActivity(getActivity('localdevices',req, fromDevice));
if(req.query.overrideIp && config.skynet_override_token && req.header('Skynet_override_token') === config.skynet_override_token){
fromDevice.ipAddress = req.query.overrideIp;
}else{
fromDevice.ipAddress = getIP(req);
}

getLocalDevices(req.query || {}, fromDevice, false, function(data){
if(data.error){
var message = data.error.message || data.error;
meshbluEventEmitter.emit('localdevices-error', {request: req.query, error: message, fromUuid: fromDevice.uuid, fromIp: fromDevice.ipAddress});
return errorResponse(data.error, res);
}

meshbluEventEmitter.emit('localdevices', {request: req.query, fromUuid: fromDevice.uuid, fromIp: fromDevice.ipAddress});
res.json(data);
});
});

});

server.get('/unclaimeddevices', function(req, res){
authorizeRequest(req, res, function(fromDevice){
skynet.sendActivity(getActivity('localdevices',req, fromDevice));
if(req.query.overrideIp && config.skynet_override_token && req.header('Skynet_override_token') === config.skynet_override_token){
fromDevice.ipAddress = req.query.overrideIp;
}else{
fromDevice.ipAddress = getIP(req);
}

getLocalDevices(req.query || {}, fromDevice, true, function(data){
if(data.error){
var message = data.error.message || data.error;
meshbluEventEmitter.emit('localdevices-error', {request: req.query, error: message, fromUuid: fromDevice.uuid, fromIp: fromDevice.ipAddress});
return errorResponse(data.error, res);
}

meshbluEventEmitter.emit('localdevices', {request: req.query, fromUuid: fromDevice.uuid, fromIp: fromDevice.ipAddress});
res.json(data);
});
});
});

server.put('/claimdevice/:uuid', function(req, res){
authorizeRequest(req, res, function(fromDevice){
skynet.sendActivity(getActivity('claimdevice',req, fromDevice));
Expand Down
6 changes: 1 addition & 5 deletions lib/simpleAuth.coffee
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
util = require "./util"
async = require 'async'
bcrypt = require "bcrypt"
_ = require "lodash"
Expand Down Expand Up @@ -53,10 +52,7 @@ class SimpleAuth

return @asyncCallback(null, true, callback) if fromDevice.uuid == toDevice.uuid

if toDevice.owner?
return @asyncCallback(null, true, callback) if toDevice.owner == fromDevice.uuid
else
return @asyncCallback(null, true, callback) if util.sameLAN(fromDevice.ipAddress, toDevice.ipAddress)
return @asyncCallback(null, true, callback) if toDevice.owner == fromDevice.uuid if toDevice.owner?

if message?.token
return @authDevice(
Expand Down
65 changes: 0 additions & 65 deletions lib/socketLogic.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ var securityImpl = require('./getSecurityImpl');
var createActivity = require('./createActivity');
var updateSocketId = require('./updateSocketId');
var updatePresence = require('./updatePresence');
var getLocalDevices = require('./getLocalDevices');
var getSystemStatus = require('./getSystemStatus');
var updateFromClient = require('./updateFromClient');
var generateAndStoreToken = require('./generateAndStoreToken');
Expand Down Expand Up @@ -382,62 +381,6 @@ function socketLogic (socket, secure, skynet){
});
}));

socket.on('localdevices', throttler.throttle(function (data, fn) {
fn = fn || _.noop

if(!data || (typeof data != 'object')){
data = {};
}

// Emit API request from device to room for subscribers
getDevice(socket, function(err, device){
skynet.sendActivity(getActivity('localdevices', socket, device));
if(err){ return; }
getLocalDevices(data, device, false, function(results){
results.fromUuid = device.uuid;
results.from = _.pick(device, config.preservedDeviceProperties);
logEvent(403, results);
meshbluEventEmitter.emit('localdevices', {request: data, fromIp: device.ipAddress, fromUuid: device.uuid});

try{
fn(results);
} catch (e){
logError(e);
}
});
});
}));

socket.on('unclaimeddevices', throttler.throttle(function (data, fn) {
fn = fn || _.noop

if(!data || (typeof data != 'object')){
data = {};
}
// Emit API request from device to room for subscribers
getDevice(socket, function(err, device){
skynet.sendActivity(getActivity('localdevices', socket, device));
if(err){ return; }
getLocalDevices(data, device, true, function(results){
results.fromUuid = device.uuid;
results.from = _.pick(device, config.preservedDeviceProperties);
logEvent(403, results);

if(results.error){
meshbluEventEmitter.emit('unclaimeddevices-error', {request: data, error: results.error.message, fromIp: device.ipAddress, fromUuid: device.uuid});
} else {
meshbluEventEmitter.emit('unclaimeddevices', {request: data, fromIp: device.ipAddress, fromUuid: device.uuid});
}

try{
fn(results);
} catch (e){
logError(e);
}
});
});
}));

socket.on('claimdevice', throttler.throttle(function (data, fn) {
fn = fn || _.noop

Expand Down Expand Up @@ -767,14 +710,6 @@ function socketLogic (socket, secure, skynet){
});
}));

socket.on('directText', throttler.throttle(function (message) {
getDevice(socket, function(err, fromDevice){
if(fromDevice){
skynet.sendMessage(fromDevice, message, 'tb');
}
});
}));

socket.on('getPublicKey', throttler.throttle(function(uuid, fn){
getPublicKey(uuid, function(error, publicKey){

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "meshblu-server",
"description": "communications platform and api for iot",
"version": "1.15.6",
"version": "1.16.0",
"author": "Octoblu, Inc.",
"dependencies": {
"@octoblu/redis-ns": "^0.1.1",
Expand Down
26 changes: 0 additions & 26 deletions test/lib/simpleAuth-spec.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -670,17 +670,6 @@ describe 'simpleAuth', ->
expect(permission).to.be.true
next error

describe 'when a device is unclaimed, and exists on the same lan as the configuring device', ->
beforeEach ->
@fromDevice = uuid: 1
@toDevice = uuid: 2
util.sameLAN = sinon.stub().returns true

it 'should return true', (next) ->
@sut.canConfigure @fromDevice, @toDevice, (error, permission) =>
expect(permission).to.be.true
next error

describe 'when a device is in the configureWhitelist', ->
beforeEach (next) ->
@fromDevice = uuid: 1
Expand Down Expand Up @@ -720,18 +709,3 @@ describe 'simpleAuth', ->

it 'should call checkLists', ->
expect(@sut._checkLists).to.have.been.calledWith @fromDevice, @toDevice, @toDevice.configureWhitelist, @toDevice.configureBlacklist, false

describe 'when a device is unclaimed, and exists on a different lan than the configuring device', ->
beforeEach (next) ->
@fromDevice = uuid: 1, ipAddress: '127.0.0.1'
@toDevice = uuid: 2, ipAddress: '192.168.0.1'
util.sameLAN = sinon.stub().returns false
@sut.canConfigure @fromDevice, @toDevice, (error, permission) =>
@result = permission
next error

it 'should return false', ->
expect(@result).to.be.false

it 'should call sameLan with the ipAddresses of both devices', ->
expect(util.sameLAN).to.have.been.calledWith '127.0.0.1', '192.168.0.1'

0 comments on commit 4c599a7

Please sign in to comment.