From fe80adfbe891be0b5a80e0071bbfd5f0ca924d7d Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Tue, 19 Oct 2021 13:30:04 -0700 Subject: [PATCH] Added session termination to mobile site. --- views/default-mobile.handlebars | 46 ++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 6 deletions(-) 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);