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 }