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;