1. Updated wallpaper and toast to work across different TSIDs on Windows 2. Updated osinfo on Windows to show which terminal version is supported
1. Updated wallpaper and toast to work across different TSIDs on Windows 2. Updated osinfo on Windows to show which terminal version is supported
Bryan Roe committed
Dec 10, 2019 at 10:24 UTC
c09de69482bd90e53ee40d7b2849e5a396f104a8
1 file changed
+44
-9
agents/meshcore.js
+44
-9
@@ -696,18 +696,30 @@ function createMeshCore(agent) {
696
} catch (e) { }
697
break;
698
}
699
- case 'deskBackground': {
699
+ case 'deskBackground':
700
+ {
701
// Toggle desktop background
702
try {
702
- if (process.platform == 'win32') {
703
+ if (process.platform == 'win32')
704
+ {
705
+ var stype = require('user-sessions').getProcessOwnerName(process.pid).tsid == 0 ? 1 : 0;
706
+ var sid = undefined;
707
+ if (stype == 1)
708
+ {
709
+ if(require('MeshAgent')._tsid != null)
710
+ {
711
+ stype = 5;
712
+ sid = require('MeshAgent')._tsid;
713
+ }
714
+ }
715
var id = require('user-sessions').getProcessOwnerName(process.pid).tsid == 0 ? 1 : 0;
704
- var child = require('child_process').execFile(process.execPath, [process.execPath.split('\\').pop(), '-b64exec', 'dmFyIFNQSV9HRVRERVNLV0FMTFBBUEVSID0gMHgwMDczOwp2YXIgU1BJX1NFVERFU0tXQUxMUEFQRVIgPSAweDAwMTQ7CnZhciBHTSA9IHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpOwp2YXIgdXNlcjMyID0gR00uQ3JlYXRlTmF0aXZlUHJveHkoJ3VzZXIzMi5kbGwnKTsKdXNlcjMyLkNyZWF0ZU1ldGhvZCgnU3lzdGVtUGFyYW1ldGVyc0luZm9BJyk7CgppZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCA9PSAzKQp7CiAgICB2YXIgdiA9IEdNLkNyZWF0ZVZhcmlhYmxlKDEwMjQpOwogICAgdXNlcjMyLlN5c3RlbVBhcmFtZXRlcnNJbmZvQShTUElfR0VUREVTS1dBTExQQVBFUiwgdi5fc2l6ZSwgdiwgMCk7CiAgICBjb25zb2xlLmxvZyh2LlN0cmluZyk7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQplbHNlCnsKICAgIHZhciBuYiA9IEdNLkNyZWF0ZVZhcmlhYmxlKHByb2Nlc3MuYXJndlszXSk7CiAgICB1c2VyMzIuU3lzdGVtUGFyYW1ldGVyc0luZm9BKFNQSV9TRVRERVNLV0FMTFBBUEVSLCBuYi5fc2l6ZSwgbmIsIDApOwogICAgcHJvY2Vzcy5leGl0KCk7Cn0='], { type: id });
716
+ var child = require('child_process').execFile(process.execPath, [process.execPath.split('\\').pop(), '-b64exec', 'dmFyIFNQSV9HRVRERVNLV0FMTFBBUEVSID0gMHgwMDczOwp2YXIgU1BJX1NFVERFU0tXQUxMUEFQRVIgPSAweDAwMTQ7CnZhciBHTSA9IHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpOwp2YXIgdXNlcjMyID0gR00uQ3JlYXRlTmF0aXZlUHJveHkoJ3VzZXIzMi5kbGwnKTsKdXNlcjMyLkNyZWF0ZU1ldGhvZCgnU3lzdGVtUGFyYW1ldGVyc0luZm9BJyk7CgppZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCA9PSAzKQp7CiAgICB2YXIgdiA9IEdNLkNyZWF0ZVZhcmlhYmxlKDEwMjQpOwogICAgdXNlcjMyLlN5c3RlbVBhcmFtZXRlcnNJbmZvQShTUElfR0VUREVTS1dBTExQQVBFUiwgdi5fc2l6ZSwgdiwgMCk7CiAgICBjb25zb2xlLmxvZyh2LlN0cmluZyk7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQplbHNlCnsKICAgIHZhciBuYiA9IEdNLkNyZWF0ZVZhcmlhYmxlKHByb2Nlc3MuYXJndlszXSk7CiAgICB1c2VyMzIuU3lzdGVtUGFyYW1ldGVyc0luZm9BKFNQSV9TRVRERVNLV0FMTFBBUEVSLCBuYi5fc2l6ZSwgbmIsIDApOwogICAgcHJvY2Vzcy5leGl0KCk7Cn0='], { type: stype, uid: sid });
717
child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
718
child.stderr.on('data', function () { });
719
child.waitExit();
720
var current = child.stdout.str.trim();
721
if (current != '') { require('MeshAgent')._wallpaper = current; }
710
- child = require('child_process').execFile(process.execPath, [process.execPath.split('\\').pop(), '-b64exec', 'dmFyIFNQSV9HRVRERVNLV0FMTFBBUEVSID0gMHgwMDczOwp2YXIgU1BJX1NFVERFU0tXQUxMUEFQRVIgPSAweDAwMTQ7CnZhciBHTSA9IHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpOwp2YXIgdXNlcjMyID0gR00uQ3JlYXRlTmF0aXZlUHJveHkoJ3VzZXIzMi5kbGwnKTsKdXNlcjMyLkNyZWF0ZU1ldGhvZCgnU3lzdGVtUGFyYW1ldGVyc0luZm9BJyk7CgppZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCA9PSAzKQp7CiAgICB2YXIgdiA9IEdNLkNyZWF0ZVZhcmlhYmxlKDEwMjQpOwogICAgdXNlcjMyLlN5c3RlbVBhcmFtZXRlcnNJbmZvQShTUElfR0VUREVTS1dBTExQQVBFUiwgdi5fc2l6ZSwgdiwgMCk7CiAgICBjb25zb2xlLmxvZyh2LlN0cmluZyk7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQplbHNlCnsKICAgIHZhciBuYiA9IEdNLkNyZWF0ZVZhcmlhYmxlKHByb2Nlc3MuYXJndlszXSk7CiAgICB1c2VyMzIuU3lzdGVtUGFyYW1ldGVyc0luZm9BKFNQSV9TRVRERVNLV0FMTFBBUEVSLCBuYi5fc2l6ZSwgbmIsIDApOwogICAgcHJvY2Vzcy5leGl0KCk7Cn0=', current != '' ? '""' : require('MeshAgent')._wallpaper], { type: id });
722
+ child = require('child_process').execFile(process.execPath, [process.execPath.split('\\').pop(), '-b64exec', 'dmFyIFNQSV9HRVRERVNLV0FMTFBBUEVSID0gMHgwMDczOwp2YXIgU1BJX1NFVERFU0tXQUxMUEFQRVIgPSAweDAwMTQ7CnZhciBHTSA9IHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpOwp2YXIgdXNlcjMyID0gR00uQ3JlYXRlTmF0aXZlUHJveHkoJ3VzZXIzMi5kbGwnKTsKdXNlcjMyLkNyZWF0ZU1ldGhvZCgnU3lzdGVtUGFyYW1ldGVyc0luZm9BJyk7CgppZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCA9PSAzKQp7CiAgICB2YXIgdiA9IEdNLkNyZWF0ZVZhcmlhYmxlKDEwMjQpOwogICAgdXNlcjMyLlN5c3RlbVBhcmFtZXRlcnNJbmZvQShTUElfR0VUREVTS1dBTExQQVBFUiwgdi5fc2l6ZSwgdiwgMCk7CiAgICBjb25zb2xlLmxvZyh2LlN0cmluZyk7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQplbHNlCnsKICAgIHZhciBuYiA9IEdNLkNyZWF0ZVZhcmlhYmxlKHByb2Nlc3MuYXJndlszXSk7CiAgICB1c2VyMzIuU3lzdGVtUGFyYW1ldGVyc0luZm9BKFNQSV9TRVRERVNLV0FMTFBBUEVSLCBuYi5fc2l6ZSwgbmIsIDApOwogICAgcHJvY2Vzcy5leGl0KCk7Cn0=', current != '' ? '""' : require('MeshAgent')._wallpaper], { type: stype, uid: sid });
723
child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
724
child.stderr.on('data', function () { });
725
child.waitExit();
@@ -717,7 +729,10 @@ function createMeshCore(agent) {
729
if (current != '/dev/null') { require('MeshAgent')._wallpaper = current; }
730
require('linux-gnome-helpers').setDesktopWallpaper(id, current != '/dev/null' ? undefined : require('MeshAgent')._wallpaper);
731
}
720
- } catch (e) { }
732
+ } catch (e)
733
+ {
734
+ sendConsoleText(e);
735
+ }
736
break;
737
}
738
case 'openUrl': {
@@ -1880,6 +1895,10 @@ function createMeshCore(agent) {
1895
response = 'TSID set to: ' + (require('MeshAgent')._tsid == null ? 'console' : require('MeshAgent')._tsid);
1896
}
1897
}
1898
+ else
1899
+ {
1900
+ response = 'TSID command only supported on Windows';
1901
+ }
1902
break;
1903
case 'activeusers':
1904
if (process.platform == 'win32')
@@ -1899,6 +1918,10 @@ function createMeshCore(agent) {
1918
sendConsoleText(JSON.stringify(v, null, 1), this.sessionid);
1919
});
1920
}
1921
+ else
1922
+ {
1923
+ response = 'activeusers command only supported on Windows';
1924
+ }
1925
break;
1926
case 'wallpaper':
1927
if (process.platform != 'win32' && !(process.platform == 'linux' && require('linux-gnome-helpers').available))
@@ -2106,8 +2129,16 @@ function createMeshCore(agent) {
2129
break;
2130
}
2131
case 'toast': {
2109
- if (args['_'].length < 1) { response = 'Proper usage: toast "message"'; } else {
2110
- require('toaster').Toast('MeshCentral', args['_'][0]).then(sendConsoleText, sendConsoleText);
2132
+ if (args['_'].length < 1) { response = 'Proper usage: toast "message"'; } else
2133
+ {
2134
+ if (require('MeshAgent')._tsid == null)
2135
+ {
2136
+ require('toaster').Toast('MeshCentral', args['_'][0]).then(sendConsoleText, sendConsoleText);
2137
+ }
2138
+ else
2139
+ {
2140
+ require('toaster').Toast('MeshCentral', args['_'][0], require('MeshAgent')._tsid).then(sendConsoleText, sendConsoleText);
2141
+ }
2142
}
2143
break;
2144
}
@@ -2243,10 +2274,14 @@ function createMeshCore(agent) {
2274
case 'osinfo': { // Return the operating system information
2275
var i = 1;
2276
if (args['_'].length > 0) { i = parseInt(args['_'][0]); if (i > 8) { i = 8; } response = 'Calling ' + i + ' times.'; }
2246
- for (var j = 0; j < i; j++) {
2277
+ for (var j = 0; j < i; j++)
2278
+ {
2279
var pr = require('os').name();
2280
pr.sessionid = sessionid;
2249
- pr.then(function (v) { sendConsoleText("OS: " + v, this.sessionid); });
2281
+ pr.then(function (v)
2282
+ {
2283
+ sendConsoleText("OS: " + v + (process.platform=='win32'?(require('win-virtual-terminal').supported?' [ConPTY: YES]':' [ConPTY: NO]'):''), this.sessionid);
2284
+ });
2285
}
2286
break;
2287
}