A little more cleanup in node code.

This commit is contained in:
Adam Ierymenko 2014-05-08 00:47:46 +00:00
parent d7977fa3e1
commit 98f0418fb9

View file

@ -253,13 +253,17 @@ function doNetconfRequest(message)
return; return;
} }
// Get required fields
var peerId = new Identity(message.data['peerId']); var peerId = new Identity(message.data['peerId']);
var fromIpAndPort = message.data['from']; var fromIpAndPort = message.data['from'];
var nwid = message.data['nwid']; var nwid = message.data['nwid'];
var requestId = message.data['requestId']; var requestId = message.data['requestId'];
if ((!peerId)||(!peerId.isValid())||(!fromIpAndPort)||(!nwid)||(nwid.length !== 16)||(!requestId)) if ((!peerId)||(!peerId.isValid())||(!fromIpAndPort)||(!nwid)||(nwid.length !== 16)||(!requestId)) {
console.error('missing one or more required fields in netconf-request');
return; return;
}
var memberKey = 'zt1:network:'+nwid+':member:'+peerId.address()+':~';
var ipAssignmentsKey = 'zt1:network:'+nwid+':ipAssignments';
var network = null; var network = null;
var member = null; var member = null;
@ -286,7 +290,6 @@ function doNetconfRequest(message)
if ((!network)||(!('nwid' in network))||(network['nwid'] !== nwid)) if ((!network)||(!('nwid' in network))||(network['nwid'] !== nwid))
return next(null); return next(null);
var memberKey = 'zt1:network:'+nwid+':member:'+peerId.address()+':~';
DB.hgetall(memberKey,function(err,obj) { DB.hgetall(memberKey,function(err,obj) {
if (err) if (err)
return next(err); return next(err);
@ -298,8 +301,8 @@ function doNetconfRequest(message)
DB.hmset(memberKey,{ DB.hmset(memberKey,{
'lastSeen': Date.now(), 'lastSeen': Date.now(),
'lastAt': fromIpAndPort, 'lastAt': fromIpAndPort,
'clientVersion': (clientVersion) ? clientVersion : '?.?.?', 'clientVersion': (message.data['clientVersion']) ? message.data['clientVersion'] : '?.?.?',
'clientOs': (clientOs) ? clientOs : '?' 'clientOs': (message.data['clientOs']) ? message.data['clientOs'] : '?'
},next); },next);
} else { } else {
// Add member record to network for newly seen peer // Add member record to network for newly seen peer
@ -333,11 +336,10 @@ function doNetconfRequest(message)
for(var i=0;i<ipa.length;++i) { for(var i=0;i<ipa.length;++i) {
if (ipa[i]) if (ipa[i])
ipAssignments.push(ipa[i]); ipAssignments.push(ipa[i]);
if ((ipa[i].indexOf('.') > 0)&&(v4NeedAssign)) { if ((ipa[i].indexOf('.') > 0)&&(v4NeedAssign))
v4Assignments.push(ipa[i]); v4Assignments.push(ipa[i]);
} else if ((ipa[i].indexOf(':') > 0)&&(v6NeedAssign)) { else if ((ipa[i].indexOf(':') > 0)&&(v6NeedAssign))
v6Assignments.push(ipa[i]); v6Assignments.push(ipa[i]);
}
} }
return next(null); return next(null);
@ -348,13 +350,12 @@ function doNetconfRequest(message)
if ((!authorized)||(!v4NeedAssign)||(v4Assignments.length > 0)) if ((!authorized)||(!v4NeedAssign)||(v4Assignments.length > 0))
return next(null); return next(null);
var ipAssignmentAttempts = 0;
var v4pool = network['v4AssignPool']; // technically csv but only one netblock currently supported
var peerAddress = peerId.address(); var peerAddress = peerId.address();
var network = 0; var network = 0;
var netmask = 0; var netmask = 0;
var netmaskBits = 0; var netmaskBits = 0;
var v4pool = network['v4AssignPool']; // technically csv but only one netblock currently supported
if (v4pool) { if (v4pool) {
var v4poolSplit = v4Pool.split('/'); var v4poolSplit = v4Pool.split('/');
if (v4poolSplit.length === 2) { if (v4poolSplit.length === 2) {
@ -376,12 +377,9 @@ function doNetconfRequest(message)
if ((network === 0)||(netmask === 0xffffffff)) if ((network === 0)||(netmask === 0xffffffff))
return next(null); return next(null);
var invmask = netmask ^ 0xffffffff; var invmask = netmask ^ 0xffffffff;
var abcd = 0; var abcd = 0;
var ipAssignmentAttempts = 0;
var assignment = null;
var ipAssignmentsKey = 'zt1:network:'+nwid+':ipAssignments';
var memberKey = 'zt1:network:'+nwid+':member:'+peerAddress+':~';
async.whilst( async.whilst(
function() { return ((v4Assignments.length === 0)&&(ipAssignmentAttempts < 1000)); }, function() { return ((v4Assignments.length === 0)&&(ipAssignmentAttempts < 1000)); },
@ -402,7 +400,7 @@ function doNetconfRequest(message)
// Derive an IP to test and generate assignment ip/bits string // Derive an IP to test and generate assignment ip/bits string
var ip = (abcd & invmask) | (network & netmask); var ip = (abcd & invmask) | (network & netmask);
assignment = ((ip >> 24) & 0xff).toString(10) + '.' + ((ip >> 16) & 0xff).toString(10) + '.' + ((ip >> 8) & 0xff).toString(10) + '.' + (ip & 0xff).toString(10) + '/' + netmaskBits.toString(10); var assignment = ((ip >> 24) & 0xff).toString(10) + '.' + ((ip >> 16) & 0xff).toString(10) + '.' + ((ip >> 8) & 0xff).toString(10) + '.' + (ip & 0xff).toString(10) + '/' + netmaskBits.toString(10);
// Check :ipAssignments to see if this IP is already taken // Check :ipAssignments to see if this IP is already taken
DB.hget(ipAssignmentsKey,assignment,function(err,value) { DB.hget(ipAssignmentsKey,assignment,function(err,value) {