diff --git a/views/default-mobile.handlebars b/views/default-mobile.handlebars
index 2143ca8a..a4800151 100644
--- a/views/default-mobile.handlebars
+++ b/views/default-mobile.handlebars
@@ -3136,27 +3136,61 @@
for (var i in node.sessions) {
if ((i == 'kvm') && (node.sessions.multidesk == null)) {
x += '' + "Remote Desktop" + '';
- for (var j in node.sessions.kvm) { x += addHtmlValue4(getUserName(j), (node.sessions.kvm[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.kvm[j]))); }
+ for (var j in node.sessions.kvm) {
+ var trash = '';
+ if ((j == userinfo._id) || (GetNodeRights(node) == 0xFFFFFFFF)) { trash = '
'; }
+ x += addHtmlValue4(getUserName(j), ((node.sessions.kvm[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.kvm[j]))) + trash);
+ }
} else if (i == 'multidesk') {
x += '' + "Remote Desktop" + '';
- for (var j in node.sessions.multidesk) { x += addHtmlValue4(getUserName(j), ((node.sessions.multidesk[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.multidesk[j])))); }
+ for (var j in node.sessions.multidesk) {
+ var trash = '';
+ if ((j == userinfo._id) || (GetNodeRights(node) == 0xFFFFFFFF)) { trash = '
'; }
+ x += addHtmlValue4(getUserName(j), ((node.sessions.multidesk[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.multidesk[j]))) + trash);
+ }
} else if (i == 'terminal') {
x += '' + "Terminal" + '';
- for (var j in node.sessions.terminal) { x += addHtmlValue4(getUserName(j), ((node.sessions.terminal[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.terminal[j])))); }
+ for (var j in node.sessions.terminal) {
+ var trash = '';
+ if ((j == userinfo._id) || (GetNodeRights(node) == 0xFFFFFFFF)) { trash = '
'; }
+ x += addHtmlValue4(getUserName(j), ((node.sessions.terminal[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.terminal[j]))) + trash);
+ }
} else if (i == 'files') {
x += '' + "Files" + '';
- for (var j in node.sessions.files) { x += addHtmlValue4(getUserName(j), ((node.sessions.files[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.files[j])))); }
+ for (var j in node.sessions.files) {
+ var trash = '';
+ if ((j == userinfo._id) || (GetNodeRights(node) == 0xFFFFFFFF)) { trash = '
'; }
+ x += addHtmlValue4(getUserName(j), ((node.sessions.files[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.files[j]))) + trash);
+ }
} else if (i == 'tcp') {
x += '' + "TCP Routing" + '';
- for (var j in node.sessions.tcp) { x += addHtmlValue4(getUserName(j), ((node.sessions.tcp[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.tcp[j])))); }
+ for (var j in node.sessions.tcp) {
+ var trash = '';
+ if ((j == userinfo._id) || (GetNodeRights(node) == 0xFFFFFFFF)) { trash = '
'; }
+ x += addHtmlValue4(getUserName(j), ((node.sessions.tcp[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.tcp[j]))) + trash);
+ }
} else if (i == 'udp') {
x += '' + "UDP Routing" + '';
- for (var j in node.sessions.udp) { x += addHtmlValue4(getUserName(j), ((node.sessions.udp[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.udp[j])))); }
+ for (var j in node.sessions.udp) {
+ var trash = '';
+ if ((j == userinfo._id) || (GetNodeRights(node) == 0xFFFFFFFF)) { trash = '
'; }
+ x += addHtmlValue4(getUserName(j), ((node.sessions.udp[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.udp[j]))) + trash);
+ }
}
}
if (x != '') { setDialogMode(2, "Sessions" + ' - ' + EscapeHtml(node.name), 1, null, x, 'SESSIONS-' + node._id); } else { setDialogMode(0); }
}
+ function endDeviceSession(protocol, nodeid, userid) {
+ var userIdSplit = decodeURIComponent(userid).split('/'), uid = userIdSplit[0] + '/' + userIdSplit[1] + '/' + userIdSplit[2], guestname = null;
+ if ((userIdSplit.length == 4) && (userIdSplit[3].startsWith('guest:'))) { guestname = atob(userIdSplit[3].substring(6)); }
+ if (protocol == 'multidesk') {
+ meshserver.send({ action: 'endDesktopMultiplex', nodeid: decodeURIComponent(nodeid), xuserid: uid, guestname, guestname });
+ } else {
+ meshserver.send({ action: 'msg', type: 'endtunnel', nodeid: decodeURIComponent(nodeid), xuserid: uid, guestname, guestname, protocol: protocol });
+ }
+ }
+
// Show currently active sessions on this device
function showDeviceMessages(nodeid, force, e) {
if (e) haltEvent(e);