Updated connection bar logic, to log an event if it fails
Bryan Roe committed
Oct 25, 2019 at 10:33 UTC
a31e3040a2f3f83594fb2ab23cdd8687256d8138
1 file changed
+76
-20
agents/meshcore.js
+76
-20
@@ -1201,7 +1201,7 @@ function createMeshCore(agent) {
1201
{
1202
for(var i in this.httprequest.desktop.kvm.users)
1203
{
1204
- if(this.httprequest.desktop.kvm.users[i] == this.httprequest.username)
1204
+ if (this.httprequest.desktop.kvm.users[i] == this.httprequest.username && this.httprequest.desktop.kvm.connectionBar)
1205
{
1206
this.httprequest.desktop.kvm.users.splice(i, 1);
1207
this.httprequest.desktop.kvm.connectionBar.removeAllListeners('close');
@@ -1265,23 +1265,36 @@ function createMeshCore(agent) {
1265
if (this.ws.httprequest.consent && (this.ws.httprequest.consent & 0x40))
1266
{
1267
// Connection Bar is required
1268
- MeshServerLog('Remote Desktop Connection Bar Activated/Updated (' + this.ws.httprequest.remoteaddr + ')', this.ws.httprequest);
1268
if (this.ws.httprequest.desktop.kvm.connectionBar)
1269
{
1270
this.ws.httprequest.desktop.kvm.connectionBar.removeAllListeners('close');
1271
this.ws.httprequest.desktop.kvm.connectionBar.close();
1272
}
1274
- this.ws.httprequest.desktop.kvm.connectionBar = require('notifybar-desktop')('Sharing desktop with: ' + this.ws.httprequest.desktop.kvm.users.sort().join(', '));
1275
- this.ws.httprequest.desktop.kvm.connectionBar.httprequest = this.ws.httprequest;
1276
- this.ws.httprequest.desktop.kvm.connectionBar.on('close', function ()
1273
+ try
1274
{
1278
- MeshServerLog('Remote Desktop Connection forcefully closed by local user (' + this.httprequest.remoteaddr + ')', this.httprequest);
1279
- for (var i in this.httprequest.desktop.kvm._pipedStreams)
1275
+ this.ws.httprequest.desktop.kvm.connectionBar = require('notifybar-desktop')('Sharing desktop with: ' + this.ws.httprequest.desktop.kvm.users.sort().join(', '));
1276
+ MeshServerLog('Remote Desktop Connection Bar Activated/Updated (' + this.ws.httprequest.remoteaddr + ')', this.ws.httprequest);
1277
+ }
1278
+ catch(xx)
1279
+ {
1280
+ if(process.platform != 'darwin')
1281
{
1281
- this.httprequest.desktop.kvm._pipedStreams[i].end();
1282
+ MeshServerLog('Remote Desktop Connection Bar Failed or Not Supported (' + this.ws.httprequest.remoteaddr + ')', this.ws.httprequest);
1283
}
1283
- this.httprequest.desktop.kvm.end();
1284
- });
1284
+ }
1285
+ if (this.ws.httprequest.desktop.kvm.connectionBar)
1286
+ {
1287
+ this.ws.httprequest.desktop.kvm.connectionBar.httprequest = this.ws.httprequest;
1288
+ this.ws.httprequest.desktop.kvm.connectionBar.on('close', function ()
1289
+ {
1290
+ MeshServerLog('Remote Desktop Connection forcefully closed by local user (' + this.httprequest.remoteaddr + ')', this.httprequest);
1291
+ for (var i in this.httprequest.desktop.kvm._pipedStreams)
1292
+ {
1293
+ this.httprequest.desktop.kvm._pipedStreams[i].end();
1294
+ }
1295
+ this.httprequest.desktop.kvm.end();
1296
+ });
1297
+ }
1298
}
1299
this.ws.httprequest.desktop.kvm.pipe(this.ws, { dataTypeSkip: 1 });
1300
this.ws.resume();
@@ -1306,23 +1319,33 @@ function createMeshCore(agent) {
1319
if (this.httprequest.consent && (this.httprequest.consent & 0x40))
1320
{
1321
// Connection Bar is required
1309
- MeshServerLog('Remote Desktop Connection Bar Activated/Updated (' + this.httprequest.remoteaddr + ')', this.httprequest);
1322
if(this.httprequest.desktop.kvm.connectionBar)
1323
{
1324
this.httprequest.desktop.kvm.connectionBar.removeAllListeners('close');
1325
this.httprequest.desktop.kvm.connectionBar.close();
1326
}
1315
- this.httprequest.desktop.kvm.connectionBar = require('notifybar-desktop')('Sharing desktop with: ' + this.httprequest.desktop.kvm.users.sort().join(', '));
1316
- this.httprequest.desktop.kvm.connectionBar.httprequest = this.httprequest;
1317
- this.httprequest.desktop.kvm.connectionBar.on('close', function ()
1327
+ try
1328
{
1319
- MeshServerLog('Remote Desktop Connection forcefully closed by local user (' + this.httprequest.remoteaddr + ')', this.httprequest);
1320
- for (var i in this.httprequest.desktop.kvm._pipedStreams)
1329
+ this.httprequest.desktop.kvm.connectionBar = require('notifybar-desktop')('Sharing desktop with: ' + this.httprequest.desktop.kvm.users.sort().join(', '));
1330
+ MeshServerLog('Remote Desktop Connection Bar Activated/Updated (' + this.httprequest.remoteaddr + ')', this.httprequest);
1331
+ }
1332
+ catch(xx)
1333
+ {
1334
+ MeshServerLog('Remote Desktop Connection Bar Failed or not Supported (' + this.httprequest.remoteaddr + ')', this.httprequest);
1335
+ }
1336
+ if (this.httprequest.desktop.kvm.connectionBar)
1337
+ {
1338
+ this.httprequest.desktop.kvm.connectionBar.httprequest = this.httprequest;
1339
+ this.httprequest.desktop.kvm.connectionBar.on('close', function ()
1340
{
1322
- this.httprequest.desktop.kvm._pipedStreams[i].end();
1323
- }
1324
- this.httprequest.desktop.kvm.end();
1325
- });
1341
+ MeshServerLog('Remote Desktop Connection forcefully closed by local user (' + this.httprequest.remoteaddr + ')', this.httprequest);
1342
+ for (var i in this.httprequest.desktop.kvm._pipedStreams)
1343
+ {
1344
+ this.httprequest.desktop.kvm._pipedStreams[i].end();
1345
+ }
1346
+ this.httprequest.desktop.kvm.end();
1347
+ });
1348
+ }
1349
}
1350
this.httprequest.desktop.kvm.pipe(this, { dataTypeSkip: 1 });
1351
}
@@ -1764,6 +1787,39 @@ function createMeshCore(agent) {
1787
response = 'Available commands: \r\n' + fin + '.';
1788
break;
1789
}
1790
+ case 'safemode':
1791
+ if (process.platform != 'win32')
1792
+ {
1793
+ response = 'safemode only supported on Windows Platforms'
1794
+ }
1795
+ else
1796
+ {
1797
+ if (args['_'].length != 1)
1798
+ {
1799
+ response = 'Proper usage: safemode (ON|OFF|STATUS)'; // Display usage
1800
+ }
1801
+ else
1802
+ {
1803
+ switch(args['_'][0].toUpperCase())
1804
+ {
1805
+ default:
1806
+ response = 'Proper usage: safemode (ON|OFF|STATUS)'; // Display usage
1807
+ break;
1808
+ case 'ON':
1809
+ require('win-bcd').setKey('safeboot', 'Network');
1810
+ require('win-bcd').enableSafeModeService('Mesh Agent');
1811
+ break;
1812
+ case 'OFF':
1813
+ require('win-bcd').deleteKey('safeboot');
1814
+ break;
1815
+ case 'STATUS':
1816
+ var nextboot = require('win-bcd').getKey('safeboot');
1817
+ response = 'Current: ' + require('win-bcd').bootMode + ' , NextBoot: ' + (nextboot ? nextboot : 'NORMAL');
1818
+ break;
1819
+ }
1820
+ }
1821
+ }
1822
+ break;
1823
/*
1824
case 'border':
1825
{