Last Connect improvements, #2939
Ylian Saint-Hilaire committed
Jul 27, 2021 at 00:13 UTC
e55d04a2c6353d5144824554d4ce337f4bb8d636
38 files changed
+24
-25
agents/MeshCmd-signed.exe
Binary files a/agents/MeshCmd-signed.exe and b/agents/MeshCmd-signed.exe differ
agents/MeshCmd64-signed.exe
Binary files a/agents/MeshCmd64-signed.exe and b/agents/MeshCmd64-signed.exe differ
agents/MeshService-signed.exe
Binary files a/agents/MeshService-signed.exe and b/agents/MeshService-signed.exe differ
agents/MeshService.exe
Binary files a/agents/MeshService.exe and b/agents/MeshService.exe differ
agents/MeshService64-signed.exe
Binary files a/agents/MeshService64-signed.exe and b/agents/MeshService64-signed.exe differ
agents/MeshService64.exe
Binary files a/agents/MeshService64.exe and b/agents/MeshService64.exe differ
agents/agents-new/MeshService.exe
Binary files /dev/null and b/agents/agents-new/MeshService.exe differ
agents/agents-new/MeshService64.exe
Binary files /dev/null and b/agents/agents-new/MeshService64.exe differ
agents/agents-old/MeshCmd-signed.exe
Binary files /dev/null and b/agents/agents-old/MeshCmd-signed.exe differ
agents/agents-old/MeshCmd64-signed.exe
Binary files /dev/null and b/agents/agents-old/MeshCmd64-signed.exe differ
agents/agents-old/MeshService-signed.exe
Binary files /dev/null and b/agents/agents-old/MeshService-signed.exe differ
agents/agents-old/MeshService.exe
Binary files /dev/null and b/agents/agents-old/MeshService.exe differ
agents/agents-old/MeshService64-signed.exe
Binary files /dev/null and b/agents/agents-old/MeshService64-signed.exe differ
agents/agents-old/MeshService64.exe
Binary files /dev/null and b/agents/agents-old/MeshService64.exe differ
agents/agents-old/meshagent_aarch64
renamed
agents/agents-old/meshagent_aarch64-cortex-a53
renamed
agents/agents-old/meshagent_alpine-x86-64
renamed
agents/agents-old/meshagent_arm
renamed
agents/agents-old/meshagent_arm-linaro
renamed
agents/agents-old/meshagent_arm64
renamed
agents/agents-old/meshagent_armhf
renamed
agents/agents-old/meshagent_armhf2
renamed
agents/agents-old/meshagent_freebsd_x86-64
renamed
agents/agents-old/meshagent_mips
renamed
agents/agents-old/meshagent_mips24kc
renamed
agents/agents-old/meshagent_mipsel24kc
renamed
agents/agents-old/meshagent_osx-arm-64
renamed
agents/agents-old/meshagent_osx-universal-64
renamed
agents/agents-old/meshagent_osx-x86-64
renamed
agents/agents-old/meshagent_pogo
renamed
agents/agents-old/meshagent_poky
renamed
agents/agents-old/meshagent_poky64
renamed
agents/agents-old/meshagent_x86
renamed
agents/agents-old/meshagent_x86-64
renamed
agents/agents-old/meshagent_x86-64_nokvm
renamed
agents/agents-old/meshagent_x86_nokvm
renamed
meshuser.js
+17
-22
@@ -5404,7 +5404,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
5404
'getnetworkinfo': serverCommandGetNetworkInfo,
5405
'getsysinfo': serverCommandGetSysInfo,
5406
'lastconnect': serverCommandLastConnect,
5407
- 'lastseen': serverCommandLastSeen,
5407
+ 'lastconnects': serverCommandLastConnects,
5408
'meshes': serverCommandMeshes,
5409
'serverconsole': serverCommandServerConsole,
5410
'servererrors': serverCommandServerErrors,
@@ -5538,27 +5538,22 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
5538
});
5539
}
5540
5541
- function serverCommandLastSeen(command) {
5542
- var links = parent.GetAllMeshIdWithRights(user);
5543
- var extraids = getUserExtraIds();
5544
- db.GetAllTypeNoTypeFieldMeshFiltered(links, extraids, domain.id, 'node', null, (err, docs) => {
5545
- if (docs == null) { docs = []; }
5546
-
5547
- // use associative array to join lastconnects on to users's nodes (left join)
5548
- var LCs = {}
5549
- for (var i in docs) {
5550
- LCs[docs[i]._id] = '';
5551
- }
5552
-
5553
- db.GetAllType('lastconnect', (err, docs) => {
5554
- for (var j in docs) {
5555
- var nodeid = docs[j]._id.substring(2);
5556
- if (LCs[nodeid] != null) {
5557
- LCs[nodeid] = docs[j].time;
5558
- }
5559
- }
5560
-
5561
- try { ws.send(JSON.stringify({ action: 'lastseen', lastconnects: LCs })); } catch (ex) { }
5541
+ function serverCommandLastConnects(command) {
5542
+ const links = parent.GetAllMeshIdWithRights(user);
5543
+ const extraids = getUserExtraIds();
5544
+ db.GetAllTypeNoTypeFieldMeshFiltered(links, extraids, domain.id, 'node', null, function (err, docs) {
5545
+ if (docs == null) return;
5546
+
5547
+ // Create a list of node ids for this user and query them for last device connection time
5548
+ const ids = []
5549
+ for (var i in docs) { ids.push('lc' + docs[i]._id); }
5550
+
5551
+ // Pull list of last connections only for device owned by this user
5552
+ db.GetAllIdsOfType(ids, domain.id, 'lastconnect', function (err, docs) {
5553
+ if (docs == null) return;
5554
+ const response = {};
5555
+ for (var j in docs) { response[docs[j]._id.substring(2)] = docs[j].time; }
5556
+ try { ws.send(JSON.stringify({ action: 'lastconnects', lastconnects: response, tag: command.tag })); } catch (ex) { }
5557
});
5558
});
5559
}
views/default.handlebars
+7
-3
@@ -1373,6 +1373,7 @@
1373
var checkedNodeids = {};
1374
var deskKeyboardShortcuts = [];
1375
var deskLastClipboardSent = null;
1376
+ var requestedLastConnects = false;
1377
1378
// Console Message Display Timers
1379
var p11DeskConsoleMsgTimer = null;
@@ -1929,7 +1930,6 @@
1930
meshserver.send({ action: 'usergroups' });
1931
meshserver.send({ action: 'meshes' });
1932
meshserver.send({ action: 'nodes', id: '{{currentNode}}' });
1932
- meshserver.send({ action: 'lastseen' });
1933
meshserver.send({ action: 'loginTokens' });
1934
if (pluginHandler != null) { meshserver.send({ action: 'plugins' }); }
1935
if ('{{currentNode}}'.toLowerCase() == '') { meshserver.send({ action: 'files' }); }
@@ -2292,13 +2292,14 @@
2292
}
2293
break;
2294
}
2295
- case 'lastseen': {
2295
+ case 'lastconnects': {
2296
var lcnodes = Object.keys(message.lastconnects);
2297
for (var i in lcnodes) {
2298
var lcnodeid = lcnodes[i];
2299
var node = getNodeFromId(lcnodeid);
2300
if (node != null) { node.lastconnect = message.lastconnects[lcnodeid] }
2301
}
2302
+ mainUpdate(4);
2303
}
2304
case 'msg': {
2305
// Check if this is a message from a node
@@ -3984,7 +3985,10 @@
3985
if (deviceViewSettings.devsCols.indexOf('user') >= 0) { colums += '<th style=color:gray;width:120px>' + "User"; }
3986
if (deviceViewSettings.devsCols.indexOf('ip') >= 0) { colums += '<th style=color:gray;width:120px>' + "Address"; }
3987
if (deviceViewSettings.devsCols.indexOf('conn') >= 0) { colums += '<th style=color:gray;width:100px>' + "Connectivity"; }
3987
- if (deviceViewSettings.devsCols.indexOf('lastseen') >= 0) { colums += '<th style=color:gray;width:120px>' + "Last Seen"; }
3988
+ if (deviceViewSettings.devsCols.indexOf('lastseen') >= 0) {
3989
+ colums += '<th style=color:gray;width:120px>' + "Last Seen";
3990
+ if (requestedLastConnects == false) { requestedLastConnects = true; meshserver.send({ action: 'lastconnects' }); }
3991
+ }
3992
3993
// This height of 1 div at the end to fix a problem in Linux firefox browsers
3994
r = '<table style=width:100%;margin-top:4px cellpadding=0 cellspacing=0><th style=color:gray>' + colums + r + '</tr></table><div style=height:1px></div>';