From 2da43718470d45c45065c33048cde1870036e0bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20M=C3=A9tais?= Date: Sun, 14 Mar 2021 01:35:26 +0000 Subject: [PATCH] The screenshot is now saved in the system /tmp folder --- lib/screenshotHandler.js | 43 +++++++------------------ lib/server/controllers/apiController.js | 3 -- server_config/settings-prod.json | 10 +++--- server_config/settings.json | 10 +++--- 4 files changed, 24 insertions(+), 42 deletions(-) diff --git a/lib/screenshotHandler.js b/lib/screenshotHandler.js index 3632236..529821f 100644 --- a/lib/screenshotHandler.js +++ b/lib/screenshotHandler.js @@ -7,21 +7,16 @@ var path = require('path'); var screenshotHandler = function() { - var tmpFolderPath = 'tmp'; - var tmpFolderFullPath = path.join(__dirname, '..', tmpFolderPath); - var tmpFileName = 'temp-screenshot.png'; - var tmpFileFullPath = path.join(tmpFolderFullPath, tmpFileName); - this.findAndOptimizeScreenshot = function(width) { var that = this; debug('Starting screenshot transformation'); - return this.openImage(tmpFileFullPath) + return this.openImage(this.getTmpFileRelativePath()) .then(function(image) { - that.deleteTmpFile(tmpFileFullPath); + that.deleteTmpFile(that.getTmpFileRelativePath()); return that.resizeImage(image, width); }) @@ -97,7 +92,7 @@ var screenshotHandler = function() { this.deleteTmpFile = function(tmpFilePath) { var deferred = Q.defer(); - fs.unlink(tmpFilePath, function (err) { + fs.unlink(this.getTmpFileRelativePath(), function (err) { if (err) { debug('Screenshot temporary file not found, could not be deleted. But it is not a problem.'); } else { @@ -110,31 +105,17 @@ var screenshotHandler = function() { return deferred.promise; }; - // Create a /tmp folder on the project's root directory - this.createTmpScreenshotFolder = function() { - var deferred = Q.defer(); - - // Create the folder if it doesn't exist - fs.exists(tmpFolderFullPath, function(exists) { - if (exists) { - deferred.resolve(); - } else { - debug('Creating the tmp image folder', tmpFolderFullPath); - fs.mkdir(tmpFolderFullPath, function(err) { - if (err) { - deferred.reject(err); - } else { - deferred.resolve(); - } - }); - } - }); - - return deferred.promise; - }; this.getTmpFileRelativePath = function() { - return tmpFolderPath + '/' + tmpFileName; + + // Chrome saves a temporary file on the disk, which is then removed. + // Its default folder is /tmp, but it can be changed in server_config/settings.json + var serverSettings = require('../server_config/settings.json'); + var tmpFolderPath = serverSettings.screenshotTempPath || '/tmp'; + var tmpFileName = 'temp-chrome-screenshot.png'; + var tmpFileFullPath = path.join(tmpFolderPath, tmpFileName); + + return tmpFileFullPath; }; }; diff --git a/lib/server/controllers/apiController.js b/lib/server/controllers/apiController.js index 090e6ec..02afeb9 100644 --- a/lib/server/controllers/apiController.js +++ b/lib/server/controllers/apiController.js @@ -51,9 +51,6 @@ var ApiController = function(app) { } }; - // Create the tmp folder if it doesn't exist - ScreenshotHandler.createTmpScreenshotFolder(run.runId); - // Add test to the testQueue debug('Adding test %s to the queue', run.runId); var queuePromise = queue.push(run.runId); diff --git a/server_config/settings-prod.json b/server_config/settings-prod.json index 1390bbb..cd5c700 100644 --- a/server_config/settings-prod.json +++ b/server_config/settings-prod.json @@ -1,16 +1,18 @@ { "serverPort": 80, + "baseUrl": "/", + "googleAnalyticsId": "", + "screenshotWidth": { "phone": 360, "tablet": 420, "desktop": 600, "desktop-hd": 600 }, - "baseUrl": "/", - "authorizedKeys": { - - }, + "screenshotTempPath": "/tmp/", + + "authorizedKeys": {}, "maxAnonymousRunsPerDay": 1000, "maxAnonymousCallsPerDay": 100000, "blockedUrls": [], diff --git a/server_config/settings.json b/server_config/settings.json index becee77..a70269f 100644 --- a/server_config/settings.json +++ b/server_config/settings.json @@ -1,16 +1,18 @@ { "serverPort": 8383, + "baseUrl": "/", + "googleAnalyticsId": "", + "screenshotWidth": { "phone": 360, "tablet": 420, "desktop": 600, "desktop-hd": 600 }, - "baseUrl": "/", - "authorizedKeys": { - - }, + "screenshotTempPath": "/tmp/", + + "authorizedKeys": {}, "maxAnonymousRunsPerDay": 99999999, "maxAnonymousCallsPerDay": 99999999, "blockedUrls": [],