From ce58d71328724493faa6d3f0ff4aa3446ca00d97 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Tue, 28 Apr 2020 12:15:36 -0700 Subject: [PATCH] updated user consent for file access, so if request is cancelled, consent request is cancelled too, if supported. --- agents/meshcore.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/agents/meshcore.js b/agents/meshcore.js index d56ee192..941d6512 100644 --- a/agents/meshcore.js +++ b/agents/meshcore.js @@ -1589,10 +1589,13 @@ function createMeshCore(agent) { var pr = require('message-box').create('MeshCentral', this.httprequest.username + " requesting remote file access. Grant access?", 30); pr.ws = this; this.pause(); - + this._consentpromise = pr; + this.prependOnceListener('end', function () { if (this._consentpromise && this._consentpromise.close) { this._consentpromise.close(); } }); pr.then( - function () { + function () + { // Success + this.ws._consentpromise = null; MeshServerLog("Starting remote files after local user accepted (" + this.ws.httprequest.remoteaddr + ")", this.ws.httprequest); this.ws.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: null })); if (this.ws.httprequest.consent && (this.ws.httprequest.consent & 4)) { @@ -1601,8 +1604,10 @@ function createMeshCore(agent) { } this.ws.resume(); }, - function (e) { + function (e) + { // User Consent Denied/Failed + this.ws._consentpromise = null; MeshServerLog("Failed to start remote files after local user rejected (" + this.ws.httprequest.remoteaddr + ")", this.ws.httprequest); this.ws.end(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: e.toString() })); });