diff --git a/agents/agents-new/MeshCmd-signed.exe b/agents/agents-new/MeshCmd-signed.exe new file mode 100644 index 00000000..905e6647 Binary files /dev/null and b/agents/agents-new/MeshCmd-signed.exe differ diff --git a/agents/agents-new/MeshCmd64-signed.exe b/agents/agents-new/MeshCmd64-signed.exe new file mode 100644 index 00000000..82c8926b Binary files /dev/null and b/agents/agents-new/MeshCmd64-signed.exe differ diff --git a/agents/agents-new/MeshService-signed.exe b/agents/agents-new/MeshService-signed.exe new file mode 100644 index 00000000..d9ea1348 Binary files /dev/null and b/agents/agents-new/MeshService-signed.exe differ diff --git a/agents/agents-new/MeshService.exe b/agents/agents-new/MeshService.exe new file mode 100644 index 00000000..85a69b6d Binary files /dev/null and b/agents/agents-new/MeshService.exe differ diff --git a/agents/agents-new/MeshService64-signed.exe b/agents/agents-new/MeshService64-signed.exe new file mode 100644 index 00000000..ed80a9d2 Binary files /dev/null and b/agents/agents-new/MeshService64-signed.exe differ diff --git a/agents/agents-new/MeshService64.exe b/agents/agents-new/MeshService64.exe new file mode 100644 index 00000000..55cc73c2 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..9dedbb4d 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..d3936a78 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..b91921f4 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..14e59669 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..ba3471ec 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..9b8b6185 Binary files /dev/null and b/agents/agents-old/MeshService64.exe differ diff --git a/meshdesktopmultiplex.js b/meshdesktopmultiplex.js index edf4ce51..b4b3b6e2 100644 --- a/meshdesktopmultiplex.js +++ b/meshdesktopmultiplex.js @@ -304,11 +304,13 @@ function CreateDesktopMultiplexor(parent, domain, nodeid, func) { } } - // Send the list of all users currently vieweing this session to all viewers + // Send the list of all users currently vieweing this session to all viewers and servers obj.sendSessionMetadata = function () { var allUsers = {}; for (var i in obj.viewers) { var v = obj.viewers[i]; if ((v.user != null) && (v.user._id != null)) { if (allUsers[v.user._id] == null) { allUsers[v.user._id] = 1; } else { allUsers[v.user._id]++; } } } obj.sendToAllViewers(JSON.stringify({ type: 'metadata', 'ctrlChannel': '102938', users: allUsers, startTime: obj.startTime })); + + // TODO: Update the servers } // Send this command to all viewers @@ -401,6 +403,7 @@ function CreateDesktopMultiplexor(parent, domain, nodeid, func) { if (peer == obj.agent) { obj.recordingFileWriting = true; recordData(true, data, function () { + if (obj.viewers == null) return; obj.recordingFileWriting = false; if ((obj.viewersOverflowCount < obj.viewers.length) && obj.agent && (obj.agent.paused == true)) { obj.agent.paused = false; obj.agent.ws._socket.resume(); } obj.processAgentData(data); diff --git a/public/images/icon-relay-notify.png b/public/images/icon-relay-notify.png new file mode 100644 index 00000000..d7f262ac Binary files /dev/null and b/public/images/icon-relay-notify.png differ diff --git a/public/images/icon-relay-notify10.png b/public/images/icon-relay-notify10.png new file mode 100644 index 00000000..6bae061c Binary files /dev/null and b/public/images/icon-relay-notify10.png differ diff --git a/public/images/icon-relay-notify12.png b/public/images/icon-relay-notify12.png new file mode 100644 index 00000000..704065d6 Binary files /dev/null and b/public/images/icon-relay-notify12.png differ diff --git a/public/styles/style.css b/public/styles/style.css index e605c660..0ab7839e 100644 --- a/public/styles/style.css +++ b/public/styles/style.css @@ -746,6 +746,44 @@ NoMeshesPanel img { width: 47px; } +.deviceNotifyDot { + text-align:center; + position:absolute; + right:10px; + top:0px; + width:16px; + height:16px; + color:#FFF; + background-color:#00F; + padding:2px; + border-radius:10px; + box-shadow: 2px 2px 10px black; + cursor:pointer; +} + + .deviceNotifyDot:hover { + background-color:#44F; + } + +.deviceNotifySmallDot { + text-align:center; + position:absolute; + right:10px; + top:0px; + width:10px; + height:10px; + color:#FFF; + padding:2px; + background-color:#00F; + border-radius:10px; + box-shadow: 2px 2px 10px black; + cursor:pointer; +} + + .deviceNotifySmallDot:hover { + background-color:#44F; + } + #xdevices { max-height: calc(100vh - 242px); overflow-y: auto; diff --git a/translate/translate.json b/translate/translate.json index c6f0ced6..02cd759e 100644 --- a/translate/translate.json +++ b/translate/translate.json @@ -30971,4 +30971,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/views/default.handlebars b/views/default.handlebars index 85979d9c..5ac1fed3 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -3151,11 +3151,21 @@ if (showRealNames == true && node.rname != null) name = EscapeHtml(node.rname); if (name.length == 0) { name = '' + "None" + ''; } + // Setup device notification (TODO) + var devNotify = ''; + if (node.sessions != null) { + if (view == 2) { + devNotify = ''; + } else { + devNotify = ''; + } + } + // Node var icon = node.icon; if ((!node.conn) || (node.conn == 0)) { icon += ' gray'; } if (view == 1) { - r += '
' + name + '
' + NodeStateStr(node) + '
'; + r += '
' + name + '
' + NodeStateStr(node) + '
' + devNotify + '
'; } else if (view == 2) { var states = []; if (node.conn) { @@ -3170,11 +3180,11 @@ if (sort == 1) { collapseName = ('pwr:' + (node.pwr?node.pwr:0)); } else if (sort == 3) { collapseName = 'tag:**xx**xx*TaG*xx**xx**'; } var collapsed = (sort != 3) & CollapsedGroups[collapseName]; - r += '
'; + r += '
'; r += '
'; r += '
'; r += '
'; - r += '
' + name + '
'; + r += '
' + name + '
' + devNotify + ''; r += '' + getUserShortStr(node); r += '' + (node.ip != null ? node.ip : ''); r += '' + states.join(' + '); @@ -3182,7 +3192,7 @@ r += ''; } else if ((view == 3) && (node.conn & 1) && (((meshrights & 8) || (meshrights & 256)) != 0) && ((node.agent.caps & 1) != 0)) { // Check if we have rights and agent is capable of KVM. if ((multiDesktopFilter) && ((multiDesktopFilter.length == 0) || (multiDesktopFilter.indexOf('devid_' + node._id) >= 0))) { - r += '
'; + r += '
' + devNotify; //r += ''; r += '
 ' + name + '
'; r += '
' + "Disconnected" + '
'; @@ -3393,6 +3403,16 @@ oldviewmode = view; } + // Show currently active sessions on this device + function showDeviceSessions(nodeid) { + if (xxdialogMode) return; + var node = getNodeFromId(nodeid), x = ''; + if (node == null) return; + console.log(node.sessions); + x += addHtmlValue4("User", '1 session'); // TODO + setDialogMode(2, "Sessions - " + EscapeHtml(node.name), 1, null, x, 'SESSIONS-' + nodeid); + } + function toggleCollapseGroup(id, id2, type) { var x; if (type == 2) {