diff --git a/agents/MeshCmd-signed.exe b/agents/MeshCmd-signed.exe index 20e0d3fc..178e4476 100644 Binary files a/agents/MeshCmd-signed.exe and b/agents/MeshCmd-signed.exe differ diff --git a/agents/MeshCmd64-signed.exe b/agents/MeshCmd64-signed.exe index f6b83046..f596b46c 100644 Binary files a/agents/MeshCmd64-signed.exe and b/agents/MeshCmd64-signed.exe differ diff --git a/agents/MeshService-signed.exe b/agents/MeshService-signed.exe index e6d1e470..f4c18863 100644 Binary files a/agents/MeshService-signed.exe and b/agents/MeshService-signed.exe differ diff --git a/agents/MeshService.exe b/agents/MeshService.exe index 6d161a14..c0ede083 100644 Binary files a/agents/MeshService.exe and b/agents/MeshService.exe differ diff --git a/agents/MeshService64-signed.exe b/agents/MeshService64-signed.exe index bad916a9..a1575504 100644 Binary files a/agents/MeshService64-signed.exe and b/agents/MeshService64-signed.exe differ diff --git a/agents/MeshService64.exe b/agents/MeshService64.exe index 88200552..22f76df4 100644 Binary files a/agents/MeshService64.exe and b/agents/MeshService64.exe differ diff --git a/agents/agents-new/MeshService.exe b/agents/agents-new/MeshService.exe new file mode 100644 index 00000000..c0ede083 Binary files /dev/null and b/agents/agents-new/MeshService.exe differ diff --git a/agents/agents-new/MeshService64.exe b/agents/agents-new/MeshService64.exe new file mode 100644 index 00000000..22f76df4 Binary files /dev/null and b/agents/agents-new/MeshService64.exe differ diff --git a/agents/agents-old/MeshCmd-signed.exe b/agents/agents-old/MeshCmd-signed.exe new file mode 100644 index 00000000..20e0d3fc Binary files /dev/null and b/agents/agents-old/MeshCmd-signed.exe differ diff --git a/agents/agents-old/MeshCmd64-signed.exe b/agents/agents-old/MeshCmd64-signed.exe new file mode 100644 index 00000000..f6b83046 Binary files /dev/null and b/agents/agents-old/MeshCmd64-signed.exe differ diff --git a/agents/agents-old/MeshService-signed.exe b/agents/agents-old/MeshService-signed.exe new file mode 100644 index 00000000..e6d1e470 Binary files /dev/null and b/agents/agents-old/MeshService-signed.exe differ diff --git a/agents/agents-old/MeshService.exe b/agents/agents-old/MeshService.exe new file mode 100644 index 00000000..6d161a14 Binary files /dev/null and b/agents/agents-old/MeshService.exe differ diff --git a/agents/agents-old/MeshService64-signed.exe b/agents/agents-old/MeshService64-signed.exe new file mode 100644 index 00000000..bad916a9 Binary files /dev/null and b/agents/agents-old/MeshService64-signed.exe differ diff --git a/agents/agents-old/MeshService64.exe b/agents/agents-old/MeshService64.exe new file mode 100644 index 00000000..88200552 Binary files /dev/null and b/agents/agents-old/MeshService64.exe differ diff --git a/agents/meshagent_aarch64 b/agents/agents-old/meshagent_aarch64 similarity index 100% rename from agents/meshagent_aarch64 rename to agents/agents-old/meshagent_aarch64 diff --git a/agents/meshagent_aarch64-cortex-a53 b/agents/agents-old/meshagent_aarch64-cortex-a53 similarity index 100% rename from agents/meshagent_aarch64-cortex-a53 rename to agents/agents-old/meshagent_aarch64-cortex-a53 diff --git a/agents/meshagent_alpine-x86-64 b/agents/agents-old/meshagent_alpine-x86-64 similarity index 100% rename from agents/meshagent_alpine-x86-64 rename to agents/agents-old/meshagent_alpine-x86-64 diff --git a/agents/meshagent_arm b/agents/agents-old/meshagent_arm similarity index 100% rename from agents/meshagent_arm rename to agents/agents-old/meshagent_arm diff --git a/agents/meshagent_arm-linaro b/agents/agents-old/meshagent_arm-linaro similarity index 100% rename from agents/meshagent_arm-linaro rename to agents/agents-old/meshagent_arm-linaro diff --git a/agents/meshagent_arm64 b/agents/agents-old/meshagent_arm64 similarity index 100% rename from agents/meshagent_arm64 rename to agents/agents-old/meshagent_arm64 diff --git a/agents/meshagent_armhf b/agents/agents-old/meshagent_armhf similarity index 100% rename from agents/meshagent_armhf rename to agents/agents-old/meshagent_armhf diff --git a/agents/meshagent_armhf2 b/agents/agents-old/meshagent_armhf2 similarity index 100% rename from agents/meshagent_armhf2 rename to agents/agents-old/meshagent_armhf2 diff --git a/agents/meshagent_freebsd_x86-64 b/agents/agents-old/meshagent_freebsd_x86-64 similarity index 100% rename from agents/meshagent_freebsd_x86-64 rename to agents/agents-old/meshagent_freebsd_x86-64 diff --git a/agents/meshagent_mips b/agents/agents-old/meshagent_mips similarity index 100% rename from agents/meshagent_mips rename to agents/agents-old/meshagent_mips diff --git a/agents/meshagent_mips24kc b/agents/agents-old/meshagent_mips24kc similarity index 100% rename from agents/meshagent_mips24kc rename to agents/agents-old/meshagent_mips24kc diff --git a/agents/meshagent_mipsel24kc b/agents/agents-old/meshagent_mipsel24kc similarity index 100% rename from agents/meshagent_mipsel24kc rename to agents/agents-old/meshagent_mipsel24kc diff --git a/agents/meshagent_osx-arm-64 b/agents/agents-old/meshagent_osx-arm-64 similarity index 100% rename from agents/meshagent_osx-arm-64 rename to agents/agents-old/meshagent_osx-arm-64 diff --git a/agents/meshagent_osx-universal-64 b/agents/agents-old/meshagent_osx-universal-64 similarity index 100% rename from agents/meshagent_osx-universal-64 rename to agents/agents-old/meshagent_osx-universal-64 diff --git a/agents/meshagent_osx-x86-64 b/agents/agents-old/meshagent_osx-x86-64 similarity index 100% rename from agents/meshagent_osx-x86-64 rename to agents/agents-old/meshagent_osx-x86-64 diff --git a/agents/meshagent_pogo b/agents/agents-old/meshagent_pogo similarity index 100% rename from agents/meshagent_pogo rename to agents/agents-old/meshagent_pogo diff --git a/agents/meshagent_poky b/agents/agents-old/meshagent_poky similarity index 100% rename from agents/meshagent_poky rename to agents/agents-old/meshagent_poky diff --git a/agents/meshagent_poky64 b/agents/agents-old/meshagent_poky64 similarity index 100% rename from agents/meshagent_poky64 rename to agents/agents-old/meshagent_poky64 diff --git a/agents/meshagent_x86 b/agents/agents-old/meshagent_x86 similarity index 100% rename from agents/meshagent_x86 rename to agents/agents-old/meshagent_x86 diff --git a/agents/meshagent_x86-64 b/agents/agents-old/meshagent_x86-64 similarity index 100% rename from agents/meshagent_x86-64 rename to agents/agents-old/meshagent_x86-64 diff --git a/agents/meshagent_x86-64_nokvm b/agents/agents-old/meshagent_x86-64_nokvm similarity index 100% rename from agents/meshagent_x86-64_nokvm rename to agents/agents-old/meshagent_x86-64_nokvm diff --git a/agents/meshagent_x86_nokvm b/agents/agents-old/meshagent_x86_nokvm similarity index 100% rename from agents/meshagent_x86_nokvm rename to agents/agents-old/meshagent_x86_nokvm diff --git a/meshuser.js b/meshuser.js index 30d50cf8..4799468c 100644 --- a/meshuser.js +++ b/meshuser.js @@ -5404,7 +5404,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use 'getnetworkinfo': serverCommandGetNetworkInfo, 'getsysinfo': serverCommandGetSysInfo, 'lastconnect': serverCommandLastConnect, - 'lastseen': serverCommandLastSeen, + 'lastconnects': serverCommandLastConnects, 'meshes': serverCommandMeshes, 'serverconsole': serverCommandServerConsole, 'servererrors': serverCommandServerErrors, @@ -5538,27 +5538,22 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use }); } - function serverCommandLastSeen(command) { - var links = parent.GetAllMeshIdWithRights(user); - var extraids = getUserExtraIds(); - db.GetAllTypeNoTypeFieldMeshFiltered(links, extraids, domain.id, 'node', null, (err, docs) => { - if (docs == null) { docs = []; } + function serverCommandLastConnects(command) { + const links = parent.GetAllMeshIdWithRights(user); + const extraids = getUserExtraIds(); + db.GetAllTypeNoTypeFieldMeshFiltered(links, extraids, domain.id, 'node', null, function (err, docs) { + if (docs == null) return; - // use associative array to join lastconnects on to users's nodes (left join) - var LCs = {} - for (var i in docs) { - LCs[docs[i]._id] = ''; - } + // Create a list of node ids for this user and query them for last device connection time + const ids = [] + for (var i in docs) { ids.push('lc' + docs[i]._id); } - db.GetAllType('lastconnect', (err, docs) => { - for (var j in docs) { - var nodeid = docs[j]._id.substring(2); - if (LCs[nodeid] != null) { - LCs[nodeid] = docs[j].time; - } - } - - try { ws.send(JSON.stringify({ action: 'lastseen', lastconnects: LCs })); } catch (ex) { } + // Pull list of last connections only for device owned by this user + db.GetAllIdsOfType(ids, domain.id, 'lastconnect', function (err, docs) { + if (docs == null) return; + const response = {}; + for (var j in docs) { response[docs[j]._id.substring(2)] = docs[j].time; } + try { ws.send(JSON.stringify({ action: 'lastconnects', lastconnects: response, tag: command.tag })); } catch (ex) { } }); }); } diff --git a/views/default.handlebars b/views/default.handlebars index 962eb380..c954eddc 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -1373,6 +1373,7 @@ var checkedNodeids = {}; var deskKeyboardShortcuts = []; var deskLastClipboardSent = null; + var requestedLastConnects = false; // Console Message Display Timers var p11DeskConsoleMsgTimer = null; @@ -1929,7 +1930,6 @@ meshserver.send({ action: 'usergroups' }); meshserver.send({ action: 'meshes' }); meshserver.send({ action: 'nodes', id: '{{currentNode}}' }); - meshserver.send({ action: 'lastseen' }); meshserver.send({ action: 'loginTokens' }); if (pluginHandler != null) { meshserver.send({ action: 'plugins' }); } if ('{{currentNode}}'.toLowerCase() == '') { meshserver.send({ action: 'files' }); } @@ -2292,13 +2292,14 @@ } break; } - case 'lastseen': { + case 'lastconnects': { var lcnodes = Object.keys(message.lastconnects); for (var i in lcnodes) { var lcnodeid = lcnodes[i]; var node = getNodeFromId(lcnodeid); if (node != null) { node.lastconnect = message.lastconnects[lcnodeid] } } + mainUpdate(4); } case 'msg': { // Check if this is a message from a node @@ -3984,7 +3985,10 @@ if (deviceViewSettings.devsCols.indexOf('user') >= 0) { colums += '' + "User"; } if (deviceViewSettings.devsCols.indexOf('ip') >= 0) { colums += '' + "Address"; } if (deviceViewSettings.devsCols.indexOf('conn') >= 0) { colums += '' + "Connectivity"; } - if (deviceViewSettings.devsCols.indexOf('lastseen') >= 0) { colums += '' + "Last Seen"; } + if (deviceViewSettings.devsCols.indexOf('lastseen') >= 0) { + colums += '' + "Last Seen"; + if (requestedLastConnects == false) { requestedLastConnects = true; meshserver.send({ action: 'lastconnects' }); } + } // This height of 1 div at the end to fix a problem in Linux firefox browsers r = '
' + colums + r + '
';