mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-01-25 21:53:14 -05:00
Worked on meshcore.js minification.
This commit is contained in:
parent
169a198efb
commit
c029a82ae6
5017
agents/meshcore-org.js
Normal file
5017
agents/meshcore-org.js
Normal file
File diff suppressed because it is too large
Load Diff
@ -46,16 +46,12 @@ var MESHRIGHT_CHATNOTIFY = 16384;
|
||||
var MESHRIGHT_UNINSTALL = 32768;
|
||||
var MESHRIGHT_NODESKTOP = 65536;
|
||||
|
||||
try
|
||||
{
|
||||
try {
|
||||
Object.defineProperty(Array.prototype, 'findIndex', {
|
||||
value: function (func)
|
||||
{
|
||||
value: function (func) {
|
||||
var i = 0;
|
||||
for (i = 0; i < this.length; ++i)
|
||||
{
|
||||
if (func(this[i], i, this))
|
||||
{
|
||||
for (i = 0; i < this.length; ++i) {
|
||||
if (func(this[i], i, this)) {
|
||||
return (i);
|
||||
}
|
||||
}
|
||||
@ -63,8 +59,7 @@ try
|
||||
}
|
||||
});
|
||||
}
|
||||
catch (x)
|
||||
{
|
||||
catch (x) {
|
||||
}
|
||||
|
||||
if (require('MeshAgent').ARCHID == null) {
|
||||
@ -88,19 +83,15 @@ if (require('MeshAgent').ARCHID == null) {
|
||||
if (id != null) { Object.defineProperty(require('MeshAgent'), 'ARCHID', { value: id }); }
|
||||
}
|
||||
|
||||
function setDefaultCoreTranslation(obj, field, value)
|
||||
{
|
||||
function setDefaultCoreTranslation(obj, field, value) {
|
||||
if (obj[field] == null || obj[field] == '') { obj[field] = value; }
|
||||
}
|
||||
|
||||
function getCoreTranslation()
|
||||
{
|
||||
function getCoreTranslation() {
|
||||
var ret = {};
|
||||
if (global.coretranslations != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
var lang = require('util-language').current;
|
||||
if (global.coretranslations != null) {
|
||||
try {
|
||||
var lang = require('util-language').current;
|
||||
if (coretranslations[lang] == null) { lang = lang.split('-')[0]; }
|
||||
if (coretranslations[lang] == null) { lang = 'en'; }
|
||||
if (coretranslations[lang] != null) { ret = coretranslations[lang]; }
|
||||
@ -123,13 +114,10 @@ function getCoreTranslation()
|
||||
}
|
||||
var currentTranslation = getCoreTranslation();
|
||||
|
||||
function lockDesktop(uid)
|
||||
{
|
||||
switch (process.platform)
|
||||
{
|
||||
function lockDesktop(uid) {
|
||||
switch (process.platform) {
|
||||
case 'linux':
|
||||
if (uid != null)
|
||||
{
|
||||
if (uid != null) {
|
||||
var name = require('user-sessions').getUsername(uid);
|
||||
var child = require('child_process').execFile('/bin/sh', ['sh']);
|
||||
child.stdout.str = ''; child.stdout.on('data', function (chunk) { this.str += chunk.toString(); });
|
||||
@ -141,8 +129,7 @@ function lockDesktop(uid)
|
||||
child.stdin.write("}'\nexit\n");
|
||||
child.waitExit();
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
var child = require('child_process').execFile('/bin/sh', ['sh']);
|
||||
child.stdout.str = ''; child.stdout.on('data', function (chunk) { this.str += chunk.toString(); });
|
||||
child.stderr.str = ''; child.stderr.on('data', function (chunk) { this.str += chunk.toString(); });
|
||||
@ -162,28 +149,23 @@ function lockDesktop(uid)
|
||||
}
|
||||
}
|
||||
var writable = require('stream').Writable;
|
||||
function destopLockHelper_pipe(httprequest)
|
||||
{
|
||||
function destopLockHelper_pipe(httprequest) {
|
||||
if (process.platform != 'linux' && process.platform != 'freebsd') { return; }
|
||||
|
||||
if (httprequest.unlockerHelper == null && httprequest.desktop != null && httprequest.desktop.kvm != null)
|
||||
{
|
||||
if (httprequest.unlockerHelper == null && httprequest.desktop != null && httprequest.desktop.kvm != null) {
|
||||
httprequest.unlockerHelper = new writable(
|
||||
{
|
||||
'write': function (chunk, flush)
|
||||
{
|
||||
if (chunk.readUInt16BE(0) == 65)
|
||||
{
|
||||
delete this.request.autolock;
|
||||
'write': function (chunk, flush) {
|
||||
if (chunk.readUInt16BE(0) == 65) {
|
||||
delete this.request.autolock;
|
||||
}
|
||||
flush();
|
||||
return (true);
|
||||
},
|
||||
'final': function (flush) {
|
||||
flush();
|
||||
}
|
||||
flush();
|
||||
return (true);
|
||||
},
|
||||
'final': function (flush)
|
||||
{
|
||||
flush();
|
||||
}
|
||||
});
|
||||
});
|
||||
httprequest.unlockerHelper.request = httprequest;
|
||||
httprequest.desktop.kvm.pipe(httprequest.unlockerHelper);
|
||||
}
|
||||
@ -217,14 +199,11 @@ if (process.platform == 'win32' && require('user-sessions').isRoot()) {
|
||||
} catch (e) { }
|
||||
}
|
||||
|
||||
if (process.platform != 'win32')
|
||||
{
|
||||
if (process.platform != 'win32') {
|
||||
var ch = require('child_process');
|
||||
ch._execFile = ch.execFile;
|
||||
ch.execFile = function execFile(path, args, options)
|
||||
{
|
||||
if(options && options.type && options.type == ch.SpawnTypes.TERM && options.env)
|
||||
{
|
||||
ch.execFile = function execFile(path, args, options) {
|
||||
if (options && options.type && options.type == ch.SpawnTypes.TERM && options.env) {
|
||||
options.env['TERM'] = 'xterm-256color';
|
||||
}
|
||||
return (this._execFile(path, args, options));
|
||||
@ -444,7 +423,7 @@ function updateRegisteredAppsToServer() {
|
||||
if ((obj.DAIPC == null) || (obj.DAIPC._daipc == null)) return;
|
||||
var apps = {};
|
||||
for (var i in obj.DAIPC._daipc) { if (apps[obj.DAIPC._daipc[i]._registered] == null) { apps[obj.DAIPC._daipc[i]._registered] = 1; } else { apps[obj.DAIPC._daipc[i]._registered]++; } }
|
||||
try { mesh.SendCommand({ action: 'sessions', type: 'app', value: apps }); } catch (e) { }
|
||||
try { mesh.SendCommand({ action: 'sessions', type: 'app', value: apps }); } catch (ex) { }
|
||||
}
|
||||
|
||||
// Remove a registered app
|
||||
@ -455,16 +434,14 @@ function removeRegisteredApp(pipe) {
|
||||
|
||||
function diagnosticAgent_uninstall() {
|
||||
require('service-manager').manager.uninstallService('meshagentDiagnostic');
|
||||
require('task-scheduler').delete('meshagentDiagnostic/periodicStart');
|
||||
require('task-scheduler').delete('meshagentDiagnostic/periodicStart'); // TODO: Using "delete" here breaks the minifier since this is a reserved keyword
|
||||
}
|
||||
function diagnosticAgent_installCheck(install) {
|
||||
try {
|
||||
var diag = require('service-manager').manager.getService('meshagentDiagnostic');
|
||||
return (diag);
|
||||
}
|
||||
catch (e) {
|
||||
}
|
||||
if (!install) { return (null); }
|
||||
} catch (ex) { }
|
||||
if (!install) { return null; }
|
||||
|
||||
var svc = null;
|
||||
try {
|
||||
@ -479,9 +456,7 @@ function diagnosticAgent_installCheck(install) {
|
||||
});
|
||||
svc = require('service-manager').manager.getService('meshagentDiagnostic');
|
||||
}
|
||||
catch (e) {
|
||||
return (null);
|
||||
}
|
||||
catch (ex) { return null; }
|
||||
var proxyConfig = require('global-tunnel').proxyConfig;
|
||||
var cert = require('MeshAgent').GenerateAgentCertificate('CN=MeshNodeDiagnosticCertificate');
|
||||
var nodeid = require('tls').loadCertificate(cert.root).getKeyHash().toString('base64');
|
||||
@ -494,8 +469,7 @@ function diagnosticAgent_installCheck(install) {
|
||||
if (cert.tls) { ddb.Put('SelfNodeTlsCert', cert.tls.pfx); }
|
||||
if (proxyConfig) {
|
||||
ddb.Put('WebProxy', proxyConfig.host + ':' + proxyConfig.port);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
ddb.Put('ignoreProxyFile', '1');
|
||||
}
|
||||
|
||||
@ -520,7 +494,7 @@ if ((require('fs').existsSync(process.cwd() + 'batterystate.txt')) && (require('
|
||||
try {
|
||||
require('MeshAgent')._batteryFileTimer = null;
|
||||
var data = null;
|
||||
try { data = require('fs').readFileSync(process.cwd() + 'batterystate.txt').toString(); } catch (e) { }
|
||||
try { data = require('fs').readFileSync(process.cwd() + 'batterystate.txt').toString(); } catch (ex) { }
|
||||
if ((data != null) && (data.length < 10)) {
|
||||
data = data.split(',');
|
||||
if ((data.length == 2) && ((data[0] == 'ac') || (data[0] == 'dc'))) {
|
||||
@ -528,14 +502,12 @@ if ((require('fs').existsSync(process.cwd() + 'batterystate.txt')) && (require('
|
||||
if ((level >= 0) && (level <= 100)) { require('MeshAgent').SendCommand({ action: 'battery', state: data[0], level: level }); }
|
||||
}
|
||||
}
|
||||
} catch (e) { }
|
||||
} catch (ex) { }
|
||||
}, 1000);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
else {
|
||||
try {
|
||||
// Setup normal battery monitoring
|
||||
if (require('identifiers').isBatteryPowered && require('identifiers').isBatteryPowered()) {
|
||||
require('MeshAgent')._battLevelChanged = function _battLevelChanged(val) {
|
||||
@ -559,17 +531,15 @@ else
|
||||
});
|
||||
}
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
}
|
||||
catch (ex) { }
|
||||
}
|
||||
|
||||
|
||||
// MeshAgent JavaScript Core Module. This code is sent to and running on the mesh agent.
|
||||
var meshCoreObj = { action: 'coreinfo', value: (require('MeshAgent').coreHash ? ((process.versions.compileTime?process.versions.compileTime:'').split(', ')[1].replace(' ', ' ') + ', ' + crc32c(require('MeshAgent').coreHash)) : ('MeshCore v6')), caps: 14, root: require('user-sessions').isRoot() }; // Capability bitmask: 1 = Desktop, 2 = Terminal, 4 = Files, 8 = Console, 16 = JavaScript, 32 = Temporary Agent, 64 = Recovery Agent
|
||||
var meshCoreObj = { action: 'coreinfo', value: (require('MeshAgent').coreHash ? ((process.versions.compileTime ? process.versions.compileTime : '').split(', ')[1].replace(' ', ' ') + ', ' + crc32c(require('MeshAgent').coreHash)) : ('MeshCore v6')), caps: 14, root: require('user-sessions').isRoot() }; // Capability bitmask: 1 = Desktop, 2 = Terminal, 4 = Files, 8 = Console, 16 = JavaScript, 32 = Temporary Agent, 64 = Recovery Agent
|
||||
|
||||
// Get the operating system description string
|
||||
try { require('os').name().then(function (v) { meshCoreObj.osdesc = v; meshCoreObjChanged(); }); } catch (e) { }
|
||||
try { require('os').name().then(function (v) { meshCoreObj.osdesc = v; meshCoreObjChanged(); }); } catch (ex) { }
|
||||
|
||||
|
||||
// Setup logged in user monitoring (THIS IS BROKEN IN WIN7)
|
||||
@ -600,7 +570,7 @@ try {
|
||||
userSession.emit('changed');
|
||||
//userSession.on('locked', function (user) { sendConsoleText('[' + (user.Domain ? user.Domain + '\\' : '') + user.Username + '] has LOCKED the desktop'); });
|
||||
//userSession.on('unlocked', function (user) { sendConsoleText('[' + (user.Domain ? user.Domain + '\\' : '') + user.Username + '] has UNLOCKED the desktop'); });
|
||||
} catch (e) { }
|
||||
} catch (ex) { }
|
||||
|
||||
var meshServerConnectionState = 0;
|
||||
var tunnels = {};
|
||||
@ -661,7 +631,7 @@ if (mesh.hasKVM == 1) { // if the agent is compiled with KVM support
|
||||
} else if (process.platform == 'linux' || process.platform == 'freebsd') {
|
||||
require('monitor-info').on('kvmSupportDetected', function (value) { meshCoreObj.caps |= 1; meshCoreObjChanged(); });
|
||||
}
|
||||
} catch (e) { }
|
||||
} catch (ex) { }
|
||||
}
|
||||
mesh.DAIPC = obj.DAIPC;
|
||||
|
||||
@ -672,7 +642,7 @@ try {
|
||||
networkMonitor.on('change', function () { sendNetworkUpdateNagle(); });
|
||||
networkMonitor.on('add', function (addr) { sendNetworkUpdateNagle(); });
|
||||
networkMonitor.on('remove', function (addr) { sendNetworkUpdateNagle(); });
|
||||
} catch (e) { networkMonitor = null; }
|
||||
} catch (ex) { networkMonitor = null; }
|
||||
*/
|
||||
|
||||
// Fetch the SMBios Tables
|
||||
@ -680,7 +650,7 @@ var SMBiosTables = null;
|
||||
var SMBiosTablesRaw = null;
|
||||
try {
|
||||
var SMBiosModule = null;
|
||||
try { SMBiosModule = require('smbios'); } catch (e) { }
|
||||
try { SMBiosModule = require('smbios'); } catch (ex) { }
|
||||
if (SMBiosModule != null) {
|
||||
SMBiosModule.get(function (data) {
|
||||
if (data != null) {
|
||||
@ -700,14 +670,14 @@ try {
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (e) { sendConsoleText("ex1: " + e); }
|
||||
} catch (ex) { sendConsoleText("ex1: " + ex); }
|
||||
|
||||
// Try to load up the WIFI scanner
|
||||
try {
|
||||
var wifiScannerLib = require('wifi-scanner');
|
||||
wifiScanner = new wifiScannerLib();
|
||||
wifiScanner.on('accessPoint', function (data) { sendConsoleText("wifiScanner: " + data); });
|
||||
} catch (e) { wifiScannerLib = null; wifiScanner = null; }
|
||||
} catch (ex) { wifiScannerLib = null; wifiScanner = null; }
|
||||
|
||||
// Get our location (lat/long) using our public IP address
|
||||
var getIpLocationDataExInProgress = false;
|
||||
@ -730,7 +700,7 @@ function getIpLocationDataEx(func) {
|
||||
var result = JSON.parse(geoData);
|
||||
if (result.ip && result.loc) { location = result; }
|
||||
}
|
||||
} catch (e) { }
|
||||
} catch (ex) { }
|
||||
if (func) { getIpLocationDataExCounts[1]++; func(location); }
|
||||
}
|
||||
} else
|
||||
@ -739,7 +709,7 @@ function getIpLocationDataEx(func) {
|
||||
}).end();
|
||||
return true;
|
||||
}
|
||||
catch (e) { return false; }
|
||||
catch (ex) { return false; }
|
||||
}
|
||||
|
||||
// Setup script task. Allows running scripts at scheduled intervals
|
||||
@ -949,7 +919,7 @@ function sendWakeOnLanEx(hexMacList) {
|
||||
require('MeshAgent').wakesockets.sockets.push(socket);
|
||||
++ret;
|
||||
}
|
||||
catch (e) { }
|
||||
catch (ex) { }
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -963,43 +933,32 @@ function sendWakeOnLanEx(hexMacList) {
|
||||
ret = require('MeshAgent').wakesockets.sockets.length;
|
||||
}
|
||||
|
||||
return (ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
function server_promise_default(res, rej)
|
||||
{
|
||||
function server_promise_default(res, rej) {
|
||||
this.resolve = res;
|
||||
this.reject = rej;
|
||||
}
|
||||
function server_getUserImage(userid)
|
||||
{
|
||||
var promise = require('promise');
|
||||
var ret = new promise(server_promise_default);
|
||||
function server_getUserImage(userid) {
|
||||
var xpromise = require('promise');
|
||||
var ret = new xpromise(server_promise_default);
|
||||
|
||||
if (require('MeshAgent')._promises == null) { require('MeshAgent')._promises = {}; }
|
||||
require('MeshAgent')._promises[ret._hashCode()] = ret;
|
||||
require('MeshAgent').SendCommand({ action: 'getUserImage', userid: userid, promise: ret._hashCode(), default: true });
|
||||
return (ret);
|
||||
require('MeshAgent').SendCommand({ action: 'getUserImage', userid: userid, promise: ret._hashCode(), sentDefault: true });
|
||||
return ret;
|
||||
}
|
||||
require('MeshAgent')._consentTimers = {};
|
||||
function server_set_consentTimer(id)
|
||||
{
|
||||
function server_set_consentTimer(id) {
|
||||
require('MeshAgent')._consentTimers[id] = new Date();
|
||||
}
|
||||
function server_check_consentTimer(id)
|
||||
{
|
||||
if (require('MeshAgent')._consentTimers[id] != null)
|
||||
{
|
||||
if((new Date()) - require('MeshAgent')._consentTimers[id] < (60000*5))
|
||||
{
|
||||
return (true);
|
||||
}
|
||||
else
|
||||
{
|
||||
require('MeshAgent')._consentTimers[id] = null;
|
||||
}
|
||||
function server_check_consentTimer(id) {
|
||||
if (require('MeshAgent')._consentTimers[id] != null) {
|
||||
if ((new Date()) - require('MeshAgent')._consentTimers[id] < (60000 * 5)) return true;
|
||||
require('MeshAgent')._consentTimers[id] = null;
|
||||
}
|
||||
return (false);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Handle a mesh agent command
|
||||
@ -1068,8 +1027,7 @@ function handleServerCommand(data) {
|
||||
tunnel.guestname = data.guestname;
|
||||
tunnel.userid = data.userid;
|
||||
|
||||
if (server_check_consentTimer(tunnel.userid))
|
||||
{
|
||||
if (server_check_consentTimer(tunnel.userid)) {
|
||||
sendConsoleText('Deleting Consent Requirement');
|
||||
tunnel.consent = (tunnel.consent & -57);
|
||||
}
|
||||
@ -1122,7 +1080,7 @@ function handleServerCommand(data) {
|
||||
// Display a message box
|
||||
if (data.title && data.msg) {
|
||||
MeshServerLogEx(18, [data.title, data.msg], "Displaying message box, title=" + data.title + ", message=" + data.msg, data);
|
||||
try { require('message-box').create(data.title, data.msg, 120).then(function () { }).catch(function () { }); } catch (e) { }
|
||||
try { require('message-box').create(data.title, data.msg, 120).then(function () { }).catch(function () { }); } catch (ex) { }
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1171,14 +1129,14 @@ function handleServerCommand(data) {
|
||||
// Kill a process
|
||||
if (data.value) {
|
||||
MeshServerLogEx(19, [data.value], "Killing process " + data.value, data);
|
||||
try { process.kill(data.value); } catch (e) { sendConsoleText("pskill: " + JSON.stringify(e)); }
|
||||
try { process.kill(data.value); } catch (ex) { sendConsoleText("pskill: " + JSON.stringify(e)); }
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'services': {
|
||||
// Return the list of installed services
|
||||
var services = null;
|
||||
try { services = require('service-manager').manager.enumerateService(); } catch (e) { }
|
||||
try { services = require('service-manager').manager.enumerateService(); } catch (ex) { }
|
||||
if (services != null) { mesh.SendCommand({ action: 'msg', type: 'services', value: JSON.stringify(services), sessionid: data.sessionid }); }
|
||||
break;
|
||||
}
|
||||
@ -1187,7 +1145,7 @@ function handleServerCommand(data) {
|
||||
try {
|
||||
var service = require('service-manager').manager.getService(data.serviceName);
|
||||
if (service != null) { service.stop(); }
|
||||
} catch (e) { }
|
||||
} catch (ex) { }
|
||||
break;
|
||||
}
|
||||
case 'serviceStart': {
|
||||
@ -1195,7 +1153,7 @@ function handleServerCommand(data) {
|
||||
try {
|
||||
var service = require('service-manager').manager.getService(data.serviceName);
|
||||
if (service != null) { service.start(); }
|
||||
} catch (e) { }
|
||||
} catch (ex) { }
|
||||
break;
|
||||
}
|
||||
case 'serviceRestart': {
|
||||
@ -1203,7 +1161,7 @@ function handleServerCommand(data) {
|
||||
try {
|
||||
var service = require('service-manager').manager.getService(data.serviceName);
|
||||
if (service != null) { service.restart(); }
|
||||
} catch (e) { }
|
||||
} catch (ex) { }
|
||||
break;
|
||||
}
|
||||
case 'deskBackground':
|
||||
@ -1236,7 +1194,7 @@ function handleServerCommand(data) {
|
||||
if (current != '/dev/null') { require('MeshAgent')._wallpaper = current; }
|
||||
require('linux-gnome-helpers').setDesktopWallpaper(id, current != '/dev/null' ? undefined : require('MeshAgent')._wallpaper);
|
||||
}
|
||||
} catch (e) {
|
||||
} catch (ex) {
|
||||
sendConsoleText(e);
|
||||
}
|
||||
break;
|
||||
@ -1363,7 +1321,7 @@ function handleServerCommand(data) {
|
||||
// data.runAsUser: 0=Agent,1=UserOrAgent,2=UserOnly
|
||||
var options = {};
|
||||
if (data.runAsUser > 0) {
|
||||
try { options.uid = require('user-sessions').consoleUid(); } catch (e) { }
|
||||
try { options.uid = require('user-sessions').consoleUid(); } catch (ex) { }
|
||||
options.type = require('child_process').SpawnTypes.TERM;
|
||||
}
|
||||
if (data.runAsUser == 2) {
|
||||
@ -1410,7 +1368,7 @@ function handleServerCommand(data) {
|
||||
}
|
||||
|
||||
if (require('service-manager').manager.getService(agentName).isMe()) {
|
||||
try { diagnosticAgent_uninstall(); } catch (e) { }
|
||||
try { diagnosticAgent_uninstall(); } catch (ex) { }
|
||||
var js = "require('service-manager').manager.getService('" + agentName + "').stop(); require('service-manager').manager.uninstallService('" + agentName + "'); process.exit();";
|
||||
this.child = require('child_process').execFile(process.execPath, [process.platform == 'win32' ? (process.execPath.split('\\').pop()) : (process.execPath.split('/').pop()), '-b64exec', Buffer.from(js).toString('base64')], { type: 4, detached: true });
|
||||
}
|
||||
@ -1438,7 +1396,7 @@ function handleServerCommand(data) {
|
||||
if (data.title && data.msg) {
|
||||
MeshServerLogEx(26, [data.title, data.msg], "Displaying toast message, title=" + data.title + ", message=" + data.msg, data);
|
||||
data.msg = data.msg.split('\r').join('\\r').split('\n').join('\\n');
|
||||
try { require('toaster').Toast(data.title, data.msg); } catch (e) { }
|
||||
try { require('toaster').Toast(data.title, data.msg); } catch (ex) { }
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1492,7 +1450,7 @@ function handleServerCommand(data) {
|
||||
case 'ping': { mesh.SendCommand('{"action":"pong"}'); break; }
|
||||
case 'pong': { break; }
|
||||
case 'plugin': {
|
||||
try { require(data.plugin).consoleaction(data, data.rights, data.sessionid, this); } catch (e) { throw e; }
|
||||
try { require(data.plugin).consoleaction(data, data.rights, data.sessionid, this); } catch (ex) { throw ex; }
|
||||
break;
|
||||
}
|
||||
case 'coredump':
|
||||
@ -1544,8 +1502,7 @@ function handleServerCommand(data) {
|
||||
case 'getUserImage':
|
||||
if (data.pipe == true) { delete data.pipe; delete data.action; data.cmd = 'getUserImage'; broadcastToRegisteredApps(data); }
|
||||
if (data.tag == 'info') { sendConsoleText(JSON.stringify(data, null, 2)); }
|
||||
if (data.promise != null && require('MeshAgent')._promises[data.promise] != null)
|
||||
{
|
||||
if (data.promise != null && require('MeshAgent')._promises[data.promise] != null) {
|
||||
var p = require('MeshAgent')._promises[data.promise];
|
||||
delete require('MeshAgent')._promises[data.promise];
|
||||
p.resolve(data.image);
|
||||
@ -1614,7 +1571,7 @@ function downloadFile(downloadoptions) {
|
||||
function handleApfJsonControl(data) {
|
||||
if (data.action == 'console') { addAmtEvent(data.msg); } // Add console message to AMT event log
|
||||
if (data.action == 'mestate') { amt.getMeiState(15, function (state) { apftunnel.updateMeiState(state); }); } // Update the MEI state
|
||||
if (data.action == 'close') { try { apftunnel.disconnect(); } catch (e) { } apftunnel = null; } // Close the CIRA-LMS connection
|
||||
if (data.action == 'close') { try { apftunnel.disconnect(); } catch (ex) { } apftunnel = null; } // Close the CIRA-LMS connection
|
||||
if (amt.amtMei != null) {
|
||||
if (data.action == 'deactivate') { // Request CCM deactivation
|
||||
amt.amtMei.unprovision(1, function (status) { if (apftunnel) apftunnel.sendMeiDeactivationState(status); }); // 0 = Success
|
||||
@ -1683,18 +1640,18 @@ function getSystemInformation(func) {
|
||||
if (results.hardware && results.hardware.windows) {
|
||||
// Remove extra entries and things that change quickly
|
||||
var x = results.hardware.windows.osinfo;
|
||||
try { delete x.FreePhysicalMemory; } catch (e) { }
|
||||
try { delete x.FreeSpaceInPagingFiles; } catch (e) { }
|
||||
try { delete x.FreeVirtualMemory; } catch (e) { }
|
||||
try { delete x.LocalDateTime; } catch (e) { }
|
||||
try { delete x.MaxProcessMemorySize; } catch (e) { }
|
||||
try { delete x.TotalVirtualMemorySize; } catch (e) { }
|
||||
try { delete x.TotalVisibleMemorySize; } catch (e) { }
|
||||
try { delete x.FreePhysicalMemory; } catch (ex) { }
|
||||
try { delete x.FreeSpaceInPagingFiles; } catch (ex) { }
|
||||
try { delete x.FreeVirtualMemory; } catch (ex) { }
|
||||
try { delete x.LocalDateTime; } catch (ex) { }
|
||||
try { delete x.MaxProcessMemorySize; } catch (ex) { }
|
||||
try { delete x.TotalVirtualMemorySize; } catch (ex) { }
|
||||
try { delete x.TotalVisibleMemorySize; } catch (ex) { }
|
||||
try {
|
||||
if (results.hardware.windows.memory) { for (var i in results.hardware.windows.memory) { delete results.hardware.windows.memory[i].Node; } }
|
||||
if (results.hardware.windows.osinfo) { delete results.hardware.windows.osinfo.Node; }
|
||||
if (results.hardware.windows.partitions) { for (var i in results.hardware.windows.partitions) { delete results.hardware.windows.partitions[i].Node; } }
|
||||
} catch (e) { }
|
||||
} catch (ex) { }
|
||||
}
|
||||
results.hardware.agentvers = process.versions;
|
||||
var hasher = require('SHA384Stream').create();
|
||||
@ -1735,7 +1692,7 @@ function getSystemInformation(func) {
|
||||
func(results);
|
||||
}
|
||||
*/
|
||||
} catch (e) { func(null, e); }
|
||||
} catch (ex) { func(null, e); }
|
||||
}
|
||||
|
||||
// Get a formated response for a given directory path
|
||||
@ -1744,7 +1701,7 @@ function getDirectoryInfo(reqpath) {
|
||||
if (((reqpath == undefined) || (reqpath == '')) && (process.platform == 'win32')) {
|
||||
// List all the drives in the root, or the root itself
|
||||
var results = null;
|
||||
try { results = fs.readDrivesSync(); } catch (e) { } // TODO: Anyway to get drive total size and free space? Could draw a progress bar.
|
||||
try { results = fs.readDrivesSync(); } catch (ex) { } // TODO: Anyway to get drive total size and free space? Could draw a progress bar.
|
||||
if (results != null) {
|
||||
for (var i = 0; i < results.length; ++i) {
|
||||
var drive = { n: results[i].name, t: 1 };
|
||||
@ -1757,14 +1714,14 @@ function getDirectoryInfo(reqpath) {
|
||||
if (reqpath == '') { reqpath = '/'; }
|
||||
var results = null, xpath = obj.path.join(reqpath, '*');
|
||||
//if (process.platform == "win32") { xpath = xpath.split('/').join('\\'); }
|
||||
try { results = fs.readdirSync(xpath); } catch (e) { }
|
||||
try { if ((results != null) && (results.length == 0) && (fs.existsSync(reqpath) == false)) { results = null; } } catch (e) { }
|
||||
try { results = fs.readdirSync(xpath); } catch (ex) { }
|
||||
try { if ((results != null) && (results.length == 0) && (fs.existsSync(reqpath) == false)) { results = null; } } catch (ex) { }
|
||||
if (results != null) {
|
||||
for (var i = 0; i < results.length; ++i) {
|
||||
if ((results[i] != '.') && (results[i] != '..')) {
|
||||
var stat = null, p = obj.path.join(reqpath, results[i]);
|
||||
//if (process.platform == "win32") { p = p.split('/').join('\\'); }
|
||||
try { stat = fs.statSync(p); } catch (e) { } // TODO: Get file size/date
|
||||
try { stat = fs.statSync(p); } catch (ex) { } // TODO: Get file size/date
|
||||
if ((stat != null) && (stat != undefined)) {
|
||||
if (stat.isDirectory() == true) {
|
||||
response.dir.push({ n: results[i], t: 2, d: stat.mtime });
|
||||
@ -1812,7 +1769,7 @@ function onTunnelUpgrade(response, s, head) {
|
||||
if (s.httprequest.userid != null) {
|
||||
var userid = getUserIdAndGuestNameFromHttpRequest(s.httprequest);
|
||||
if (tunnelUserCount.tcp[userid] == null) { tunnelUserCount.tcp[userid] = 1; } else { tunnelUserCount.tcp[userid]++; }
|
||||
try { mesh.SendCommand({ action: 'sessions', type: 'tcp', value: tunnelUserCount.tcp }); } catch (e) { }
|
||||
try { mesh.SendCommand({ action: 'sessions', type: 'tcp', value: tunnelUserCount.tcp }); } catch (ex) { }
|
||||
broadcastSessionsToRegisteredApps();
|
||||
}
|
||||
} if (this.udpport != null) {
|
||||
@ -1830,7 +1787,7 @@ function onTunnelUpgrade(response, s, head) {
|
||||
if (s.httprequest.userid != null) {
|
||||
var userid = getUserIdAndGuestNameFromHttpRequest(s.httprequest);
|
||||
if (tunnelUserCount.udp[userid] == null) { tunnelUserCount.udp[userid] = 1; } else { tunnelUserCount.udp[userid]++; }
|
||||
try { mesh.SendCommand({ action: 'sessions', type: 'udp', value: tunnelUserCount.tcp }); } catch (e) { }
|
||||
try { mesh.SendCommand({ action: 'sessions', type: 'udp', value: tunnelUserCount.tcp }); } catch (ex) { }
|
||||
broadcastSessionsToRegisteredApps();
|
||||
}
|
||||
} else {
|
||||
@ -1896,18 +1853,17 @@ function onTunnelClosed() {
|
||||
if (this.httprequest.tcpport != null) {
|
||||
var userid = getUserIdAndGuestNameFromHttpRequest(this.httprequest);
|
||||
if (tunnelUserCount.tcp[userid] != null) { tunnelUserCount.tcp[userid]--; if (tunnelUserCount.tcp[userid] <= 0) { delete tunnelUserCount.tcp[userid]; } }
|
||||
try { mesh.SendCommand({ action: 'sessions', type: 'tcp', value: tunnelUserCount.tcp }); } catch (e) { }
|
||||
try { mesh.SendCommand({ action: 'sessions', type: 'tcp', value: tunnelUserCount.tcp }); } catch (ex) { }
|
||||
broadcastSessionsToRegisteredApps();
|
||||
} else if (this.httprequest.udpport != null) {
|
||||
var userid = getUserIdAndGuestNameFromHttpRequest(this.httprequest);
|
||||
if (tunnelUserCount.udp[userid] != null) { tunnelUserCount.udp[userid]--; if (tunnelUserCount.udp[userid] <= 0) { delete tunnelUserCount.udp[userid]; } }
|
||||
try { mesh.SendCommand({ action: 'sessions', type: 'udp', value: tunnelUserCount.udp }); } catch (e) { }
|
||||
try { mesh.SendCommand({ action: 'sessions', type: 'udp', value: tunnelUserCount.udp }); } catch (ex) { }
|
||||
broadcastSessionsToRegisteredApps();
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
try {
|
||||
// Sent tunnel statistics to the server, only send this if compression was used.
|
||||
if ((this.bytesSent_uncompressed) && (this.bytesSent_uncompressed.toString() != this.bytesSent_actual.toString())) {
|
||||
mesh.SendCommand({
|
||||
@ -1925,8 +1881,7 @@ function onTunnelClosed() {
|
||||
});
|
||||
}
|
||||
}
|
||||
catch(z)
|
||||
{
|
||||
catch (z) {
|
||||
}
|
||||
|
||||
//sendConsoleText("Tunnel #" + this.httprequest.index + " closed. Sent -> " + this.bytesSent_uncompressed + ' bytes (uncompressed), ' + this.bytesSent_actual + ' bytes (actual), ' + this.bytesSent_ratio + '% compression', this.httprequest.sessionid);
|
||||
@ -1947,9 +1902,9 @@ function onTunnelClosed() {
|
||||
|
||||
// Clean up WebRTC
|
||||
if (this.webrtc != null) {
|
||||
if (this.webrtc.rtcchannel) { try { this.webrtc.rtcchannel.close(); } catch (e) { } this.webrtc.rtcchannel.removeAllListeners('data'); this.webrtc.rtcchannel.removeAllListeners('end'); delete this.webrtc.rtcchannel; }
|
||||
if (this.webrtc.rtcchannel) { try { this.webrtc.rtcchannel.close(); } catch (ex) { } this.webrtc.rtcchannel.removeAllListeners('data'); this.webrtc.rtcchannel.removeAllListeners('end'); delete this.webrtc.rtcchannel; }
|
||||
if (this.webrtc.websocket) { delete this.webrtc.websocket; }
|
||||
try { this.webrtc.close(); } catch (e) { }
|
||||
try { this.webrtc.close(); } catch (ex) { }
|
||||
this.webrtc.removeAllListeners('connected');
|
||||
this.webrtc.removeAllListeners('disconnected');
|
||||
this.webrtc.removeAllListeners('dataChannel');
|
||||
@ -1970,11 +1925,11 @@ function onTunnelData(data) {
|
||||
if (data[0] == 0) {
|
||||
// If data starts with zero, skip the first byte. This is used to escape binary file data from JSON.
|
||||
this.httprequest.uploadFileSize += (data.length - 1);
|
||||
try { fs.writeSync(this.httprequest.uploadFile, data, 1, data.length - 1); } catch (e) { sendConsoleText('FileUpload Error'); this.write(Buffer.from(JSON.stringify({ action: 'uploaderror' }))); return; } // Write to the file, if there is a problem, error out.
|
||||
try { fs.writeSync(this.httprequest.uploadFile, data, 1, data.length - 1); } catch (ex) { sendConsoleText('FileUpload Error'); this.write(Buffer.from(JSON.stringify({ action: 'uploaderror' }))); return; } // Write to the file, if there is a problem, error out.
|
||||
} else {
|
||||
// If data does not start with zero, save as-is.
|
||||
this.httprequest.uploadFileSize += data.length;
|
||||
try { fs.writeSync(this.httprequest.uploadFile, data); } catch (e) { sendConsoleText('FileUpload Error'); this.write(Buffer.from(JSON.stringify({ action: 'uploaderror' }))); return; } // Write to the file, if there is a problem, error out.
|
||||
try { fs.writeSync(this.httprequest.uploadFile, data); } catch (ex) { sendConsoleText('FileUpload Error'); this.write(Buffer.from(JSON.stringify({ action: 'uploaderror' }))); return; } // Write to the file, if there is a problem, error out.
|
||||
}
|
||||
this.write(Buffer.from(JSON.stringify({ action: 'uploadack', reqid: this.httprequest.uploadFileid }))); // Ask for more data.
|
||||
return;
|
||||
@ -2000,8 +1955,8 @@ function onTunnelData(data) {
|
||||
//
|
||||
var stats = null;
|
||||
if ((process.platform != 'win32') && (this.httprequest.xoptions.file.startsWith('/') == false)) { this.httprequest.xoptions.file = '/' + this.httprequest.xoptions.file; }
|
||||
try { stats = require('fs').statSync(this.httprequest.xoptions.file) } catch (e) { }
|
||||
try { if (stats) { this.httprequest.downloadFile = fs.createReadStream(this.httprequest.xoptions.file, { flags: 'rbN' }); } } catch (e) { }
|
||||
try { stats = require('fs').statSync(this.httprequest.xoptions.file) } catch (ex) { }
|
||||
try { if (stats) { this.httprequest.downloadFile = fs.createReadStream(this.httprequest.xoptions.file, { flags: 'rbN' }); } } catch (ex) { }
|
||||
if (this.httprequest.downloadFile) {
|
||||
MeshServerLogEx(106, [this.httprequest.xoptions.file, stats.size], 'Download: \"' + this.httprequest.xoptions.file + '\", Size: ' + stats.size, this.httprequest);
|
||||
//sendConsoleText('BasicFileTransfer, ok, ' + this.httprequest.xoptions.file + ', ' + JSON.stringify(stats));
|
||||
@ -2050,7 +2005,7 @@ function onTunnelData(data) {
|
||||
if (this.httprequest.userid != null) {
|
||||
var userid = getUserIdAndGuestNameFromHttpRequest(this.httprequest);
|
||||
if (tunnelUserCount.terminal[userid] != null) { tunnelUserCount.terminal[userid]--; if (tunnelUserCount.terminal[userid] <= 0) { delete tunnelUserCount.terminal[userid]; } }
|
||||
try { mesh.SendCommand({ action: 'sessions', type: 'terminal', value: tunnelUserCount.terminal }); } catch (e) { }
|
||||
try { mesh.SendCommand({ action: 'sessions', type: 'terminal', value: tunnelUserCount.terminal }); } catch (ex) { }
|
||||
broadcastSessionsToRegisteredApps();
|
||||
}
|
||||
|
||||
@ -2077,49 +2032,40 @@ function onTunnelData(data) {
|
||||
var consentMessage = currentTranslation['terminalConsent'].replace('{0}', this.httprequest.realname).replace('{1}', this.httprequest.username);
|
||||
var consentTitle = 'MeshCentral';
|
||||
|
||||
if (this.httprequest.soptions != null)
|
||||
{
|
||||
if (this.httprequest.soptions != null) {
|
||||
if (this.httprequest.soptions.consentTitle != null) { consentTitle = this.httprequest.soptions.consentTitle; }
|
||||
if (this.httprequest.soptions.consentMsgTerminal != null) { consentMessage = this.httprequest.soptions.consentMsgTerminal.replace('{0}', this.httprequest.realname).replace('{1}', this.httprequest.username); }
|
||||
}
|
||||
if (process.platform == 'win32')
|
||||
{
|
||||
if (process.platform == 'win32') {
|
||||
var enhanced = false;
|
||||
try
|
||||
{
|
||||
try {
|
||||
require('win-userconsent');
|
||||
enhanced = true;
|
||||
}
|
||||
catch (z)
|
||||
{
|
||||
catch (z) {
|
||||
}
|
||||
if (enhanced)
|
||||
{
|
||||
if (enhanced) {
|
||||
var ipr = server_getUserImage(this.httprequest.userid);
|
||||
ipr.consentTitle = consentTitle;
|
||||
ipr.consentMessage = consentMessage;
|
||||
ipr.username = this.httprequest.realname;
|
||||
ipr.translations = { Allow: currentTranslation['allow'], Deny: currentTranslation['deny'], Auto: currentTranslation['autoAllowForFive'], Caption: consentMessage };
|
||||
this.httprequest.tpromise._consent = ipr.then(function (img)
|
||||
{
|
||||
this.httprequest.tpromise._consent = ipr.then(function (img) {
|
||||
this.consent = require('win-userconsent').create(this.consentTitle, this.consentMessage, this.username, { b64Image: img.split(',').pop(), timeout: 30000, translations: this.translations });
|
||||
this.__childPromise.close = this.consent.close.bind(this.consent);
|
||||
return (this.consent);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
this.httprequest.tpromise._consent = require('message-box').create(consentTitle, consentMessage, 30);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
this.httprequest.tpromise._consent = require('message-box').create(consentTitle, consentMessage, 30);
|
||||
}
|
||||
this.httprequest.tpromise._consent.retPromise = this.httprequest.tpromise;
|
||||
this.httprequest.tpromise._consent.then(
|
||||
function (always)
|
||||
{
|
||||
function (always) {
|
||||
if (always) { server_set_consentTimer(this.retPromise.httprequest.userid); }
|
||||
|
||||
// Success
|
||||
@ -2194,8 +2140,8 @@ function onTunnelData(data) {
|
||||
});
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
this.httprequest.connectionPromise._rej('Failed to start remote terminal session, ' + e.toString());
|
||||
catch (ex) {
|
||||
this.httprequest.connectionPromise._rej('Failed to start remote terminal session, ' + ex.toString());
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -2207,8 +2153,7 @@ function onTunnelData(data) {
|
||||
var env = { HISTCONTROL: 'ignoreboth' };
|
||||
if (process.env['LANG']) { env['LANG'] = process.env['LANG']; }
|
||||
if (process.env['PATH']) { env['PATH'] = process.env['PATH']; }
|
||||
if (this.httprequest.xoptions)
|
||||
{
|
||||
if (this.httprequest.xoptions) {
|
||||
if (this.httprequest.xoptions.rows) { env.LINES = ('' + this.httprequest.xoptions.rows); }
|
||||
if (this.httprequest.xoptions.cols) { env.COLUMNS = ('' + this.httprequest.xoptions.cols); }
|
||||
}
|
||||
@ -2237,8 +2182,8 @@ function onTunnelData(data) {
|
||||
this.httprequest.connectionPromise._rej('Failed to start remote terminal session, no shell found');
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
this.httprequest.connectionPromise._rej('Failed to start remote terminal session, ' + e.toString());
|
||||
catch (ex) {
|
||||
this.httprequest.connectionPromise._rej('Failed to start remote terminal session, ' + ex.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@ -2279,13 +2224,11 @@ function onTunnelData(data) {
|
||||
}
|
||||
|
||||
// Toast Notification, if required
|
||||
if (this.ws.httprequest.consent && (this.ws.httprequest.consent & 2))
|
||||
{
|
||||
if (this.ws.httprequest.consent && (this.ws.httprequest.consent & 2)) {
|
||||
// User Notifications is required
|
||||
var notifyMessage = currentTranslation['terminalNotify'].replace('{0}', this.ws.httprequest.username);
|
||||
var notifyTitle = "MeshCentral";
|
||||
if (this.ws.httprequest.soptions != null)
|
||||
{
|
||||
if (this.ws.httprequest.soptions != null) {
|
||||
if (this.ws.httprequest.soptions.notifyTitle != null) { notifyTitle = this.ws.httprequest.soptions.notifyTitle; }
|
||||
if (this.ws.httprequest.soptions.notifyMsgTerminal != null) { notifyMessage = this.ws.httprequest.soptions.notifyMsgTerminal.replace('{0}', this.ws.httprequest.realname).replace('{1}', this.ws.httprequest.username); }
|
||||
}
|
||||
@ -2447,80 +2390,66 @@ function onTunnelData(data) {
|
||||
}
|
||||
|
||||
// Perform notification if needed. Toast messages may not be supported on all platforms.
|
||||
if (this.httprequest.consent && (this.httprequest.consent & 8))
|
||||
{
|
||||
if (this.httprequest.consent && (this.httprequest.consent & 8)) {
|
||||
// User Consent Prompt is required
|
||||
// Send a console message back using the console channel, "\n" is supported.
|
||||
this.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: "Waiting for user to grant access...", msgid: 1 }));
|
||||
var consentMessage = currentTranslation['desktopConsent'].replace('{0}', this.httprequest.realname).replace('{1}', this.httprequest.username);
|
||||
var consentTitle = 'MeshCentral';
|
||||
if (this.httprequest.soptions != null)
|
||||
{
|
||||
if (this.httprequest.soptions != null) {
|
||||
if (this.httprequest.soptions.consentTitle != null) { consentTitle = this.httprequest.soptions.consentTitle; }
|
||||
if (this.httprequest.soptions.consentMsgDesktop != null) { consentMessage = this.httprequest.soptions.consentMsgDesktop.replace('{0}', this.httprequest.realname).replace('{1}', this.httprequest.username); }
|
||||
}
|
||||
var pr;
|
||||
if (process.platform == 'win32')
|
||||
{
|
||||
if (process.platform == 'win32') {
|
||||
var enhanced = false;
|
||||
try
|
||||
{
|
||||
try {
|
||||
require('win-userconsent');
|
||||
enhanced = true;
|
||||
}
|
||||
catch(z)
|
||||
{
|
||||
catch (z) {
|
||||
}
|
||||
if (enhanced)
|
||||
{
|
||||
if (enhanced) {
|
||||
var ipr = server_getUserImage(this.httprequest.userid);
|
||||
ipr.consentTitle = consentTitle;
|
||||
ipr.consentMessage = consentMessage;
|
||||
ipr.tsid = tsid;
|
||||
ipr.username = this.httprequest.realname;
|
||||
ipr.translation = { Allow: currentTranslation['allow'], Deny: currentTranslation['deny'], Auto: currentTranslation['autoAllowForFive'], Caption: consentMessage };
|
||||
pr = ipr.then(function (img)
|
||||
{
|
||||
pr = ipr.then(function (img) {
|
||||
this.consent = require('win-userconsent').create(this.consentTitle, this.consentMessage, this.username, { b64Image: img.split(',').pop(), uid: this.tsid, timeout: 30000, translations: this.translation });
|
||||
this.__childPromise.close = this.consent.close.bind(this.consent);
|
||||
return (this.consent);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
pr = require('message-box').create(consentTitle, consentMessage, 30, null, tsid);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
pr = require('message-box').create(consentTitle, consentMessage, 30, null, tsid);
|
||||
}
|
||||
pr.ws = this;
|
||||
this.pause();
|
||||
this._consentpromise = pr;
|
||||
this.prependOnceListener('end', function ()
|
||||
{
|
||||
if (this._consentpromise && this._consentpromise.close)
|
||||
{
|
||||
this.prependOnceListener('end', function () {
|
||||
if (this._consentpromise && this._consentpromise.close) {
|
||||
this._consentpromise.close();
|
||||
}
|
||||
});
|
||||
pr.then(
|
||||
function (always)
|
||||
{
|
||||
function (always) {
|
||||
if (always) { server_set_consentTimer(this.ws.httprequest.userid); }
|
||||
|
||||
|
||||
// Success
|
||||
this.ws._consentpromise = null;
|
||||
MeshServerLogEx(30, null, "Starting remote desktop after local user accepted (" + this.ws.httprequest.remoteaddr + ")", this.ws.httprequest);
|
||||
this.ws.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: null, msgid: 0 }));
|
||||
if (this.ws.httprequest.consent && (this.ws.httprequest.consent & 1))
|
||||
{
|
||||
if (this.ws.httprequest.consent && (this.ws.httprequest.consent & 1)) {
|
||||
// User Notifications is required
|
||||
var notifyMessage = currentTranslation['desktopNotify'].replace('{0}', this.ws.httprequest.realname);
|
||||
var notifyTitle = "MeshCentral";
|
||||
if (this.ws.httprequest.soptions != null)
|
||||
{
|
||||
if (this.ws.httprequest.soptions != null) {
|
||||
if (this.ws.httprequest.soptions.notifyTitle != null) { notifyTitle = this.ws.httprequest.soptions.notifyTitle; }
|
||||
if (this.ws.httprequest.soptions.notifyMsgDesktop != null) { notifyMessage = this.ws.httprequest.soptions.notifyMsgDesktop.replace('{0}', this.ws.httprequest.realname).replace('{1}', this.ws.httprequest.username); }
|
||||
}
|
||||
@ -2553,8 +2482,7 @@ function onTunnelData(data) {
|
||||
}
|
||||
}
|
||||
this.ws.httprequest.desktop.kvm.pipe(this.ws, { dataTypeSkip: 1 });
|
||||
if (this.ws.httprequest.autolock)
|
||||
{
|
||||
if (this.ws.httprequest.autolock) {
|
||||
destopLockHelper_pipe(this.ws.httprequest);
|
||||
}
|
||||
this.ws.resume();
|
||||
@ -2605,8 +2533,7 @@ function onTunnelData(data) {
|
||||
}
|
||||
}
|
||||
this.httprequest.desktop.kvm.pipe(this, { dataTypeSkip: 1 });
|
||||
if (this.httprequest.autolock)
|
||||
{
|
||||
if (this.httprequest.autolock) {
|
||||
destopLockHelper_pipe(this.httprequest);
|
||||
}
|
||||
}
|
||||
@ -2650,52 +2577,43 @@ function onTunnelData(data) {
|
||||
};
|
||||
|
||||
// Perform notification if needed. Toast messages may not be supported on all platforms.
|
||||
if (this.httprequest.consent && (this.httprequest.consent & 32))
|
||||
{
|
||||
if (this.httprequest.consent && (this.httprequest.consent & 32)) {
|
||||
// User Consent Prompt is required
|
||||
// Send a console message back using the console channel, "\n" is supported.
|
||||
this.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: "Waiting for user to grant access...", msgid: 1 }));
|
||||
var consentMessage = currentTranslation['fileConsent'].replace('{0}', this.httprequest.realname).replace('{1}', this.httprequest.username);
|
||||
var consentTitle = 'MeshCentral';
|
||||
|
||||
if (this.httprequest.soptions != null)
|
||||
{
|
||||
if (this.httprequest.soptions != null) {
|
||||
if (this.httprequest.soptions.consentTitle != null) { consentTitle = this.httprequest.soptions.consentTitle; }
|
||||
if (this.httprequest.soptions.consentMsgFiles != null) { consentMessage = this.httprequest.soptions.consentMsgFiles.replace('{0}', this.httprequest.realname).replace('{1}', this.httprequest.username); }
|
||||
}
|
||||
var pr;
|
||||
if (process.platform == 'win32')
|
||||
{
|
||||
if (process.platform == 'win32') {
|
||||
var enhanced = false;
|
||||
try
|
||||
{
|
||||
try {
|
||||
require('win-userconsent');
|
||||
enhanced = true;
|
||||
}
|
||||
catch (z)
|
||||
{
|
||||
catch (z) {
|
||||
}
|
||||
if (enhanced)
|
||||
{
|
||||
if (enhanced) {
|
||||
var ipr = server_getUserImage(this.httprequest.userid);
|
||||
ipr.consentTitle = consentTitle;
|
||||
ipr.consentMessage = consentMessage;
|
||||
ipr.username = this.httprequest.realname;
|
||||
ipr.translations = { Allow: currentTranslation['allow'], Deny: currentTranslation['deny'], Auto: currentTranslation['autoAllowForFive'], Caption: consentMessage };
|
||||
pr = ipr.then(function (img)
|
||||
{
|
||||
pr = ipr.then(function (img) {
|
||||
this.consent = require('win-userconsent').create(this.consentTitle, this.consentMessage, this.username, { b64Image: img.split(',').pop(), timeout: 30000, translations: this.translations });
|
||||
this.__childPromise.close = this.consent.close.bind(this.consent);
|
||||
return (this.consent);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
pr = require('message-box').create(consentTitle, consentMessage, 30, null);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
pr = require('message-box').create(consentTitle, consentMessage, 30, null);
|
||||
}
|
||||
pr.ws = this;
|
||||
@ -2703,8 +2621,7 @@ function onTunnelData(data) {
|
||||
this._consentpromise = pr;
|
||||
this.prependOnceListener('end', function () { if (this._consentpromise && this._consentpromise.close) { this._consentpromise.close(); } });
|
||||
pr.then(
|
||||
function (always)
|
||||
{
|
||||
function (always) {
|
||||
if (always) { server_set_consentTimer(this.ws.httprequest.userid); }
|
||||
|
||||
// Success
|
||||
@ -2713,10 +2630,9 @@ function onTunnelData(data) {
|
||||
this.ws.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: null }));
|
||||
if (this.ws.httprequest.consent && (this.ws.httprequest.consent & 4)) {
|
||||
// User Notifications is required
|
||||
var notifyMessage = currentTranslation['fileNotify'].replace('{0}', this.ws.httprequest.realname);
|
||||
var notifyMessage = currentTranslation['fileNotify'].replace('{0}', this.ws.httprequest.realname);
|
||||
var notifyTitle = "MeshCentral";
|
||||
if (this.ws.httprequest.soptions != null)
|
||||
{
|
||||
if (this.ws.httprequest.soptions != null) {
|
||||
if (this.ws.httprequest.soptions.notifyTitle != null) { notifyTitle = this.ws.httprequest.soptions.notifyTitle; }
|
||||
if (this.ws.httprequest.soptions.notifyMsgFiles != null) { notifyMessage = this.ws.httprequest.soptions.notifyMsgFiles.replace('{0}', this.ws.httprequest.realname).replace('{1}', this.ws.httprequest.username); }
|
||||
}
|
||||
@ -2731,17 +2647,14 @@ function onTunnelData(data) {
|
||||
this.ws.end(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: e.toString(), msgid: 2 }));
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
// User Consent Prompt is not required
|
||||
if (this.httprequest.consent && (this.httprequest.consent & 4))
|
||||
{
|
||||
if (this.httprequest.consent && (this.httprequest.consent & 4)) {
|
||||
// User Notifications is required
|
||||
MeshServerLogEx(42, null, "Started remote files with toast notification (" + this.httprequest.remoteaddr + ")", this.httprequest);
|
||||
var notifyMessage = currentTranslation['fileNotify'].replace('{0}', this.ws.httprequest.realname);
|
||||
var notifyTitle = "MeshCentral";
|
||||
if (this.httprequest.soptions != null)
|
||||
{
|
||||
if (this.httprequest.soptions != null) {
|
||||
if (this.httprequest.soptions.notifyTitle != null) { notifyTitle = this.httprequest.soptions.notifyTitle; }
|
||||
if (this.httprequest.soptions.notifyMsgFiles != null) { notifyMessage = this.httprequest.soptions.notifyMsgFiles.replace('{0}', this.httprequest.realname).replace('{1}', this.httprequest.username); }
|
||||
}
|
||||
@ -3083,16 +2996,13 @@ function onTunnelControlData(data, ws) {
|
||||
}
|
||||
case 'autolock': {
|
||||
// Set the session to auto lock on disconnect
|
||||
if (obj.value === true)
|
||||
{
|
||||
if (obj.value === true) {
|
||||
ws.httprequest.autolock = true;
|
||||
if (ws.httprequest.unlockerHelper == null)
|
||||
{
|
||||
if (ws.httprequest.unlockerHelper == null) {
|
||||
destopLockHelper_pipe(ws.httprequest);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
delete ws.httprequest.autolock;
|
||||
}
|
||||
break;
|
||||
@ -3107,11 +3017,9 @@ function onTunnelControlData(data, ws) {
|
||||
if ((obj != null) && (typeof obj.consent == 'number')) { ws.httprequest.consent |= obj.consent; }
|
||||
|
||||
// Set autolock
|
||||
if ((obj != null) && (obj.autolock === true))
|
||||
{
|
||||
if ((obj != null) && (obj.autolock === true)) {
|
||||
ws.httprequest.autolock = true;
|
||||
if (ws.httprequest.unlockerHelper == null)
|
||||
{
|
||||
if (ws.httprequest.unlockerHelper == null) {
|
||||
destopLockHelper_pipe(ws.httprequest);
|
||||
}
|
||||
}
|
||||
|
@ -1675,7 +1675,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
|
||||
command.image = images[0].image;
|
||||
} else {
|
||||
// Send back the default image if required
|
||||
if (command.default) {
|
||||
if ((command.default) || (command.sentDefault)) {
|
||||
try { command.image = 'data:image/png;base64,' + Buffer.from(parent.fs.readFileSync(parent.parent.path.join(__dirname, 'public', 'images', 'user-128.png')), 'binary').toString('base64'); } catch (ex) { }
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user