Lots of small fixed.

Ylian Saint-Hilaire committed Jan 29, 2020 at 14:38 UTC 8149a735108c167ea8d7fc0ba98999915075923d
34 files changed +27 -12
agents/MeshService.exe
Binary files a/agents/MeshService.exe and b/agents/MeshService.exe differ
agents/MeshService64.exe
Binary files a/agents/MeshService64.exe and b/agents/MeshService64.exe differ
agents/meshagent_arm
Binary files a/agents/meshagent_arm and b/agents/meshagent_arm differ
agents/meshagent_mips
Binary files a/agents/meshagent_mips and b/agents/meshagent_mips differ
agents/meshagent_pogo
Binary files a/agents/meshagent_pogo and b/agents/meshagent_pogo differ
agents/meshagent_poky
Binary files a/agents/meshagent_poky and b/agents/meshagent_poky differ
agents/meshagent_poky64
Binary files a/agents/meshagent_poky64 and b/agents/meshagent_poky64 differ
agents/meshagent_x86
Binary files a/agents/meshagent_x86 and b/agents/meshagent_x86 differ
agents/meshagent_x86-64
Binary files a/agents/meshagent_x86-64 and b/agents/meshagent_x86-64 differ
agents/meshagent_x86-64_nokvm
Binary files a/agents/meshagent_x86-64_nokvm and b/agents/meshagent_x86-64_nokvm differ
agents/meshagent_x86_nokvm
Binary files a/agents/meshagent_x86_nokvm and b/agents/meshagent_x86_nokvm differ
agents/oldagents/MeshCmd-signed.exe renamed
agents/oldagents/MeshCmd64-signed.exe renamed
agents/oldagents/MeshService-signed.exe renamed
agents/oldagents/MeshService.exe
Binary files /dev/null and b/agents/oldagents/MeshService.exe differ
agents/oldagents/MeshService64-signed.exe renamed
agents/oldagents/MeshService64.exe
Binary files /dev/null and b/agents/oldagents/MeshService64.exe differ
agents/oldagents/meshagent_arm
Binary files /dev/null and b/agents/oldagents/meshagent_arm differ
agents/oldagents/meshagent_arm64 renamed
agents/oldagents/meshagent_armhf renamed
agents/oldagents/meshagent_freebsd_x86-64 renamed
agents/oldagents/meshagent_mips
Binary files /dev/null and b/agents/oldagents/meshagent_mips differ
agents/oldagents/meshagent_osx-x86-64 renamed
agents/oldagents/meshagent_pogo
Binary files /dev/null and b/agents/oldagents/meshagent_pogo differ
agents/oldagents/meshagent_poky
Binary files /dev/null and b/agents/oldagents/meshagent_poky differ
agents/oldagents/meshagent_poky64
Binary files /dev/null and b/agents/oldagents/meshagent_poky64 differ
agents/oldagents/meshagent_x86
Binary files /dev/null and b/agents/oldagents/meshagent_x86 differ
agents/oldagents/meshagent_x86-64
Binary files /dev/null and b/agents/oldagents/meshagent_x86-64 differ
agents/oldagents/meshagent_x86-64_nokvm
Binary files /dev/null and b/agents/oldagents/meshagent_x86-64_nokvm differ
agents/oldagents/meshagent_x86_nokvm
Binary files /dev/null and b/agents/oldagents/meshagent_x86_nokvm differ
meshagent.js
+20 -5
@@ -119,7 +119,6 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
119 ws.on('message', function (msg) {
120 if (msg.length < 2) return;
121 if (typeof msg == 'object') { msg = msg.toString('binary'); } // TODO: Could change this entire method to use Buffer instead of binary string
122 -
122 if (obj.authenticated == 2) { // We are authenticated
123 if ((obj.agentUpdate == null) && (msg.charCodeAt(0) == 123)) { processAgentData(msg); } // Only process JSON messages if meshagent update is not in progress
124 if (msg.length < 2) return;
@@ -372,6 +371,15 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
371 ChangeAgentTag(tag);
372 }
373 } else if (obj.authenticated < 2) { // We are not authenticated
374 + // Check if this is a un-authenticated JSON
375 + if (msg.charCodeAt(0) == 123) {
376 + var str = msg.toString('utf8'), command = null;
377 + if (str[0] == '{') {
378 + try { command = JSON.parse(str); } catch (ex) { } // If the command can't be parsed, ignore it.
379 + if ((command != null) && (command.action === 'agentName') && (typeof command.value == 'string') && (command.value.length > 0) && (command.value.length < 256)) { obj.agentName = command.value; }
380 + }
381 + return;
382 + }
383 const cmd = common.ReadShort(msg, 0);
384 if (cmd == 1) {
385 // Agent authentication request
@@ -447,7 +455,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
455 }
456 else if (cmd == 3) {
457 // Agent meshid
450 - if ((msg.length < 72) || ((obj.receivedCommands & 4) != 0)) return;
458 + if ((msg.length < 70) || ((obj.receivedCommands & 4) != 0)) return;
459 obj.receivedCommands += 4; // Agent can't send the same command twice on the same connection ever. Block DOS attack path.
460
461 // Set the meshid
@@ -464,8 +472,14 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
472 }
473 //console.log('MeshID', obj.meshid);
474 obj.agentInfo.capabilities = common.ReadInt(msg, 66);
467 - const computerNameLen = common.ReadShort(msg, 70);
468 - obj.agentInfo.computerName = Buffer.from(msg.substring(72, 72 + computerNameLen), 'binary').toString('utf8');
475 + if (msg.length > 70) {
476 + const computerNameLen = common.ReadShort(msg, 70);
477 + obj.agentInfo.computerName = Buffer.from(msg.substring(72, 72 + computerNameLen), 'binary').toString('utf8');
478 + //console.log('computerName', msg.length, computerNameLen, obj.agentInfo.computerName);
479 + } else {
480 + obj.agentInfo.computerName = '';
481 + //console.log('computerName-none');
482 + }
483 obj.dbMeshKey = 'mesh/' + domain.id + '/' + obj.meshid;
484 completeAgentConnection();
485 } else if (cmd == 4) {
@@ -760,7 +774,8 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
774 db.Set({ _id: 'lc' + obj.dbNodeKey, type: 'lastconnect', domain: domain.id, time: obj.connectTime, addr: obj.remoteaddrport, cause: 1 });
775
776 // This node does not exist, create it.
763 - var device = { type: 'node', mtype: mesh.mtype, _id: obj.dbNodeKey, icon: obj.agentInfo.platformType, meshid: obj.dbMeshKey, name: obj.agentInfo.computerName, rname: obj.agentInfo.computerName, domain: domain.id, agent: { ver: obj.agentInfo.agentVersion, id: obj.agentInfo.agentId, caps: obj.agentInfo.capabilities }, host: null };
777 + var agentName = obj.agentName ? obj.agentName : obj.agentInfo.computerName;
778 + var device = { type: 'node', mtype: mesh.mtype, _id: obj.dbNodeKey, icon: obj.agentInfo.platformType, meshid: obj.dbMeshKey, name: agentName, rname: obj.agentInfo.computerName, domain: domain.id, agent: { ver: obj.agentInfo.agentVersion, id: obj.agentInfo.agentId, caps: obj.agentInfo.capabilities }, host: null };
779 db.Set(device);
780
781 // Event the new node
views/login-mobile.handlebars
+3 -3
@@ -263,7 +263,7 @@
263 var newAccount = '{{{newAccount}}}';
264 var passhint = '{{{passhint}}}';
265 var newAccountPass = parseInt('{{{newAccountPass}}}');
266 - var emailCheck = ('{{{emailcheck}}}' == 'true');
266 + var emailCheck = '{{{emailcheck}}}';
267 var features = parseInt('{{{features}}}');
268 var passRequirements = '{{{passRequirements}}}';
269 if (passRequirements != '') { passRequirements = JSON.parse(decodeURIComponent(passRequirements)); } else { passRequirements = {}; }
@@ -322,8 +322,8 @@
322 QV('newAccountDiv', (newAccount === '1') || (newAccount === 'true')); // If new accounts are not allowed, don't display the new account link.
323 if ((passRequirements.hint === true) && (passhint != null) && (passhint.length > 0)) { QV('showPassHintLink', true); }
324 QV('newAccountPass', (newAccountPass == 1));
325 - QV('resetAccountDiv', (emailCheck == true));
326 - QV('hrAccountDiv', (emailCheck == true) || (newAccountPass == 1));
325 + QV('resetAccountDiv', (emailCheck == 'true'));
326 + QV('hrAccountDiv', (emailCheck == 'true') || (newAccountPass == 1));
327
328 if (loginMode == '4') {
329 try { if (hardwareKeyChallenge.length > 0) { hardwareKeyChallenge = JSON.parse(hardwareKeyChallenge); } else { hardwareKeyChallenge = null; } } catch (ex) { hardwareKeyChallenge = null }
views/login.handlebars
+3 -3
@@ -258,7 +258,7 @@
258 var loginMode = '{{{loginmode}}}';
259 var newAccount = '{{{newAccount}}}';
260 var newAccountPass = parseInt('{{{newAccountPass}}}');
261 - var emailCheck = ('{{{emailcheck}}}' == 'true');
261 + var emailCheck = '{{{emailcheck}}}';
262 var passRequirements = '{{{passRequirements}}}';
263 var hardwareKeyChallenge = decodeURIComponent('{{{hkey}}}');
264 if (passRequirements != '') { passRequirements = JSON.parse(decodeURIComponent(passRequirements)); } else { passRequirements = {}; }
@@ -337,8 +337,8 @@
337 QV('newAccountDiv', (newAccount === '1') || (newAccount === 'true')); // If new accounts are not allowed, don't display the new account link.
338 if ((passhint != null) && (passhint.length > 0)) { QV('showPassHintLink', true); }
339 QV('newAccountPass', (newAccountPass == 1));
340 - QV('resetAccountDiv', (emailCheck == true));
341 - QV('hrAccountDiv', (emailCheck == true) || (newAccountPass == 1));
340 + QV('resetAccountDiv', (emailCheck == 'true'));
341 + QV('hrAccountDiv', (emailCheck == 'true') || (newAccountPass == 1));
342
343 if (loginMode == '4') {
344 try { if (hardwareKeyChallenge.length > 0) { hardwareKeyChallenge = JSON.parse(hardwareKeyChallenge); } else { hardwareKeyChallenge = null; } } catch (ex) { hardwareKeyChallenge = null }
webserver.js
+1 -1
@@ -4250,7 +4250,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
4250 }
4251 } else {
4252 xargs.title1 = domain.title1 ? domain.title1 : '';
4253 - xargs.title2 = (args.title1 && domain.title2) ? domain.title2 : '';
4253 + xargs.title2 = (domain.title1 && domain.title2) ? domain.title2 : '';
4254 }
4255 xargs.extitle = encodeURIComponent(xargs.title);
4256 xargs.domainurl = domain.url;