Added support for TSID selection on Windows

Bryan Roe committed Dec 6, 2019 at 15:40 UTC 9e9ee7c58fde43fd525cd5e4f4f618b27a04bba3
1 file changed +38 -4
agents/meshcore.js
+38 -4
@@ -1242,7 +1242,7 @@ function createMeshCore(agent) {
1242 }
1243
1244 // Remote desktop using native pipes
1245 - this.httprequest.desktop = { state: 0, kvm: mesh.getRemoteDesktopStream(), tunnel: this };
1245 + this.httprequest.desktop = { state: 0, kvm: mesh.getRemoteDesktopStream(require('MeshAgent')._tsid == null ? undefined : require('MeshAgent')._tsid), tunnel: this };
1246 this.httprequest.desktop.kvm.parent = this.httprequest.desktop;
1247 this.desktop = this.httprequest.desktop;
1248
@@ -1286,7 +1286,7 @@ function createMeshCore(agent) {
1286 this.httprequest.desktop.kvm.connectionBar.removeAllListeners('close');
1287 this.httprequest.desktop.kvm.connectionBar.close();
1288
1289 - this.httprequest.desktop.kvm.connectionBar = require('notifybar-desktop')('Sharing desktop with: ' + this.httprequest.desktop.kvm.users.sort().join(', '));
1289 + this.httprequest.desktop.kvm.connectionBar = require('notifybar-desktop')('Sharing desktop with: ' + this.httprequest.desktop.kvm.users.sort().join(', '), require('MeshAgent')._tsid);
1290 this.httprequest.desktop.kvm.connectionBar.httprequest = this.httprequest;
1291 this.httprequest.desktop.kvm.connectionBar.on('close', function ()
1292 {
@@ -1351,7 +1351,7 @@ function createMeshCore(agent) {
1351 }
1352 try
1353 {
1354 - this.ws.httprequest.desktop.kvm.connectionBar = require('notifybar-desktop')('Sharing desktop with: ' + this.ws.httprequest.desktop.kvm.users.sort().join(', '));
1354 + this.ws.httprequest.desktop.kvm.connectionBar = require('notifybar-desktop')('Sharing desktop with: ' + this.ws.httprequest.desktop.kvm.users.sort().join(', '), require('MeshAgent')._tsid);
1355 MeshServerLog('Remote Desktop Connection Bar Activated/Updated (' + this.ws.httprequest.remoteaddr + ')', this.ws.httprequest);
1356 }
1357 catch(xx)
@@ -1405,7 +1405,7 @@ function createMeshCore(agent) {
1405 }
1406 try
1407 {
1408 - this.httprequest.desktop.kvm.connectionBar = require('notifybar-desktop')('Sharing desktop with: ' + this.httprequest.desktop.kvm.users.sort().join(', '));
1408 + this.httprequest.desktop.kvm.connectionBar = require('notifybar-desktop')('Sharing desktop with: ' + this.httprequest.desktop.kvm.users.sort().join(', '), require('MeshAgent')._tsid);
1409 MeshServerLog('Remote Desktop Connection Bar Activated/Updated (' + this.httprequest.remoteaddr + ')', this.httprequest);
1410 }
1411 catch(xx)
@@ -1866,6 +1866,40 @@ function createMeshCore(agent) {
1866 response = 'Available commands: \r\n' + fin + '.';
1867 break;
1868 }
1869 + case 'tsid':
1870 + if (process.platform == 'win32')
1871 + {
1872 + if (args['_'].length != 1)
1873 + {
1874 + response = 'TSID: ' + (require('MeshAgent')._tsid == null ? 'console' : require('MeshAgent')._tsid);
1875 + }
1876 + else
1877 + {
1878 + var i = parseInt(args['_'][0]);
1879 + require('MeshAgent')._tsid = (isNaN(i) ? null : i);
1880 + response = 'TSID set to: ' + (require('MeshAgent')._tsid == null ? 'console' : require('MeshAgent')._tsid);
1881 + }
1882 + }
1883 + break;
1884 + case 'activeusers':
1885 + if (process.platform == 'win32')
1886 + {
1887 + var p = require('user-sessions').enumerateUsers();
1888 + p.sessionid = sessionid;
1889 + p.then(function (u)
1890 + {
1891 + var v = [];
1892 + for(var i in u)
1893 + {
1894 + if(u[i].State == 'Active' || u[i].State == 'Connected')
1895 + {
1896 + v.push({ tsid: i, type: u[i].StationName, user: u[i].Username });
1897 + }
1898 + }
1899 + sendConsoleText(JSON.stringify(v, null, 1), this.sessionid);
1900 + });
1901 + }
1902 + break;
1903 case 'wallpaper':
1904 if (process.platform != 'win32' && !(process.platform == 'linux' && require('linux-gnome-helpers').available))
1905 {