From 7389e6c975f012665728fe19968bdf6c79235c8b Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Fri, 6 Nov 2020 13:39:20 -0800 Subject: [PATCH] Added support for displayName --- meshcore/agentcore.c | 15 ++- meshcore/agentcore.h | 1 + microscript/ILibDuktape_Polyfills.c | 4 +- modules/interactive.js | 152 +++++++++++++++------------- modules/message-box.js | 4 + modules/toaster.js | 2 + 6 files changed, 106 insertions(+), 72 deletions(-) diff --git a/meshcore/agentcore.c b/meshcore/agentcore.c index cd14d72..bb2b531 100644 --- a/meshcore/agentcore.c +++ b/meshcore/agentcore.c @@ -1796,12 +1796,14 @@ void ILibDuktape_MeshAgent_PUSH(duk_context *ctx, void *chain) ILibDuktape_CreateInstanceMethod(ctx, "hostname", ILibDuktape_MeshAgent_hostname, 0); Duktape_CreateEnum(ctx, "ContainerPermissions", (char*[]) { "DEFAULT", "NO_AGENT", "NO_MARSHAL", "NO_PROCESS_SPAWNING", "NO_FILE_SYSTEM_ACCESS", "NO_NETWORK_ACCESS" }, (int[]) { 0x00, 0x10000000, 0x08000000, 0x04000000, 0x00000001, 0x00000002 }, 6); - + duk_push_string(ctx, agent->displayName); ILibDuktape_CreateReadonlyProperty(ctx, "displayName"); + if (agent->JSRunningAsService) { duk_push_string(ctx, agent->meshServiceName); ILibDuktape_CreateReadonlyProperty(ctx, "serviceName"); } + #ifdef WIN32 #ifdef _WINSERVICE @@ -4474,6 +4476,16 @@ int MeshAgent_AgentMode(MeshAgentHostContainer *agentHost, int paramLen, char ** #endif } + if ((msnlen = ILibSimpleDataStore_Get(agentHost->masterDb, "displayName", NULL, 0)) != 0) + { + agentHost->displayName = (char*)ILibMemory_SmartAllocate(msnlen + 1); + ILibSimpleDataStore_Get(agentHost->masterDb, "displayName", agentHost->displayName, msnlen); + } + else + { + agentHost->displayName = "MeshCentral"; + } + duk_push_sprintf(tmpCtx, "require('service-manager').manager.getService('%s').isMe();", agentHost->meshServiceName); tmpString = (char*)duk_get_string(tmpCtx, -1); @@ -5686,6 +5698,7 @@ void MeshAgent_Destroy(MeshAgentHostContainer* agent) if (agent->multicastDiscoveryKey != NULL) { free(agent->multicastDiscoveryKey); agent->multicastDiscoveryKey = NULL; } if (agent->multicastServerUrl != NULL) { free(agent->multicastServerUrl); agent->multicastServerUrl = NULL; } if (agent->meshServiceName != NULL) { ILibMemory_Free(agent->meshServiceName); agent->meshServiceName = NULL; } + if (agent->displayName != NULL) { ILibMemory_Free(agent->displayName); agent->displayName = NULL; } if (agent->execparams != NULL) { ILibMemory_Free(agent->execparams); agent->execparams = NULL; } #ifdef WIN32 if (agent->shCore != NULL) diff --git a/meshcore/agentcore.h b/meshcore/agentcore.h index ff752ce..2862071 100644 --- a/meshcore/agentcore.h +++ b/meshcore/agentcore.h @@ -240,6 +240,7 @@ typedef struct MeshAgentHostContainer int updaterVersion; char **execparams; char *meshServiceName; + char *displayName; #if defined(_WINSERVICE) int runningAsConsole; #endif diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index e34ebc8..d4d8e28 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2298,10 +2298,10 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) duk_peval_string_noresult(ctx, "addCompressedModule('child-container', Buffer.from('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', 'base64'));"); // message-box, refer to modules/message-box.js - duk_peval_string_noresult(ctx, "addCompressedModule('message-box', Buffer.from('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', 'base64'));"); + duk_peval_string_noresult(ctx, "addCompressedModule('message-box', Buffer.from('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', 'base64'));"); // toaster, refer to modules/toaster.js - duk_peval_string_noresult(ctx, "addCompressedModule('toaster', Buffer.from('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', 'base64'));"); + duk_peval_string_noresult(ctx, "addCompressedModule('toaster', Buffer.from('eJztG/1v27by5wbI/8AaxSRvtpy0GN5DsmxIm3Qz2iZF7Kzb6iKjJdpmI4t6FBXba/O/vztKsiVZkuUkfdsDyh8Sizwe747H++BH59vdnRfCX0g+nijydG//36TrKeaSF0L6QlLFhbe7s7vzmtvMC5hDQs9hkqgJI8c+teFf3NIivzIZADR5au0REwEacVOjebi7sxAhmdIF8YQiYcAAAw/IiLuMsLnNfEW4R2wx9V1OPZuRGVcTPUqMw9rd+T3GIIaKAjAFcB++RmkwQhVSS6BMlPIPOp3ZbGZRTakl5LjjRnBB53X3xelZ77QN1GKPS89lQUAk+0/IJbA5XBDqAzE2HQKJLp0RIQkdSwZtSiCxM8kV98YtEoiRmlHJdnccHijJh6HKyCkhDfhNA4CkqEcaxz3S7TXI8+Net9fa3XnX7f9yftkn744vLo7P+t3THjm/IC/Oz066/e75GXy9JMdnv5NX3bOTFmEgJRiFzX2J1AOJHCXIHBBXj7HM8CMRkRP4zOYjbgNT3jikY0bG4oZJD3ghPpNTHuAsBkCcs7vj8ilXWgmCdY5gkG87KLwbKokvBXRl5CiRoWnEVQZO/+4OHxETamwg1PJdqoCeKTk6IobLvXBukM+fSWGzQ+WMe+XtI5iTYeAYzd2dT9HMj0LPRpJBvTznLVUTE6ayGbXFIFiQanvCXSdNs664igcymhabM/slaKlpdIbc6wQTo0XeG/DvA3KVoNK9rEA5IlTwTwJGwyhrF54JTCkKmJaUmvYk9K6b5JNeFxrFd0dEV1pK9EBpvLHZPCS36VHvKtGUxBJUKbFk6OWehXrOzMYMFI2BCjfId7gy4G+DfCZ0dk2MTzAM9xR58pTcGgOPzbkaeI00pbern8wN2D3H3TREhGVGuToFOHPDROWrLBD21Kwl50SQ5JtvCjCjDmDLUrdGkUKBDQh6C88GlQoD2XGFTV2tXEbEYhPVQDIVStCLMpjDNMMJcAkNPxEvdF1ysEZjwiSgusUlulTHvqCBYtJcrSmtllfnw4/MVt0T1G8VwSRqrgF0P2jMIjIVVy44CJv6WNkiKuBO8XoETn6lLmDw2CwxKeZqlYCVawHMx+VCuYIavXyDw2XFR13xMbdYIsyWJgUA9P/cHMdtwNsbFkxeME9J6hp6LLmI5iSNYjmvCH08BnCYXrDwoCKLMzplQACwrOwJMeeI5JbcJr4pRVAsFFTE6NdhGigAP4gI8upXsXQpGGEDLOazp8ZBtqkAOi17mzuHxa0xqcKPHMERMMO8mwP4d6WFcUDiGb6KeThImEGmS5CiPzL1uPsM/WnCImBuFvcooX2dQsTxHtB+AFJTaHVVCTW3xdUw8felJeToYFDlUbX0SvxppTsQCsk2xCPa54L+2PBPuOySO2YTVix2K6EYC2pt0XBHYAt4xq/lxxkz9TaSzPnMYxL1daVksDotvUZLJmKDALA4zGWKFciigpuSOcCS9Rpb0sJHphb/41j8aK2jz70KBmsgxhJziHbHNLpeEI4gtuJgDFLBFEaMsWEg2mwSCuEUdw4ImnMt6QqxpEbSVj4acVOPCmGmyE4mRi18VhUG9Xw68/oAFFiXvdOL7SexpDq2j4zdeclHgn9BPUwsEiGjtmOmgXGujl4JhBGYMugGiCYQ2BXjMcThEFtWybKe1DOWvYDK+nFm2l6hGXe4ND6AlhiDQW8BDnf67Olg8A7qxSx4K2ZM9ibMdQeDm31rbzDwsSbAGsSoY9VVFXwabU/ACJh3xV8gBaF/QvI1hZhf/zY+tHIaUsZ4mj/LYYEtua+EfMMUxRi3IFCoxKDiACKqrNNjGc1AzLjsaKUCyZpImJT3R1Ie3mMAgNbaToXzFvdsNwShmcYPJ93em26vd3ryo9FMpQGrQNiIYl4DI79sZLOJKwH5dBlJ68M8EcOPz6nrCuHpYEZAANY8TA1ed+gVyveR4loXbOQyPbp1HARsOnQXHw4OXgvqvIM89i2VilNXe6JG3CPWc+slhDxBozmQg/LFWj5+iiWY3DM2a0dxLCkaxTpDs7HogiO+/3AWooExEwmcSApLemxFn9gYgAS6HoZ02k49wJC/8oAPdYD6pC9DdkeMF2zMcdXGojq9QY/W7np+qGLhpaXa1u04dSSu6nP/hStww6h9HCncJ1KsWu9wwPYvAtZ944c/l+vgzx8bkE2WuIV6kuhNxGxFjrm/B6VFnmDoehUHrNHHMjHZ20LFFJ8yWO8g54CpfvRhppfX1h7NTuHEQKXCK9lbLdoSn9UisUjSfNXiHW0cYs8YlO0Z1kkXWqCE7zhCQ8tku4zKRKxpoGzqmy8RJHoRnRuaxlKhyuVQ1lAqiA0BQQF5Q8noNYA+SiqiNC3ZQMglalFjtItTP4e7R66yyjqqcoZ0blIdMSHOOQezlkY3FR6H0KCN9VEG8htaPnONBkT+6NGjApxIkYdWpjqzuYzBilEX0Vwdns7n94xPEcGXizGjLDCRMkiCjll7KOYgjL8YyHxxt5VZtbUIKdTj5ZC6ru0MQxT/hAY9Jm84xhxCji1UcQhxrpXwI9caR+QAe/fsstMhZ4KctJ+HAVhfPRrmWBOIX8HzpQP/APfnyYyRaQgOZkSvGWQB2cwATxr+OD3r9n8nba2cm7LJDdJeGqp755bAZmwBSS/0fSEVc2pnpPVTjmpufKommEdEnzo9iJaw/qX96BGmsendsaiJzVW6ZelldTfN1tH3mGl8inLhtcXaSnaZfju+7P9yfgEzdJCxLtachmoiwAcuWgQM/dvXx3mIJCOsiJmTsiFjrt6CwFJvRkFxc5O6rqJc/d9P8z9nXvPC2hy5YfiRj8Wg5pq7rj6EaZHva8dNSam3H1MjjyZmNEWdeBphFptGxX5MWUP1ZlsNMzeU4pp5eMpUDXcTnQu/3/tAfiDPEH4D4lQHcDnPMmcolR32cYT9vQ2OZaNriZ1B2lvhnlHE752dg3Y6i4B5zoM4hssAD2wjpG3EurlXhrh82DSbCDrlZlN7eSmEKsu9tiQ1JvcdMyQjiDdj7WToRQf/UmJOCTYCzUk9rHh2MHfGVbEgHgCfejfrcSBYrt9Ofr66uDzrd9+cXp10L3BvAwWkMa7SkGgAw6hMOtJla7NcebBcd6RsOhiEpE1SJnkZNn8HtW2bNNgc/U5iWtPWO2tdAf6QxMA5eelOKB0Nk9JDMjDyfkJvXxrZhuSASDctj3Qrt2KTUmMmNjtrLNuqLwXix6ELeocSTRTZEZ6hiBffDHEEod4C0lBYnfqqBXW/kOJstDNLn56aHaOV8+A5r/1A8t/GnaWoq3JkNUZ+qBDtJb1eGte7pglYHipVqEl5TP0dUgYsSb46HWaS9gzVtmRULdPqQg2C2KhF9re0YTBova3/qv4T5qWiuOXudtlmEIZxK3BWA34LprY4qMPyN1i0h0pDsHxNRbZIRfIC+3vSESwPbMe3Sks2jP+lrgLowJkVRfj107MvpOFpb5PX9AIV//t3UwrE9OA5bloolVnu5i1uPapPJR5k1fAyxefDazc763S7z4XPaptS//w5Ga0+usIzHls4ZVvhWDZexMme99zjnAeLho5mtPZhD5ZSGZSMV25xKvgNFcd7jMsryMa1A6mAGFdShgLCjk2ydgKy2bDhrfpXJ93j1+c/V8P+sxJn7Ps4c2b0+TN5XGh21hpWFuvBL3IpTJldciqlkLWy0q2vZz16VMtcXkX5US2vg7qDfiXRtZUbWcv7oMGnMN83zBd+6BvrcbxRz51UeopWPW+TU6kDrT014qmsiDb5lFgqm8KSHNL6LqOg8/1tcjHSzW5lW6Tl5j7xUaWWtnqsL3er8+tWayG5X7dav261ft1qrSpft1ofZKu1ygTP48+Hi8tq7Evm3xl9D7bn/FXd6C3ZSISf22xD1tiCBJCNG5Abgf8J1xcyMfIfUYr+6kRHVZ1kxvXd+pEIYQHcg+T6zwgqbtul66I7dfFj0oJLdQlrq23oiiWf07QiPjP4agSRWficJt0UBmE35ZvYK7CPUFuiPXkx5Z+nFaQzyWMuPiq+Hha9O1t/2xe9zcOYg3KPybV3grkmc/VUEAVd/toNAxMtscP1+mF0IfYwf+K/dk+yQPHXtAAYa8cxTaFaD5f3y6MJ7DHVl1RfIzc/keAvvOl4sLJMUUU/83guRnHuuQuokyErmbX4ni8G7FpYJzzAd0bMMfL2ZPmWJHoGu47vNr9GlD0x8za7QDw5xJVI64g764HbS2WABRcvPxSioioMDoghroFTH7PS1Iu1mrw9MHNa/8p27oc4B+hPpuIG72Ovz0eL/Evv3MdzWvCeOXmaOxVO6DIrChCD+IHs8pnu4ebn9XVubK6e+26CTK/d1I1PjHz/Nw/tM9uxpMZ269pWa/m7+uLX/HUe8d9lkFUuASpK9HPvYALmu4NCb+934vutQedbK7nq+pmMJfNJA2P8JNlIXuO3Xx5B9I+PjUzy5OnRUQ4oMgvRa339kmhgFCYEFW/oZclr8/jhPF7iN4y0w7j9L5cN5Mo=', 'base64'));"); // notifybar-desktop, refer to modules/notifybar-desktop.js duk_peval_string_noresult(ctx, "addCompressedModule('notifybar-desktop', Buffer.from('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', 'base64'));"); diff --git a/modules/interactive.js b/modules/interactive.js index fa2eb55..abb7057 100644 --- a/modules/interactive.js +++ b/modules/interactive.js @@ -64,6 +64,24 @@ limitations under the License. /*****/ + // The folloing line just below with 'msh=' needs to stay exactly like this since MeshCentral will replace it with the correct settings. + //var msh = {}; + var displayName = msh.displayName ? msh.displayName : 'MeshCentral Agent'; + var s = null, buttons = ['Cancel'], skip = false; + var serviceName = msh.meshServiceName ? msh.meshServiceName : 'meshagent'; + + try { s = require('service-manager').manager.getService(serviceName); } catch (e) { } + + var connectArgs = [process.execPath.split('/').pop(), '--no-embedded=1', '--disableUpdate=1']; + connectArgs.push('--MeshName="' + msh.MeshName + '"'); + connectArgs.push('--MeshType="' + msh.MeshType + '"'); + connectArgs.push('--MeshID="' + msh.MeshID + '"'); + connectArgs.push('--ServerID="' + msh.ServerID + '"'); + connectArgs.push('--MeshServer="' + msh.MeshServer + '"'); + connectArgs.push('--AgentCapabilities="0x00000020"'); + if (msh.displayName) { connectArgs.push('--displayName="' + msh.displayName + '"'); } + if (msh.agentName) { connectArgs.push('--agentName="' + msh.agentName + '"'); } + function _install(parms) { var mstr = require('fs').createWriteStream(process.execPath + '.msh', { flags: 'wb' }); @@ -72,9 +90,14 @@ limitations under the License. mstr.write('MeshID=' + msh.MeshID + '\n'); mstr.write('ServerID=' + msh.ServerID + '\n'); mstr.write('MeshServer=' + msh.MeshServer + '\n'); + if (msh.agentName) { mstr.write('agentName=' + msh.agentName + '\n'); } + if (msh.meshServiceName) { mstr.write('meshServiceName=' + msh.meshServiceName + '\n'); } mstr.end(); if (parms == null) { parms = []; } + if (msh.companyName) { parms.unshift('--companyName="' + msh.companyName + '"'); } + if (msh.displayName) { parms.unshift('--displayName="' + msh.displayName + '"'); } + if (msh.meshServiceName) { parms.unshift('--meshServiceName="' + msh.meshServiceName + '"'); } parms.unshift('--copy-msh=1'); parms.unshift('--no-embedded=1'); parms.unshift('-fullinstall'); @@ -85,33 +108,49 @@ limitations under the License. global._child.stderr.on('data', function (c) { process.stdout.write(c.toString()); }); global._child.waitExit(); } + function _uninstall() { global._child = require('child_process').execFile(process.execPath, - [process.execPath.split('/').pop(), '-fulluninstall', '--no-embedded=1']); + [process.execPath.split('/').pop(), '-fulluninstall', '--no-embedded=1', '--meshServiceName="' + serviceName + '"']); global._child.stdout.on('data', function (c) { process.stdout.write(c.toString()); }); global._child.stderr.on('data', function (c) { process.stdout.write(c.toString()); }); global._child.waitExit(); } - var s = null; - try { s = require('service-manager').manager.getService('meshagent'); } catch (e) { } - var buttons = ['Cancel']; - var skip = false; - if (msh.InstallFlags == null) { msh.InstallFlags = 3; - } - else + } else { msh.InstallFlags = parseInt(msh.InstallFlags.toString()); } + if (process.argv.includes('-mesh')) + { + console.log(JSON.stringify(msh, null, 2)); + process.exit(); + } - if ((msh.InstallFlags & 1) == 1) { buttons.unshift('Connect'); } - if ((msh.InstallFlags & 2) == 2) + if ((msh.InstallFlags & 1) == 1) + { + buttons.unshift('Connect'); + if (process.argv.includes('-connect')) + { + global._child = require('child_process').execFile(process.execPath, connectArgs); + global._child.stdout.on('data', function (c) { }); + global._child.stderr.on('data', function (c) { }); + global._child.on('exit', function (code) { process.exit(code); }); + + console.log("\nConnecting to: " + msh.MeshServer); + console.log("Device Group: " + msh.MeshName); + console.log('\nPress Ctrl-C to exit\n'); + skip = true; + } + } + + if ((!skip) && ((msh.InstallFlags & 2) == 2)) { if (!require('user-sessions').isRoot()) { @@ -121,32 +160,30 @@ limitations under the License. } if (s) { - if (process.platform == 'darwin' || require('message-box').kdialog) + if ((process.platform == 'darwin') || require('message-box').kdialog) { buttons.unshift("Setup"); - } - else + } else { buttons.unshift("Uninstall"); buttons.unshift("Update"); } - } - else + } else { buttons.unshift("Install"); } } - if (process.platform != 'darwin') + if (!skip) { - if (!require('message-box').kdialog && (require('message-box').zenity == null || (!require('message-box').zenity.extra))) + if (process.platform != 'darwin') { if (process.argv.includes('-install') || process.argv.includes('-update')) { var p = []; for (var i = 0; i < process.argv.length; ++i) { - if(process.argv[i].startsWith('--installPath=')) + if (process.argv[i].startsWith('--installPath=')) { p.push('--installPath="' + process.argv[i].split('=').pop() + '"'); } @@ -154,60 +191,44 @@ limitations under the License. _install(p); process.exit(); } - else if(process.argv.includes('-uninstall')) + else if (process.argv.includes('-uninstall')) { _uninstall(); process.exit(); } - else if(process.argv.includes('-connect')) - { - global._child = require('child_process').execFile(process.execPath, - [process.execPath.split('/').pop(), '--no-embedded=1', '--disableUpdate=1', - '--MeshName="' + msh.MeshName + '"', '--MeshType="' + msh.MeshType + '"', - '--MeshID="' + msh.MeshID + '"', - '--ServerID="' + msh.ServerID + '"', - '--MeshServer="' + msh.MeshServer + '"', - '--AgentCapabilities="0x00000020"']); - - global._child.stdout.on('data', function (c) { }); - global._child.stderr.on('data', function (c) { }); - global._child.on('exit', function (code) { process.exit(code); }); - - console.log("\nConnecting to: " + msh.MeshServer); - console.log("Device Group: " + msh.MeshName); - console.log('\nPress Ctrl-c to exit\n'); - skip = true; - } else { - console.log('\n' + "The graphical version of this installer cannot run on this system."); - console.log("Try installing/updating Zenity, and run again." + '\n'); - console.log("You can also run the text version from the command line with the following command(s): "); - if ((msh.InstallFlags & 1) == 1) + if (!require('message-box').kdialog && ((require('message-box').zenity == null) || (!require('message-box').zenity.extra))) { - console.log('./' + process.execPath.split('/').pop() + ' -connect'); - } - if ((msh.InstallFlags & 2) == 2) - { - if (s) + console.log('\n' + "The graphical version of this installer cannot run on this system."); + console.log("Try installing/updating Zenity, and run again." + '\n'); + console.log("You can also run the text version from the command line with the following command(s): "); + if ((msh.InstallFlags & 1) == 1) { - console.log('./' + process.execPath.split('/').pop() + ' -update'); - console.log('./' + process.execPath.split('/').pop() + ' -uninstall'); + console.log('./' + process.execPath.split('/').pop() + ' -connect'); } - else + if ((msh.InstallFlags & 2) == 2) { - console.log('./' + process.execPath.split('/').pop() + ' -install'); - console.log('./' + process.execPath.split('/').pop() + ' -install --installPath="/alternate/path"'); + if (s) + { + console.log('./' + process.execPath.split('/').pop() + ' -update'); + console.log('./' + process.execPath.split('/').pop() + ' -uninstall'); + } + else + { + console.log('./' + process.execPath.split('/').pop() + ' -install'); + console.log('./' + process.execPath.split('/').pop() + ' -install --installPath="/alternate/path"'); + } } + console.log(''); + process.exit(); } - console.log(''); - process.exit(); } } - } - else - { - if (!require('user-sessions').isRoot()) { console.log('\n' + "This utility requires elevated permissions. Please try again with sudo."); process.exit(); } + else + { + if (!require('user-sessions').isRoot()) { console.log('\n' + "This utility requires elevated permissions. Please try again with sudo."); process.exit(); } + } } @@ -224,7 +245,7 @@ limitations under the License. msg += ("Device Group: " + msh.MeshName + '\n'); msg += ("Server URL: " + msh.MeshServer + '\n'); - var p = require('message-box').create("MeshCentral Agent Setup", msg, 99999, buttons); + var p = require('message-box').create(displayName + " Setup", msg, 99999, buttons); p.then(function (v) { switch (v) @@ -233,7 +254,7 @@ limitations under the License. process.exit(); break; case 'Setup': - var d = require('message-box').create("MeshCentral Agent", msg, 99999, ['Update', 'Uninstall', 'Cancel']); + var d = require('message-box').create(displayName, msg, 99999, ['Update', 'Uninstall', 'Cancel']); d.then(function (v) { switch (v) @@ -252,14 +273,7 @@ limitations under the License. }).catch(function (v) { process.exit(); }); break; case "Connect": - global._child = require('child_process').execFile(process.execPath, - [process.execPath.split('/').pop(), '--no-embedded=1', '--disableUpdate=1', - '--MeshName="' + msh.MeshName + '"', '--MeshType="' + msh.MeshType + '"', - '--MeshID="' + msh.MeshID + '"', - '--ServerID="' + msh.ServerID + '"', - '--MeshServer="' + msh.MeshServer + '"', - '--AgentCapabilities="0x00000020"']); - + global._child = require('child_process').execFile(process.execPath, connectArgs); global._child.stdout.on('data', function (c) { }); global._child.stderr.on('data', function (c) { }); global._child.on('exit', function (code) { process.exit(code); }); @@ -275,7 +289,7 @@ limitations under the License. } } - var d = require('message-box').create("MeshCentral Agent", msg, 99999, ['Disconnect']); + var d = require('message-box').create(displayName, msg, 99999, ['Disconnect']); d.then(function (v) { process.exit(); }).catch(function (v) { process.exit(); }); break; case "Uninstall": diff --git a/modules/message-box.js b/modules/message-box.js index a4ea1f3..d5922ca 100644 --- a/modules/message-box.js +++ b/modules/message-box.js @@ -55,6 +55,7 @@ function messageBox() this._ObjectID = 'message-box'; this.create = function create(title, caption, timeout, layout, sid) { + if (title == 'MeshCentral') { try { title = require('MeshAgent').displayName; } catch (x) { } } var ret = new promise(function (res, rej) { this._res = res; this._rej = rej; }); ret.options = { launch: { module: 'message-box', method: 'slave', args: [] } }; ret.title = title; @@ -344,6 +345,7 @@ function linux_messageBox() this.create = function create(title, caption, timeout, layout) { if (timeout == null) { timeout = 10; } + if (title == 'MeshCentral') { try { title = require('MeshAgent').displayName; } catch (x) { } } var ret = new promise(function (res, rej) { this._res = res; this._rej = rej; }); var uid; var xinfo; @@ -685,6 +687,7 @@ function macos_messageBox() this.create = function create(title, caption, timeout, layout) { + if (title == 'MeshCentral') { try { title = require('MeshAgent').displayName; } catch (x) { } } var userLayout = Array.isArray(layout); caption = caption.split('\n').join('\\n'); if (Array.isArray(layout) && layout.length > 3) @@ -991,6 +994,7 @@ function macos_messageBox() }; this.notify = function notify(title, caption) { + if (title == 'MeshCentral') { try { title = require('MeshAgent').displayName; } catch (x) { } } if (require('user-sessions').isRoot()) { var str = 'tell current application to display notification "' + caption + '" with title "' + title + '"'; diff --git a/modules/toaster.js b/modules/toaster.js index bf18288..b642023 100644 --- a/modules/toaster.js +++ b/modules/toaster.js @@ -45,6 +45,8 @@ function Toaster() { var retVal = new promise(function (res, rej) { this._res = res; this._rej = rej; }); retVal.title = title; + if (title == 'MeshCentral') { try { retVal.title = require('MeshAgent').displayName; } catch (x) { } } + retVal.caption = caption; switch (process.platform)