Added session sharing guest names to event log.
Ylian Saint-Hilaire committed
Jul 29, 2021 at 12:01 UTC
89071f2454fc75b16702d375e2b9083fe181d86c
4 files changed
+31
-14
agents/meshcore.js
+6
-4
@@ -482,6 +482,7 @@ function MeshServerLog(msg, state) {
482
if (state.username) { msg.username = state.username; }
483
if (state.sessionid) { msg.sessionid = state.sessionid; }
484
if (state.remoteaddr) { msg.remoteaddr = state.remoteaddr; }
485
+ if (state.guestname) { msg.guestname = state.guestname; }
486
}
487
mesh.SendCommand(msg);
488
}
@@ -494,6 +495,7 @@ function MeshServerLogEx(id, args, msg, state) {
495
if (state.username) { msg.username = state.username; }
496
if (state.sessionid) { msg.sessionid = state.sessionid; }
497
if (state.remoteaddr) { msg.remoteaddr = state.remoteaddr; }
498
+ if (state.guestname) { msg.guestname = state.guestname; }
499
}
500
mesh.SendCommand(msg);
501
}
@@ -2210,7 +2212,7 @@ function onTunnelData(data) {
2212
if (this.ws.httprequest.desktop.kvm.connectionBar) {
2213
this.ws.httprequest.desktop.kvm.connectionBar.httprequest = this.ws.httprequest;
2214
this.ws.httprequest.desktop.kvm.connectionBar.on('close', function () {
2213
- MeshServerLogEx(33, null, "Remote Desktop Connection forcefully closed by local user (" + this.httprequest.remoteaddr + ")", this.httprequest);
2215
+ MeshServerLogEx(29, null, "Remote Desktop Connection forcefully closed by local user (" + this.httprequest.remoteaddr + ")", this.httprequest);
2216
for (var i in this.httprequest.desktop.kvm._pipedStreams) {
2217
this.httprequest.desktop.kvm._pipedStreams[i].end();
2218
}
@@ -2249,15 +2251,15 @@ function onTunnelData(data) {
2251
}
2252
try {
2253
this.httprequest.desktop.kvm.connectionBar = require('notifybar-desktop')(this.httprequest.privacybartext.replace('{0}', this.httprequest.desktop.kvm.rusers.join(', ')).replace('{1}', this.httprequest.desktop.kvm.users.join(', ')), require('MeshAgent')._tsid);
2252
- MeshServerLogEx(37, null, "Remote Desktop Connection Bar Activated/Updated (" + this.httprequest.remoteaddr + ")", this.httprequest);
2254
+ MeshServerLogEx(31, null, "Remote Desktop Connection Bar Activated/Updated (" + this.httprequest.remoteaddr + ")", this.httprequest);
2255
}
2256
catch (e) {
2255
- MeshServerLogEx(38, null, "Remote Desktop Connection Bar Failed or not Supported (" + this.httprequest.remoteaddr + ")", this.httprequest);
2257
+ MeshServerLogEx(32, null, "Remote Desktop Connection Bar Failed or not Supported (" + this.httprequest.remoteaddr + ")", this.httprequest);
2258
}
2259
if (this.httprequest.desktop.kvm.connectionBar) {
2260
this.httprequest.desktop.kvm.connectionBar.httprequest = this.httprequest;
2261
this.httprequest.desktop.kvm.connectionBar.on('close', function () {
2260
- MeshServerLogEx(39, null, "Remote Desktop Connection forcefully closed by local user (" + this.httprequest.remoteaddr + ")", this.httprequest);
2262
+ MeshServerLogEx(29, null, "Remote Desktop Connection forcefully closed by local user (" + this.httprequest.remoteaddr + ")", this.httprequest);
2263
for (var i in this.httprequest.desktop.kvm._pipedStreams) {
2264
this.httprequest.desktop.kvm._pipedStreams[i].end();
2265
}
meshagent.js
+1
@@ -1310,6 +1310,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
1310
if ((typeof command.msg == 'string') && (command.msg.length < 4096)) {
1311
var event = { etype: 'node', action: 'agentlog', nodeid: obj.dbNodeKey, domain: domain.id, msg: command.msg };
1312
if (typeof command.msgid == 'number') { event.msgid = command.msgid; }
1313
+ if (typeof command.guestname == 'string') { event.guestname = command.guestname; }
1314
if (Array.isArray(command.msgArgs)) { event.msgArgs = command.msgArgs; }
1315
if (typeof command.remoteaddr == 'string') { event.remoteaddr = command.remoteaddr; }
1316
var targets = parent.CreateMeshDispatchTargets(obj.dbMeshKey, [obj.dbNodeKey]);
meshrelay.js
+6
@@ -475,6 +475,7 @@ function CreateMeshRelayEx(parent, ws, req, domain, user, cookie) {
475
else if (obj.req.query.p == 2) { msg = 'Started desktop session'; msgid = 15; }
476
else if (obj.req.query.p == 5) { msg = 'Started file management session'; msgid = 16; }
477
var event = { etype: 'relay', action: 'relaylog', domain: domain.id, userid: sessionUser._id, username: sessionUser.name, msgid: msgid, msgArgs: [obj.id, obj.peer.req.clientIp, req.clientIp], msg: msg + ' \"' + obj.id + '\" from ' + obj.peer.req.clientIp + ' to ' + req.clientIp, protocol: req.query.p, nodeid: req.query.nodeid };
478
+ if (obj.guestname) { event.guestname = obj.guestname; } else if (relayinfo.peer1.guestname) { event.guestname = relayinfo.peer1.guestname; } // If this is a sharing session, set the guest name here.
479
parent.parent.DispatchEvent(['*', sessionUser._id], obj, event);
480
}
481
} else {
@@ -653,9 +654,11 @@ function CreateMeshRelayEx(parent, ws, req, domain, user, cookie) {
654
else if (obj.req.query.p == 200) { msg = 'Ended messenger session', msgid = 112; }
655
if (user) {
656
var event = { etype: 'relay', action: 'relaylog', domain: domain.id, userid: user._id, username: user.name, msgid: msgid, msgArgs: [obj.id, obj.req.clientIp, obj.peer.req.clientIp, Math.floor((Date.now() - ws.time) / 1000)], msg: msg + ' \"' + obj.id + '\" from ' + obj.req.clientIp + ' to ' + obj.peer.req.clientIp + ', ' + Math.floor((Date.now() - ws.time) / 1000) + ' second(s)', protocol: obj.req.query.p, nodeid: obj.req.query.nodeid };
657
+ if (obj.guestname) { event.guestname = obj.guestname; } else if (peer.guestname) { event.guestname = peer.guestname; } // If this is a sharing session, set the guest name here.
658
parent.parent.DispatchEvent(['*', user._id], obj, event);
659
} else if (peer.user) {
660
var event = { etype: 'relay', action: 'relaylog', domain: domain.id, userid: peer.user._id, username: peer.user.name, msgid: msgid, msgArgs: [obj.id, obj.req.clientIp, obj.peer.req.clientIp, Math.floor((Date.now() - ws.time) / 1000)], msg: msg + ' \"' + obj.id + '\" from ' + obj.req.clientIp + ' to ' + obj.peer.req.clientIp + ', ' + Math.floor((Date.now() - ws.time) / 1000) + ' second(s)', protocol: obj.req.query.p, nodeid: obj.req.query.nodeid };
661
+ if (obj.guestname) { event.guestname = obj.guestname; } else if (peer.guestname) { event.guestname = peer.guestname; } // If this is a sharing session, set the guest name here.
662
parent.parent.DispatchEvent(['*', peer.user._id], obj, event);
663
}
664
}
@@ -888,6 +891,7 @@ function CreateMeshRelayEx(parent, ws, req, domain, user, cookie) {
891
if (obj.id == null) { obj.id = ('' + Math.random()).substring(2); }
892
const rcookie = parent.parent.encodeCookie({ ruserid: user._id, nodeid: node._id }, parent.parent.loginCookieEncryptionKey);
893
const command = { nodeid: node._id, action: 'msg', type: 'tunnel', userid: user._id, value: '*/' + xdomain + 'meshrelay.ashx?p=' + cookie.p + '&id=' + obj.id + '&rauth=' + rcookie + '&nodeid=' + node._id, soptions: {}, rights: cookie.r, guestname: cookie.gn, consent: cookie.cf, remoteaddr: cleanRemoteAddr(obj.req.clientIp) };
894
+ obj.guestname = cookie.gn;
895
896
// Limit what this relay connection can do
897
if (typeof cookie.p == 'number') {
@@ -1114,6 +1118,7 @@ function CreateLocalRelayEx(parent, ws, req, domain, user, cookie) {
1118
else if (req.query.p == 12) { protocolStr = 'VNC'; }
1119
else if (req.query.p == 13) { protocolStr = 'SSH-FILES'; }
1120
var event = { etype: 'relay', action: 'relaylog', domain: domain.id, userid: obj.user._id, username: obj.user.name, msgid: 121, msgArgs: [obj.id, protocolStr, obj.host, Math.floor((Date.now() - obj.time) / 1000)], msg: 'Ended local relay session \"' + obj.id + '\", protocol ' + protocolStr + ' to ' + obj.host + ', ' + Math.floor((Date.now() - obj.time) / 1000) + ' second(s)', nodeid: obj.req.query.nodeid, protocol: req.query.p, in: inTraffc, out: outTraffc };
1121
+ if (obj.guestname) { event.guestname = obj.guestname; } // If this is a sharing session, set the guest name here.
1122
parent.parent.DispatchEvent(['*', user._id], obj, event);
1123
}
1124
@@ -1168,6 +1173,7 @@ function CreateLocalRelayEx(parent, ws, req, domain, user, cookie) {
1173
else if (req.query.p == 13) { protocolStr = 'SSH-FILES'; }
1174
obj.time = Date.now();
1175
var event = { etype: 'relay', action: 'relaylog', domain: domain.id, userid: obj.user._id, username: obj.user.name, msgid: 120, msgArgs: [obj.id, protocolStr, obj.host], msg: 'Started local relay session \"' + obj.id + '\", protocol ' + protocolStr + ' to ' + obj.host, nodeid: req.query.nodeid, protocol: req.query.p };
1176
+ if (obj.guestname) { event.guestname = obj.guestname; } // If this is a sharing session, set the guest name here.
1177
parent.parent.DispatchEvent(['*', obj.user._id, obj.meshid, obj.nodeid], obj, event);
1178
1179
// Count the session
views/default.handlebars
+18
-10
@@ -9782,10 +9782,12 @@
9782
msg = EscapeHtml(msg).split('(R)').join('®');
9783
}
9784
if (event.username) {
9785
+ var guestname = '';
9786
+ if (event.guestname) { guestname = ' / <span title="' + "This is a guest sharing session" + '">' + EscapeHtml(event.guestname) + '</span>'; }
9787
if ((userinfo.siteadmin & 2) && (event.userid)) {
9786
- msg = '<a href=# onclick=\'gotoUser("' + encodeURIComponentEx(event.userid) + '");haltEvent(event);\'>' + EscapeHtml(event.username) + '</a> → ' + msg;
9788
+ msg = '<a href=# onclick=\'gotoUser("' + encodeURIComponentEx(event.userid) + '");haltEvent(event);\'>' + EscapeHtml(event.username) + '</a>' + guestname + ' → ' + msg;
9789
} else {
9788
- msg = EscapeHtml(event.username) + ' → ' + msg;
9790
+ msg = EscapeHtml(event.username) + guestname + ' → ' + msg;
9791
}
9792
}
9793
if (event.etype == 'relay' || event.action == 'relaylog') icon = 'relayIcon16';
@@ -12514,13 +12516,13 @@
12516
30: "Starting remote desktop after local user accepted",
12517
31: "Remote Desktop Connection Bar Activated/Updated",
12518
32: "Remote Desktop Connection Bar Failed or Not Supported",
12517
- 33: "Remote Desktop Connection forcefully closed by local user",
12519
+ 33: "Remote Desktop Connection forcefully closed by local user", // No longer used, 29 must be used instead.
12520
34: "Failed to start remote desktop after local user rejected",
12521
35: "Started remote desktop with toast notification",
12522
36: "Started remote desktop without notification",
12521
- 37: "Remote Desktop Connection Bar Activated/Updated",
12522
- 38: "Remote Desktop Connection Bar Failed or not Supported",
12523
- 39: "Remote Desktop Connection forcefully closed by local user",
12523
+ 37: "Remote Desktop Connection Bar Activated/Updated", // No longer used, 31 must be used instead.
12524
+ 38: "Remote Desktop Connection Bar Failed or not Supported", // No longer used, 33 must be used instead.
12525
+ 39: "Remote Desktop Connection forcefully closed by local user", // No longer used, 29 must be used instead.
12526
40: "Starting remote files after local user accepted",
12527
41: "Failed to start remote files after local user rejected",
12528
42: "Started remote files with toast notification",
@@ -12652,10 +12654,12 @@
12654
}
12655
}
12656
if (event.username) {
12657
+ var guestname = '';
12658
+ if (event.guestname) { guestname = ' / <span title="' + "This is a guest sharing session" + '">' + EscapeHtml(event.guestname) + '</span>'; }
12659
if ((userinfo.siteadmin & 2) && (event.userid)) {
12656
- msg = '<a href=# onclick=\'gotoUser("' + encodeURIComponentEx(event.userid) + '");haltEvent(event);\'>' + EscapeHtml(event.username) + '</a> → ' + msg;
12660
+ msg = '<a href=# onclick=\'gotoUser("' + encodeURIComponentEx(event.userid) + '");haltEvent(event);\'>' + EscapeHtml(event.username) + '</a>' + guestname + ' → ' + msg;
12661
} else {
12658
- msg = EscapeHtml(event.username) + ' → ' + msg;
12662
+ msg = EscapeHtml(event.username) + guestname + ' → ' + msg;
12663
}
12664
}
12665
if (event.remoteaddr) { msg += ' (' + event.remoteaddr + ')'; }
@@ -14276,11 +14280,15 @@
14280
}
14281
}
14282
if (event.username && (event.username != currentUser.name)) {
14283
+ var guestname = '';
14284
+ if (event.guestname) { guestname = ' / <span title="' + "This is a guest sharing session" + '">' + EscapeHtml(event.guestname) + '</span>'; }
14285
if ((userinfo.siteadmin & 2) && (event.userid)) {
14280
- msg = '<a href=# onclick=\'gotoUser("' + encodeURIComponentEx(event.userid) + '");haltEvent(event);\'>' + EscapeHtml(event.username) + '</a> → ' + msg;
14286
+ msg = '<a href=# onclick=\'gotoUser("' + encodeURIComponentEx(event.userid) + '");haltEvent(event);\'>' + EscapeHtml(event.username) + '</a>' + guestname + ' → ' + msg;
14287
} else {
14282
- msg = EscapeHtml(event.username) + ' → ' + msg;
14288
+ msg = EscapeHtml(event.guestname) + ' → ' + msg;
14289
}
14290
+ } else if (event.guestname) {
14291
+ msg = '<span title="' + "This is a guest sharing session" + '">' + EscapeHtml(event.guestname) + '</span> → ' + msg;
14292
}
14293
if (event.etype == 'relay' || event.action == 'relaylog') icon = 'relayIcon16';
14294
x += '<tr onclick=showEventDetails(' + event.h + ',3) onmouseover=eventMouseHover(this,1) onmouseout=eventMouseHover(this,0) style=cursor:pointer><td style=width:18px><div class=' + icon + '></div></td><td class=g1> </td><td class=style10>' + printTime(time) + ' - ' + msg + '</td><td class=g2> </td></tr><tr style=height:2px></tr>';