From 31d1b802249e14448719f36f03b4a63473c30e82 Mon Sep 17 00:00:00 2001 From: Ashvin Appigadoo Date: Thu, 12 Sep 2024 14:22:30 +0200 Subject: [PATCH 1/7] version 3.7 --- .github/workflows/publish-docker-image.yml | 2 +- EcoSonar-API/configuration/database.js | 15 +- .../dataBase/bestPracticesRepository.js | 19 +- .../dataBase/configurationRepository.js | 65 +++ EcoSonar-API/dataBase/greenItRepository.js | 27 +- EcoSonar-API/dataBase/lighthouseRepository.js | 21 +- .../dataBase/models/configurations.js | 21 + EcoSonar-API/dataBase/projectsRepository.js | 21 +- .../dataBase/urlsProjectRepository.js | 43 +- EcoSonar-API/dataBase/w3cRepository.js | 17 +- EcoSonar-API/loggers/traces.js | 32 ++ EcoSonar-API/package.json | 10 +- EcoSonar-API/routes/app.js | 463 +++++++++++----- EcoSonar-API/server.js | 3 +- EcoSonar-API/services/W3C/w3cAnalysis.js | 29 +- EcoSonar-API/services/analysisService.js | 59 ++- .../services/authenticationService.js | 13 +- EcoSonar-API/services/configurationService.js | 136 +++++ .../services/crawler/crawlerService.js | 2 +- EcoSonar-API/services/encryptionService.js | 44 ++ EcoSonar-API/services/exportAuditService.js | 9 +- .../services/format/formatGreenItAnalysis.js | 13 +- .../format/formatLighthouseAnalysis.js | 17 +- .../format/formatLighthouseBestPractices.js | 5 +- .../format/formatLighthouseMetrics.js | 3 +- .../services/format/formatW3cAnalysis.js | 17 +- .../services/format/formatW3cBestPractices.js | 7 +- .../greenit-analysis/analyseService.js | 21 +- .../greenit-analysis/greenit-analysis.js | 28 +- .../greenit-core/analyseFrameCore.js | 196 ++++--- .../greenit-analysis/greenit-core/ecoIndex.js | 56 +- .../greenit-core/greenpanel.js | 431 +++++++-------- .../rules/AddExpiresOrCacheControlHeaders.js | 62 +-- .../greenit-core/rules/CompressHttp.js | 62 +-- .../greenit-core/rules/DomainsNumber.js | 53 +- .../rules/DontResizeImageInBrowser.js | 66 ++- .../greenit-core/rules/EmptySrcTag.js | 23 +- .../greenit-core/rules/ExternalizeCss.js | 29 +- .../greenit-core/rules/ExternalizeJs.js | 30 +- .../greenit-core/rules/HttpError.js | 38 +- .../greenit-core/rules/HttpRequests.js | 41 +- .../rules/ImageDownloadedNotDisplayed.js | 56 +- .../greenit-core/rules/JsValidate.js | 41 +- .../greenit-core/rules/MaxCookiesLength.js | 65 +-- .../greenit-core/rules/MinifiedCss.js | 46 +- .../greenit-core/rules/MinifiedJs.js | 46 +- .../rules/NoCookieForStaticRessources.js | 49 +- .../greenit-core/rules/NoRedirect.js | 38 +- .../rules/OptimizeBitmapImages.js | 130 ++--- .../greenit-core/rules/OptimizeSvg.js | 48 +- .../greenit-core/rules/Plugins.js | 25 +- .../greenit-core/rules/PrintStyleSheet.js | 25 +- .../greenit-core/rules/SocialNetworkButton.js | 50 +- .../greenit-core/rules/StyleSheets.js | 51 +- .../greenit-core/rules/UseETags.js | 56 +- .../rules/UseStandardTypefaces.js | 45 +- .../greenit-core/rulesManager.js | 101 ++-- .../greenit-analysis/greenit-core/utils.js | 497 +++++++++--------- .../services/lighthouse/lighthouse.js | 21 +- EcoSonar-API/services/projectService.js | 7 +- .../services/retrieveAnalysisService.js | 23 +- .../services/retrieveBestPracticesService.js | 9 +- .../services/urlConfigurationService.js | 9 +- EcoSonar-API/services/userJourneyService.js | 37 +- EcoSonar-API/swagger.js | 2 +- EcoSonar-API/utils/playSelectors.js | 7 +- EcoSonar-SonarQube/README.md | 82 +-- .../ecocode/ecocode-csharp-plugin-1.1.0.jar | Bin 0 -> 509241 bytes ....6.1.jar => ecocode-java-plugin-1.6.2.jar} | Bin 276766 -> 277658 bytes .../ecocode/ecocode-php-plugin-1.4.3.jar | Bin 92194 -> 0 bytes .../ecocode/ecocode-php-plugin-1.5.1.jar | Bin 0 -> 93024 bytes ....3.jar => ecocode-python-plugin-1.4.4.jar} | Bin 99549 -> 100199 bytes EcoSonar-SonarQube/package.json | 2 +- EcoSonar-SonarQube/pom.xml | 2 +- .../components/ConfigurationPage.js | 15 +- .../src/main/js/services/ecoSonarService.js | 15 + .../src/main/js/styles/_settings.scss | 76 +++ docker-compose.yml | 7 +- 78 files changed, 2200 insertions(+), 1732 deletions(-) create mode 100644 EcoSonar-API/dataBase/configurationRepository.js create mode 100644 EcoSonar-API/dataBase/models/configurations.js create mode 100644 EcoSonar-API/loggers/traces.js create mode 100644 EcoSonar-API/services/configurationService.js create mode 100644 EcoSonar-API/services/encryptionService.js create mode 100644 EcoSonar-SonarQube/ecocode/ecocode-csharp-plugin-1.1.0.jar rename EcoSonar-SonarQube/ecocode/{ecocode-java-plugin-1.6.1.jar => ecocode-java-plugin-1.6.2.jar} (76%) delete mode 100644 EcoSonar-SonarQube/ecocode/ecocode-php-plugin-1.4.3.jar create mode 100644 EcoSonar-SonarQube/ecocode/ecocode-php-plugin-1.5.1.jar rename EcoSonar-SonarQube/ecocode/{ecocode-python-plugin-1.4.3.jar => ecocode-python-plugin-1.4.4.jar} (70%) diff --git a/.github/workflows/publish-docker-image.yml b/.github/workflows/publish-docker-image.yml index 49ec938..478cc70 100644 --- a/.github/workflows/publish-docker-image.yml +++ b/.github/workflows/publish-docker-image.yml @@ -36,7 +36,7 @@ jobs: uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: type=raw,value=3.6 + tags: type=raw,value=3.7 # This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages. # It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository. # It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step. diff --git a/EcoSonar-API/configuration/database.js b/EcoSonar-API/configuration/database.js index 082d110..7becef3 100644 --- a/EcoSonar-API/configuration/database.js +++ b/EcoSonar-API/configuration/database.js @@ -1,5 +1,6 @@ import mongoose from 'mongoose' import retrievePassword from './retrieveDatabasePasswordFromCloudProvider.js' +import loggerService from '../loggers/traces.js' mongoose.set('strictQuery', false) @@ -19,8 +20,8 @@ Database.prototype.connection = async function () { dbName = process.env.ECOSONAR_ENV_DB_NAME || '' connectionString = `mongodb://${cluster}:${port}/${dbName}` mongoose.connect(connectionString) - .then(() => console.log('Connection to MongoDB successful')) - .catch((reason) => console.error('\x1b[31m%s\x1b[0m', 'Unable to connect to the mongodb instance. Error: ', reason)) + .then(() => loggerService.info('Connection to MongoDB successful')) + .catch((reason) => loggerService.error('\x1b[31m%s\x1b[0m', 'Unable to connect to the mongodb instance. Error: ', reason)) } else if (mongoDBType === 'MongoDB_Atlas') { // connection to dataBase MongoDB Atlas for MongoDB API user = process.env.ECOSONAR_ENV_USER || '' @@ -29,8 +30,8 @@ Database.prototype.connection = async function () { dbName = process.env.ECOSONAR_ENV_DB_NAME || '' connectionString = `mongodb+srv://${user}:${password}@${cluster}/${dbName}?retryWrites=true&w=majority` mongoose.connect(connectionString) - .then(() => console.log('Connection to MongoDB Atlas successful')) - .catch((reason) => console.error('\x1b[31m%s\x1b[0m', 'Unable to connect to the mongodb instance. Error: ', reason)) + .then(() => loggerService.info('Connection to MongoDB Atlas successful')) + .catch((reason) => loggerService.error('\x1b[31m%s\x1b[0m', 'Unable to connect to the mongodb instance. Error: ', reason)) } else if (mongoDBType === 'CosmosDB') { // connection to dataBase Azure CosmosDB for MongoDB API cluster = process.env.ECOSONAR_ENV_CLUSTER || '' @@ -46,10 +47,10 @@ Database.prototype.connection = async function () { }, retryWrites: false }) - .then(() => console.log('Connection to CosmosDB successful')) - .catch((err) => console.error('\x1b[31m%s\x1b[0m', err)) + .then(() => loggerService.info('Connection to CosmosDB successful')) + .catch((err) => loggerService.error('\x1b[31m%s\x1b[0m', err)) } else { - console.log('Could not connect to any database') + loggerService.info('Could not connect to any database') } } diff --git a/EcoSonar-API/dataBase/bestPracticesRepository.js b/EcoSonar-API/dataBase/bestPracticesRepository.js index 67d4758..9b9c60d 100644 --- a/EcoSonar-API/dataBase/bestPracticesRepository.js +++ b/EcoSonar-API/dataBase/bestPracticesRepository.js @@ -1,5 +1,6 @@ import bestpractices from './models/bestpractices.js' import SystemError from '../utils/SystemError.js' +import loggerService from '../loggers/traces.js' const BestPracticesRepository = function () { /** @@ -20,11 +21,11 @@ const BestPracticesRepository = function () { resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) } else { - console.log('None of the urls analyzed could be inserted') + loggerService.info('None of the urls analyzed could be inserted') reject(new Error('None of the urls analyzed could be inserted')) } }) @@ -38,11 +39,11 @@ const BestPracticesRepository = function () { return new Promise((resolve, reject) => { bestpractices.deleteMany({ idUrl: url[0].idKey }) .then((result) => { - console.log(`DELETE URL - On best practices ${result.deletedCount} objects removed`) + loggerService.info(`DELETE URL - On best practices ${result.deletedCount} objects removed`) resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -60,7 +61,7 @@ const BestPracticesRepository = function () { .sort({ dateAnalysisBestPractices: 1 }) .then((result) => resolve(result)) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -79,7 +80,7 @@ const BestPracticesRepository = function () { .limit(1) .then((result) => resolve(result)) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -93,11 +94,11 @@ const BestPracticesRepository = function () { return new Promise((resolve, reject) => { bestpractices.deleteMany({ idUrl: { $in: urlIdKeyList } }) .then((result) => { - console.log(`DELETE URLS PROJECT - On best practices ${result.deletedCount} objects removed`) + loggerService.info(`DELETE URLS PROJECT - On best practices ${result.deletedCount} objects removed`) resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -118,7 +119,7 @@ function checkValues (arrayToInsert) { if (analysis.bestPractices) { arrayToInsertSanitized.push(analysis) } else { - console.warn(`BEST PRACTICES INSERT - Best practices for url ${analysis.url} cannot be inserted due to presence of NaN or undefined values`) + loggerService.warn(`BEST PRACTICES INSERT - Best practices for url ${analysis.url} cannot be inserted due to presence of NaN or undefined values`) } } return arrayToInsertSanitized diff --git a/EcoSonar-API/dataBase/configurationRepository.js b/EcoSonar-API/dataBase/configurationRepository.js new file mode 100644 index 0000000..61b81b7 --- /dev/null +++ b/EcoSonar-API/dataBase/configurationRepository.js @@ -0,0 +1,65 @@ +import configurations from './models/configurations.js' +import SystemError from '../utils/SystemError.js' +import loggerService from '../loggers/traces.js' + +const ConfigurationRepository = function () { + /** + * add a new new configuration for a project + * @param {JSON} configuration the configuration to save + */ + this.insertConfiguration = function (idProject, W3C, carbon) { + return new Promise((resolve, reject) => { + configurations.create({ idProject, W3C, carbon }) + .then(() => { resolve() }) + .catch((error) => { + console.log(error) + loggerService.error('\x1b[31m%s\x1b[0m', error) + if (error._message === 'configuration validation failed') { + reject(new Error(error.message)) + } + reject(new SystemError()) + }) + }) + } + + /** + * update an existing configuration of a project + * @param {JSON} configuration the configuration to save + */ + this.updateConfiguration = async function (idProject, W3C, carbon) { + return new Promise((resolve, reject) => { + configurations.updateOne({ idProject, W3C, carbon }) + .then(() => { + resolve() + }) + .catch((error) => { + loggerService.error('\x1b[31m%s\x1b[0m', error) + if (error._message === 'configuration validation failed') { + reject(new Error(error.message)) + } + reject(new SystemError()) + }) + }) + } + + /** + * find an existing configuration of a project + * @param {String} id of the project + */ + this.findConfiguration = async function (idProject) { + return new Promise((resolve, reject) => { + configurations.findOne({ idProject: { $eq: idProject } }, { W3C: 1, carbon: 1}) + .then((result) => { resolve(result) }) + .catch((error) => { + loggerService.error('\x1b[31m%s\x1b[0m', error) + if (error._message === 'configuration validation failed') { + reject(new Error(error.message)) + } + reject(new SystemError()) + }) + }) + } +} + +const configurationRepository = new ConfigurationRepository() +export default configurationRepository diff --git a/EcoSonar-API/dataBase/greenItRepository.js b/EcoSonar-API/dataBase/greenItRepository.js index 440a2c4..f34aae2 100644 --- a/EcoSonar-API/dataBase/greenItRepository.js +++ b/EcoSonar-API/dataBase/greenItRepository.js @@ -1,6 +1,7 @@ import greenits from './models/greenits.js' import urlsprojects from './models/urlsprojects.js' import SystemError from '../utils/SystemError.js' +import loggerService from '../loggers/traces.js' const GreenItRepository = function () { /** @@ -18,13 +19,13 @@ const GreenItRepository = function () { resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) - console.log('GREENIT - error during insertion of analysis') + loggerService.error('\x1b[31m%s\x1b[0m', error) + loggerService.info('GREENIT - error during insertion of analysis') const systemError = new SystemError() reject(systemError) }) } else { - console.log('GREENIT - None of the urls analysed could be inserted') + loggerService.info('GREENIT - None of the urls analysed could be inserted') reject(new Error('GREENIT - None of the urls analysed could be inserted')) } }) @@ -41,7 +42,7 @@ const GreenItRepository = function () { resolve(res) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -61,7 +62,7 @@ const GreenItRepository = function () { resolve(result) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -78,7 +79,7 @@ const GreenItRepository = function () { .sort({ dateGreenAnalysis: 1 }) .then((result) => { resolve(result) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -95,7 +96,7 @@ const GreenItRepository = function () { .sort({ dateGreenAnalysis: 1 }) .then((result) => { resolve(result) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -109,11 +110,11 @@ const GreenItRepository = function () { return new Promise((resolve, reject) => { greenits.deleteMany({ idUrlGreen: url[0].idKey }) .then((result) => { - console.log(`DELETE URL - On GreenIt ${result.deletedCount} objects removed`) + loggerService.info(`DELETE URL - On GreenIt ${result.deletedCount} objects removed`) resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -127,11 +128,11 @@ const GreenItRepository = function () { return new Promise((resolve, reject) => { greenits.deleteMany({ idUrlGreen: { $in: urlIdKeyList } }) .then((result) => { - console.log(`DELETE URLS PROJECT - On GreenIt ${result.deletedCount} objects removed`) + loggerService.info(`DELETE URLS PROJECT - On GreenIt ${result.deletedCount} objects removed`) resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -151,10 +152,10 @@ async function checkValues (arrayToInsert) { } else { await urlsprojects.find({ idKey: analysis.idUrlGreen }) .then((result) => { - console.warn(`GREENIT INSERT - Url ${result[0].urlName} cannot be inserted due to presence of NaN or undefined values`) + loggerService.warn(`GREENIT INSERT - Url ${result[0].urlName} cannot be inserted due to presence of NaN or undefined values`) }) .catch((error) => { - console.error(error) + loggerService.error(error) }) } } diff --git a/EcoSonar-API/dataBase/lighthouseRepository.js b/EcoSonar-API/dataBase/lighthouseRepository.js index 20edb8c..e76fb95 100644 --- a/EcoSonar-API/dataBase/lighthouseRepository.js +++ b/EcoSonar-API/dataBase/lighthouseRepository.js @@ -1,5 +1,6 @@ import lighthouses from './models/lighthouses.js' import SystemError from '../utils/SystemError.js' +import loggerService from '../loggers/traces.js' const LighthouseRepository = function () { /** @@ -15,11 +16,11 @@ const LighthouseRepository = function () { resolve() }) .catch((err) => { - console.error('\x1b[31m%s\x1b[0m', err) + loggerService.error('\x1b[31m%s\x1b[0m', err) reject(new SystemError()) }) } else { - console.log('LIGHTHOUSE - None of the urls analysed could be inserted') + loggerService.info('LIGHTHOUSE - None of the urls analysed could be inserted') reject( new Error('LIGHTHOUSE - None of the urls analysed could be inserted') ) @@ -43,7 +44,7 @@ const LighthouseRepository = function () { resolve(res) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -76,7 +77,7 @@ const LighthouseRepository = function () { resolve(result) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -107,7 +108,7 @@ const LighthouseRepository = function () { .sort({ dateLighthouseAnalysis: 1 }) .then((result) => { resolve(result) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -132,7 +133,7 @@ const LighthouseRepository = function () { .sort({ dateLighthouseAnalysis: 1 }) .then((result) => { resolve(result) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -146,11 +147,11 @@ const LighthouseRepository = function () { return new Promise((resolve, reject) => { lighthouses.deleteMany({ idUrlLighthouse: url[0].idKey }) .then((result) => { - console.log(`DELETE URL - On Lighthouse ${result.deletedCount} objects removed`) + loggerService.info(`DELETE URL - On Lighthouse ${result.deletedCount} objects removed`) resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -164,11 +165,11 @@ const LighthouseRepository = function () { return new Promise((resolve, reject) => { lighthouses.deleteMany({ idUrlLighthouse: { $in: urlIdKeyList } }) .then((result) => { - console.log(`DELETE URLS PROJECT - On Lighthouse ${result.deletedCount} objects removed`) + loggerService.info(`DELETE URLS PROJECT - On Lighthouse ${result.deletedCount} objects removed`) resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) diff --git a/EcoSonar-API/dataBase/models/configurations.js b/EcoSonar-API/dataBase/models/configurations.js new file mode 100644 index 0000000..34913bc --- /dev/null +++ b/EcoSonar-API/dataBase/models/configurations.js @@ -0,0 +1,21 @@ +import mongoose from 'mongoose' +const Schema = mongoose.Schema + +const configurationSchema = new Schema({ + idProject: { + type: String, + required: true, + unique: true + }, + W3C: { + type: String, + required: true + }, + carbon: { + type: String, + required: true + } +}) + +const configuration = mongoose.model('configurations', configurationSchema) +export default configuration diff --git a/EcoSonar-API/dataBase/projectsRepository.js b/EcoSonar-API/dataBase/projectsRepository.js index bf8b61d..f17995d 100644 --- a/EcoSonar-API/dataBase/projectsRepository.js +++ b/EcoSonar-API/dataBase/projectsRepository.js @@ -1,5 +1,6 @@ import projects from './models/projects.js' import SystemError from '../utils/SystemError.js' +import loggerService from '../loggers/traces.js' const ProjectsRepository = function () { /** @@ -12,7 +13,7 @@ const ProjectsRepository = function () { projects.create({ projectName, procedure }) .then(() => { resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) if (error._message === 'projects validation failed') { reject(new Error(error.message)) } @@ -33,7 +34,7 @@ const ProjectsRepository = function () { resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) if (error._message === 'projects validation failed') { reject(new Error(error.message)) } @@ -53,7 +54,7 @@ const ProjectsRepository = function () { projects.create({ projectName }, { login: loginMap }) .then(() => { resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -69,7 +70,7 @@ const ProjectsRepository = function () { projects.create({ projectName, proxy }) .then(() => { resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -86,7 +87,7 @@ const ProjectsRepository = function () { projects.updateOne({ projectName: { $eq: projectName } }, { login: loginMap }) .then(() => { resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -102,7 +103,7 @@ const ProjectsRepository = function () { projects.updateOne({ projectName: { $eq: projectName } }, { proxy }) .then(() => { resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -120,7 +121,7 @@ const ProjectsRepository = function () { resolve(result) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -141,7 +142,7 @@ const ProjectsRepository = function () { await projects.deleteOne({ projectName: { $eq: projectNameReq } }) } } catch (error) { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) systemError = true } return new Promise((resolve, reject) => { @@ -168,7 +169,7 @@ const ProjectsRepository = function () { await projects.deleteOne({ projectName: { $eq: projectNameReq } }) } } catch (error) { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) systemError = true } return new Promise((resolve, reject) => { @@ -191,7 +192,7 @@ const ProjectsRepository = function () { console.log(`DELETE URLS PROJECT - project ${projectNameReq} deleted`) resolve() }).catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) diff --git a/EcoSonar-API/dataBase/urlsProjectRepository.js b/EcoSonar-API/dataBase/urlsProjectRepository.js index f956833..5516bd4 100644 --- a/EcoSonar-API/dataBase/urlsProjectRepository.js +++ b/EcoSonar-API/dataBase/urlsProjectRepository.js @@ -2,6 +2,7 @@ import uniqid from 'uniqid' import escapeRegExp from 'lodash/escapeRegExp.js' import urlsprojects from './models/urlsprojects.js' import SystemError from '../utils/SystemError.js' +import loggerService from '../loggers/traces.js' const UrlsProjectRepository = function () { /** @@ -22,7 +23,7 @@ const UrlsProjectRepository = function () { urlsprojects.insertMany(urlsProjects) .then(() => { resolve() }) .catch((err) => { - console.error('\x1b[31m%s\x1b[0m', err) + loggerService.error('\x1b[31m%s\x1b[0m', err) if (err._message === 'urlsprojects validation failed') { const indexError = urlList.indexOf(err.errors.urlName.properties.value) const errors = [] @@ -51,11 +52,11 @@ const UrlsProjectRepository = function () { return new Promise((resolve, reject) => { urlsprojects.deleteOne({ urlName: url[0].urlName }) .then((result) => { - console.log(`DELETE URL - On URL PROJECT ${result.deletedCount} objects removed`) + loggerService.info(`DELETE URL - On URL PROJECT ${result.deletedCount} objects removed`) resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -69,11 +70,11 @@ const UrlsProjectRepository = function () { return new Promise((resolve, reject) => { urlsprojects.deleteMany({ idKey: { $in: urlIdKeyList } }) .then((result) => { - console.log(`DELETE URLS PROJECT - On urlsprojects ${result.deletedCount} objects removed`) + loggerService.info(`DELETE URLS PROJECT - On urlsprojects ${result.deletedCount} objects removed`) resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -90,7 +91,7 @@ const UrlsProjectRepository = function () { resolve(result) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -107,7 +108,7 @@ const UrlsProjectRepository = function () { urlsprojects.updateOne({ idKey: urlObject.idKey, projectName: urlObject.projectName, urlName: urlObject.urlName }, { userFlow: userflowMap }) .then(() => { resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -126,12 +127,13 @@ const UrlsProjectRepository = function () { resolve(result) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) } + /** * Deletion of user flow for a specified url in a project * @param {string} projectName project name of the url @@ -142,7 +144,7 @@ const UrlsProjectRepository = function () { urlsprojects.updateOne({ projectName: { $eq: projectName }, urlName: { $eq: urlName } }, { $unset: { userFlow: '' } }) .then(() => { resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -153,7 +155,7 @@ const UrlsProjectRepository = function () { urlsprojects.find({ projectName: { $eq: projectName }, urlName: { $eq: urlName } }, { idKey: 1 }) .then((result) => { resolve(result) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -174,7 +176,26 @@ const UrlsProjectRepository = function () { resolve(res) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) + reject(new SystemError()) + }) + }) + } + + /** + * find project given the projectName + * @param {string} projectName project name + * @returns project + */ + this.getUrlProject = async function (projectName) { + return new Promise((resolve, reject) => { + urlsprojects.findOne({ projectName: { $eq: projectName } }, {urlName: 1, idKey: 1, projectName: 1, urlName: 1, userFlow: 1 }) + .then((result) => { + resolve(result) + }) + .catch((error) => { + console.log(error); + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) diff --git a/EcoSonar-API/dataBase/w3cRepository.js b/EcoSonar-API/dataBase/w3cRepository.js index 6c86d4e..e5814d3 100644 --- a/EcoSonar-API/dataBase/w3cRepository.js +++ b/EcoSonar-API/dataBase/w3cRepository.js @@ -1,5 +1,6 @@ import SystemError from '../utils/SystemError.js' import w3cs from './models/w3cs.js' +import loggerService from '../loggers/traces.js' const W3cRepository = function () { /** @@ -15,11 +16,11 @@ const W3cRepository = function () { resolve() }) .catch((err) => { - console.error('\x1b[31m%s\x1b[0m', err) + loggerService.error('\x1b[31m%s\x1b[0m', err) reject(new SystemError()) }) } else { - console.log('W3C - None of the urls analysed could be inserted') + loggerService.info('W3C - None of the urls analysed could be inserted') reject( new Error('W3C - None of the urls analysed could be inserted') ) @@ -42,7 +43,7 @@ const W3cRepository = function () { resolve(res) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -94,7 +95,7 @@ const W3cRepository = function () { .sort({ dateW3cAnalysis: 1 }) .then((result) => { resolve(result) }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) } @@ -109,11 +110,11 @@ const W3cRepository = function () { return new Promise((resolve, reject) => { w3cs.deleteMany({ idUrlW3c: url[0].idKey }) .then((result) => { - console.log(`DELETE URL - On W3C ${result.deletedCount} objects removed`) + loggerService.info(`DELETE URL - On W3C ${result.deletedCount} objects removed`) resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) @@ -127,11 +128,11 @@ const W3cRepository = function () { return new Promise((resolve, reject) => { w3cs.deleteMany({ idUrlW3c: { $in: urlIdKeyList } }) .then((result) => { - console.log(`DELETE URLS PROJECT - On W3C ${result.deletedCount} objects removed`) + loggerService.info(`DELETE URLS PROJECT - On W3C ${result.deletedCount} objects removed`) resolve() }) .catch((error) => { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) reject(new SystemError()) }) }) diff --git a/EcoSonar-API/loggers/traces.js b/EcoSonar-API/loggers/traces.js new file mode 100644 index 0000000..1331f7c --- /dev/null +++ b/EcoSonar-API/loggers/traces.js @@ -0,0 +1,32 @@ +import winston from 'winston' + +class LoggerService { } +// Create a Winston logger with transports +// for logging to console and file +let alignColorsAndTime = winston.format.combine( + winston.format.label({ + label:'[LOGGER]' + }), + winston.format.timestamp({ + format:"YYYY-MM-DD HH:mm:ss" + }), + winston.format.printf( + info => ` ${info.label} ${info.timestamp} ${info.level} : ${info.message}` + ) +); + +export const logger = winston.createLogger({ + level: "debug", + transports: [ + new (winston.transports.Console)({ + format: winston.format.combine(alignColorsAndTime) + }), + new winston.transports.File({ + format: winston.format.combine(alignColorsAndTime), + filename: 'app.log' + }) + ], +}); + +const loggerService = winston.createLogger(logger); +export default loggerService \ No newline at end of file diff --git a/EcoSonar-API/package.json b/EcoSonar-API/package.json index d14a459..8137640 100644 --- a/EcoSonar-API/package.json +++ b/EcoSonar-API/package.json @@ -1,6 +1,6 @@ { "name": "ecosonar-api", - "version": "3.5", + "version": "3.7", "description": "Ecodesign and accessibility tool to help developpers minimize carbon footprint of their web-application", "repository": { "type": "git", @@ -20,13 +20,14 @@ "dependencies": { "@azure/identity": "4.0.1", "@azure/keyvault-secrets": "^4.8.0", - "cheerio": "^1.0.0-rc.12", + "cheerio": "1.0.0", "chrome-har": "^0.13.2", "concat-files": "^0.1.1", "cors": "^2.8.5", "dotenv": "^16.3.2", "exceljs": "^4.4.0", - "express": "^4.18.2", + "express": "^4.19.2", + "express-basic-auth": "^1.2.1", "express-rate-limit": "^7.2.0", "glob": "^10.3.10", "helmet": "^7.1.0", @@ -39,7 +40,8 @@ "puppeteer": "^22.4.1", "swagger-jsdoc": "^6.2.8", "swagger-ui-express": "^5.0.0", - "uniqid": "^5.4.0" + "uniqid": "^5.4.0", + "winston": "^3.13.0" }, "devDependencies": { "@ecocode/eslint-plugin": "^1.4.0", diff --git a/EcoSonar-API/routes/app.js b/EcoSonar-API/routes/app.js index 4123763..8a4e19b 100644 --- a/EcoSonar-API/routes/app.js +++ b/EcoSonar-API/routes/app.js @@ -18,9 +18,13 @@ import SystemError from '../utils/SystemError.js' import asyncMiddleware from '../utils/AsyncMiddleware.js' import projectService from '../services/projectService.js' import bestPracticesServices from '../services/bestPracticesService.js' +import loggerService from '../loggers/traces.js' import { createRequire } from 'node:module' const require = createRequire(import.meta.url) const packageJson = require('../package.json') +const basicAuth = require('express-basic-auth') +import fs from 'node:fs'; +import { aesEncrypt, aesDecrypt } from '../services/encryptionService.js' dotenv.config() @@ -30,10 +34,14 @@ app.disable('x-powered-by') app.use(express.urlencoded({ extended: true })) app.use(express.json()) app.use(helmet()) -app.use('/swagger', swaggerUi.serve, swaggerUi.setup(swaggerSpec)) const PORT = process.env.SWAGGER_PORT || 3002 -app.listen(PORT, () => console.log(`Swagger in progress on port ${PORT}`)) +app.listen(PORT, () => loggerService.info(`Swagger in progress on port ${PORT}`)) +app.use("/swagger",basicAuth({ + users: {'admin': 'password'}, + challenge: true, +}), swaggerUi.serve, swaggerUi.setup(swaggerSpec)) + const sonarqubeServerUrl = process.env.ECOSONAR_ENV_SONARQUBE_SERVER_URL || '' const whitelist = [sonarqubeServerUrl] @@ -90,19 +98,66 @@ app.use((_req, res, next) => { */ app.get('/api/all', asyncMiddleware(async (req, res, _next) => { const projectName = req.query.projectName - console.log('GET URLS PROJECT - retrieve all urls from project ' + projectName) + loggerService.info('GET URLS PROJECT - retrieve all urls from project ' + projectName) urlConfigurationService.getAll(projectName) .then((results) => { - console.log('GET URLS PROJECT - retrieved ' + results.length + ' urls from project ' + projectName) + loggerService.info('GET URLS PROJECT - retrieved ' + results.length + ' urls from project ' + projectName) return res.status(200).json(results) }) .catch((error) => { - console.error(error) - console.error('GET URLS PROJECT - retrieve all urls encountered an error for project ' + projectName) + loggerService.error(error) + loggerService.error('GET URLS PROJECT - retrieve all urls encountered an error for project ' + projectName) return res.status(500).send() }) })) +/** + * @swagger + * /api/encrypt: + * post: + * tags: + * - "Encryption" + * summary: "Encrypt text" + * description: retrieve list of URLs saved and audited by EcoSonar for the project. + * parameters: + * - name: projectName + * in: body + * responses: + * 200: + * description: Success. + * 500: + * description: System error. + */ +app.post('/api/encrypt', (req, res) => { + const data = req.body.text + const encryptedData = aesEncrypt(data) + res.json({ encryptedData }) +}) + + +/** + * @swagger + * /api/decrypt: + * post: + * tags: + * - "Encryption" + * summary: "Decrypt text" + * description: retrieve list of URLs saved and audited by EcoSonar for the project. + * parameters: + * - name: projectName + * in: body + * responses: + * 200: + * description: Success. + * 500: + * description: System error. + */ +app.post('/api/decrypt', (req, res) => { + const encryptedData = req.body.text + const data = aesDecrypt(encryptedData) + res.json({ data }) +}) + /** * @swagger * /api/insert: @@ -140,19 +195,19 @@ app.get('/api/all', asyncMiddleware(async (req, res, _next) => { app.post('/api/insert', asyncMiddleware(async (req, res, _next) => { const projectName = req.body.projectName const urlsList = req.body.urlName - console.log(`INSERT URLS PROJECT - insert urls into project ${projectName}`) + loggerService.info(`INSERT URLS PROJECT - insert urls into project ${projectName}`) urlConfigurationService.insert(projectName, urlsList) .then(() => { - console.log('INSERT URLS PROJECT - insert succeeded') + loggerService.info('INSERT URLS PROJECT - insert succeeded') return res.status(200).send() }) .catch((error) => { if (error instanceof SystemError) { - console.error(error) - console.error(`INSERT URLS PROJECT - insert urls into project ${projectName} encountered an error`) + loggerService.error(error) + loggerService.error(`INSERT URLS PROJECT - insert urls into project ${projectName} encountered an error`) return res.status(500).send() } - console.error('INSERT URLS PROJECT - Validation failed') + loggerService.error('INSERT URLS PROJECT - Validation failed') return res.status(400).json({ error }) }) })) @@ -188,16 +243,16 @@ app.post('/api/insert', asyncMiddleware(async (req, res, _next) => { app.delete('/api/delete', asyncMiddleware(async (req, res, _next) => { const projectName = req.body.projectName const urlName = req.body.urlName - console.log('DELETE URLS PROJECT - delete url ' + urlName + ' from project ' + projectName) + loggerService.info('DELETE URLS PROJECT - delete url ' + urlName + ' from project ' + projectName) urlConfigurationService.delete(projectName, urlName) .then(() => { - console.log('DELETE URLS PROJECT - delete succeeded') + loggerService.info('DELETE URLS PROJECT - delete succeeded') return res.status(200).send() }) .catch((error) => { - console.error(error) + loggerService.error(error) if (error instanceof SystemError) { - console.error('DELETE URLS PROJECT - delete url ' + urlName + ' from project ' + projectName + ' encountered an error') + loggerService.error('DELETE URLS PROJECT - delete url ' + urlName + ' from project ' + projectName + ' encountered an error') return res.status(500).send() } return res.status(400).json({ error: error.message }) @@ -244,15 +299,15 @@ app.delete('/api/delete', asyncMiddleware(async (req, res, _next) => { app.post('/api/login/insert', asyncMiddleware(async (req, res, _next) => { const projectName = req.query.projectName const loginCredentials = req.body.login - console.log('INSERT LOGIN CREDENTIALS - insert credentials into project ' + projectName) + loggerService.info('INSERT LOGIN CREDENTIALS - insert credentials into project ' + projectName) loginProxyConfigurationService.insertLoginCredentials(projectName, loginCredentials) .then(() => { - console.log('INSERT LOGIN CREDENTIALS - insert succeeded') + loggerService.info('INSERT LOGIN CREDENTIALS - insert succeeded') return res.status(201).send() }) .catch((error) => { - console.error(error) - console.error('INSERT LOGIN CREDENTIALS - insert credentials into project ' + projectName + ' encountered an error') + loggerService.error(error) + loggerService.error('INSERT LOGIN CREDENTIALS - insert credentials into project ' + projectName + ' encountered an error') if (error instanceof SystemError) { return res.status(500).send() } @@ -298,15 +353,15 @@ app.post('/api/login/insert', asyncMiddleware(async (req, res, _next) => { app.post('/api/proxy/insert', asyncMiddleware(async (req, res, _next) => { const projectName = req.query.projectName const proxyConfiguration = req.body.proxy - console.log('INSERT PROXY - insert proxy credentials into project ' + projectName) + loggerService.info('INSERT PROXY - insert proxy credentials into project ' + projectName) loginProxyConfigurationService.insertProxyConfiguration(projectName, proxyConfiguration) .then(() => { - console.log('INSERT PROXY CREDENTIALS - insert succeeded') + loggerService.info('INSERT PROXY CREDENTIALS - insert succeeded') return res.status(201).send() }) .catch((error) => { - console.error(error) - console.error('INSERT PROXY - proxy credentials into project ' + projectName + ' encountered an error') + loggerService.error(error) + loggerService.error('INSERT PROXY - proxy credentials into project ' + projectName + ' encountered an error') if (error instanceof SystemError) { return res.status(500).send() } @@ -336,19 +391,19 @@ app.post('/api/proxy/insert', asyncMiddleware(async (req, res, _next) => { */ app.get('/api/login/find', asyncMiddleware(async (req, res, _next) => { const projectName = req.query.projectName - console.log('FIND LOGIN CREDENTIALS - credentials into project ' + projectName) + loggerService.info('FIND LOGIN CREDENTIALS - credentials into project ' + projectName) loginProxyConfigurationService.getLoginCredentials(projectName) .then((loginCredentials) => { - console.log('FIND LOGIN CREDENTIALS - retrieve succeeded') + loggerService.info('FIND LOGIN CREDENTIALS - retrieve succeeded') return res.status(200).json(loginCredentials) }) .catch((error) => { if (error instanceof SystemError) { - console.error(error) - console.error('FIND LOGIN CREDENTIALS - credentials into project ' + projectName + ' encountered an error') + loggerService.error(error) + loggerService.error('FIND LOGIN CREDENTIALS - credentials into project ' + projectName + ' encountered an error') return res.status(500).send() } - console.warn('FIND LOGIN CREDENTIALS - credentials into project ' + projectName + ' are not saved') + loggerService.warn('FIND LOGIN CREDENTIALS - credentials into project ' + projectName + ' are not saved') return res.status(200).json({}) }) })) @@ -375,19 +430,19 @@ app.get('/api/login/find', asyncMiddleware(async (req, res, _next) => { */ app.get('/api/proxy/find', asyncMiddleware(async (req, res, _next) => { const projectName = req.query.projectName - console.log('FIND PROXY CONFIGURATION - credentials into project ' + projectName) + loggerService.info('FIND PROXY CONFIGURATION - credentials into project ' + projectName) loginProxyConfigurationService.getProxyConfiguration(projectName) .then((proxyConfiguration) => { - console.log('FIND PROXY CONFIGURATION - retrieve succeeded') + loggerService.info('FIND PROXY CONFIGURATION - retrieve succeeded') return res.status(200).json(proxyConfiguration) }) .catch((error) => { if (error instanceof SystemError) { - console.error(error) - console.error('FIND PROXY CREDENTIALS - credentials into project ' + projectName + ' encountered an error') + loggerService.error(error) + loggerService.error('FIND PROXY CREDENTIALS - credentials into project ' + projectName + ' encountered an error') return res.status(500).send() } - console.warn('FIND PROXY CREDENTIALS - credentials into project ' + projectName + ' are not saved') + loggerService.warn('FIND PROXY CREDENTIALS - credentials into project ' + projectName + ' are not saved') return res.status(200).json({}) }) })) @@ -416,16 +471,16 @@ app.get('/api/proxy/find', asyncMiddleware(async (req, res, _next) => { */ app.delete('/api/login', asyncMiddleware(async (req, res, _next) => { const projectName = req.query.projectName - console.log('DELETE LOGIN CREDENTIALS - delete credentials into project ' + projectName) + loggerService.info('DELETE LOGIN CREDENTIALS - delete credentials into project ' + projectName) loginProxyConfigurationService.deleteLoginCredentials(projectName) .then(() => { - console.log('DELETE LOGIN CREDENTIALS - succeeded') + loggerService.info('DELETE LOGIN CREDENTIALS - succeeded') return res.status(200).send() }) .catch((error) => { - console.error(error) + loggerService.error(error) if (error instanceof SystemError) { - console.error('DELETE LOGIN CREDENTIALS - delete credentials into project ' + projectName + ' encountered an error') + loggerService.error('DELETE LOGIN CREDENTIALS - delete credentials into project ' + projectName + ' encountered an error') return res.status(500).send() } return res.status(400).json({ error: error.message }) @@ -456,16 +511,16 @@ app.delete('/api/login', asyncMiddleware(async (req, res, _next) => { */ app.delete('/api/proxy', asyncMiddleware(async (req, res, _next) => { const projectName = req.query.projectName - console.log('DELETE PROXY CONFIGURATION - delete credentials into project ' + projectName) + loggerService.info('DELETE PROXY CONFIGURATION - delete credentials into project ' + projectName) loginProxyConfigurationService.deleteProxyConfiguration(projectName) .then(() => { - console.log('DELETE PROXY CONFIGURATION - succeeded') + loggerService.info('DELETE PROXY CONFIGURATION - succeeded') return res.status(200).send() }) .catch((error) => { - console.error(error) + loggerService.error(error) if (error instanceof SystemError) { - console.error('DELETE PROXY CONFIGURATION - delete credentials into project ' + projectName + ' encountered an error') + loggerService.error('DELETE PROXY CONFIGURATION - delete credentials into project ' + projectName + ' encountered an error') return res.status(500).send() } return res.status(400).json({ error: error.message }) @@ -512,19 +567,19 @@ app.post('/api/user-flow/insert', asyncMiddleware(async (req, res, _next) => { const url = req.body.url const projectName = req.body.projectName const userFlow = req.body.userFlow - console.log('INSERT USER FLOW - insert credentials for url ' + url + ' in project ' + projectName) + loggerService.info('INSERT USER FLOW - insert credentials for url ' + url + ' in project ' + projectName) userJourneyService.insertUserFlow(projectName, url, userFlow) .then(() => { - console.log('INSERT USER FLOW - insert succeeded') + loggerService.info('INSERT USER FLOW - insert succeeded') return res.status(200).send() }) .catch((error) => { - console.error(error) + loggerService.error(error) if (error instanceof SystemError) { - console.error('INSERT USER FLOW - insert credentials for url ' + url + ' in project ' + projectName + ' encountered an error') + loggerService.error('INSERT USER FLOW - insert credentials for url ' + url + ' in project ' + projectName + ' encountered an error') return res.status(500).send() } - console.error('INSERT USER FLOW - insertion failed') + loggerService.error('INSERT USER FLOW - insertion failed') return res.status(400).json({ error: error.message }) }) })) @@ -557,19 +612,19 @@ app.post('/api/user-flow/insert', asyncMiddleware(async (req, res, _next) => { app.post('/api/user-flow/find', asyncMiddleware(async (req, res, _next) => { const url = req.body.url const projectName = req.body.projectName - console.log('FIND USER FLOW - get flow for url ' + url + ' in project ' + projectName) + loggerService.info('FIND USER FLOW - get flow for url ' + url + ' in project ' + projectName) userJourneyService.getUserFlow(projectName, url) .then((userFlow) => { - console.log('FIND USER FLOW - retrieve succeeded') + loggerService.info('FIND USER FLOW - retrieve succeeded') return res.status(200).json(userFlow) }) .catch((error) => { if (error instanceof SystemError) { - console.error(error) - console.log('FIND USER FLOW - get flow for url ' + url + ' in project ' + projectName + ' encountered an error') + loggerService.error(error) + loggerService.info('FIND USER FLOW - get flow for url ' + url + ' in project ' + projectName + ' encountered an error') return res.status(500).send() } - console.warn('FIND USER FLOW - flow for url ' + url + ' is not saved') + loggerService.warn('FIND USER FLOW - flow for url ' + url + ' is not saved') return res.status(200).json({}) }) })) @@ -604,16 +659,16 @@ app.post('/api/user-flow/find', asyncMiddleware(async (req, res, _next) => { app.delete('/api/user-flow', asyncMiddleware(async (req, res, _next) => { const url = req.body.url const projectName = req.body.projectName - console.log('DELETE USER FLOW - delete user flow into url ' + url + ' in project ' + projectName) + loggerService.info('DELETE USER FLOW - delete user flow into url ' + url + ' in project ' + projectName) userJourneyService.deleteUserFlow(projectName, url) .then(() => { - console.log('DELETE USER FLOW - succeeded') + loggerService.info('DELETE USER FLOW - succeeded') return res.status(200).send() }) .catch((error) => { - console.error(error) + loggerService.error(error) if (error instanceof SystemError) { - console.error('DELETE USER FLOW - delete user flow into url ' + url + ' in project ' + projectName + ' encountered an error') + loggerService.error('DELETE USER FLOW - delete user flow into url ' + url + ' in project ' + projectName + ' encountered an error') return res.status(500).send() } return res.status(400).json({ error: error.message }) @@ -652,7 +707,7 @@ app.post('/api/greenit/insert', asyncMiddleware(async (req, res, _next) => { const projectName = req.body.projectName const username = req.body.username const password = req.body.password - console.log('INSERT ANALYSIS - Launch analysis for project ' + projectName) + loggerService.info('INSERT ANALYSIS - Launch analysis for project ' + projectName) analysisService.insert(projectName, username, password) res.status(202).send() })) @@ -686,15 +741,15 @@ app.post('/api/greenit/insert', asyncMiddleware(async (req, res, _next) => { app.post('/api/greenit/url', asyncMiddleware(async (req, res, _next) => { const projectName = req.body.projectName const urlName = req.body.urlName - console.log('GET ANALYSIS URL - retrieve analysis for url ' + urlName + ' in project ' + projectName) + loggerService.info('GET ANALYSIS URL - retrieve analysis for url ' + urlName + ' in project ' + projectName) retrieveAnalysisService.getUrlAnalysis(projectName, urlName) .then((results) => { - console.log('GET ANALYSIS URL - Analysis for url retrieved') + loggerService.info('GET ANALYSIS URL - Analysis for url retrieved') return res.status(200).json(results) }) .catch((error) => { - console.log(error) - console.log('GET ANALYSIS URL - retrieve analysis for url ' + urlName + ' in project ' + projectName + ' encountered an error') + loggerService.info(error) + loggerService.info('GET ANALYSIS URL - retrieve analysis for url ' + urlName + ' in project ' + projectName + ' encountered an error') return res.status(500).send() }) })) @@ -721,14 +776,14 @@ app.post('/api/greenit/url', asyncMiddleware(async (req, res, _next) => { */ app.get('/api/greenit/project', asyncMiddleware(async (req, res, _next) => { const projectName = req.query.projectName - console.log('GET ANALYSIS PROJECT - retrieve analysis for project ' + projectName) - retrieveAnalysisService.getProjectAnalysis(projectName) + loggerService.info('GET ANALYSIS PROJECT - retrieve analysis for project ' + projectName) + retrieveAnalysisService.getProjectAnalysis(projectName, res) .then((results) => { - console.log('GET ANALYSIS PROJECT - Analysis for project retrieved') + loggerService.info('GET ANALYSIS PROJECT - Analysis for project retrieved') return res.status(200).json(results) }).catch((error) => { - console.error(error) - console.error('GET ANALYSIS PROJECT - retrieve analysis for project ' + projectName + ' encountered an erro') + loggerService.error(error) + loggerService.error('GET ANALYSIS PROJECT - retrieve analysis for project ' + projectName + ' encountered an erro') return res.status(500).send() }) })) @@ -755,14 +810,14 @@ app.get('/api/greenit/project', asyncMiddleware(async (req, res, _next) => { */ app.get('/api/ecosonar/scores', asyncMiddleware(async (req, res, _next) => { const projectNameReq = req.query.projectName - console.log('GET ECOSONAR PROJECT SCORES - retrieve scores for project ' + projectNameReq) + loggerService.info('GET ECOSONAR PROJECT SCORES - retrieve scores for project ' + projectNameReq) retrieveAnalysisService.getProjectScores(projectNameReq) .then((result) => { - console.log('GET ECOSONAR PROJECT SCORES - Scores for project retrieved') + loggerService.info('GET ECOSONAR PROJECT SCORES - Scores for project retrieved') return res.status(200).json(result) }).catch((error) => { - console.error(error) - console.error('GET ECOSONAR PROJECT SCORES - retrieve scores for project ' + projectNameReq + ' encountered an error') + loggerService.error(error) + loggerService.error('GET ECOSONAR PROJECT SCORES - retrieve scores for project ' + projectNameReq + ' encountered an error') return res.status(500).send() }) })) @@ -793,18 +848,18 @@ app.get('/api/ecosonar/scores', asyncMiddleware(async (req, res, _next) => { */ app.get('/api/ecosonar/info', asyncMiddleware(async (req, res, _next) => { const date = req.query.date ?? null - console.log('GET AVERAGE PROJECT SCORE - retrieve all informations for all projects for the date defined') + loggerService.info('GET AVERAGE PROJECT SCORE - retrieve all informations for all projects for the date defined') projectService.getAllInformationsAverage(date) .then((result) => { - console.log('GET AVERAGE PROJECT SCORES - Retrieved average of scores from all projects for the date defined') + loggerService.info('GET AVERAGE PROJECT SCORES - Retrieved average of scores from all projects for the date defined') return res.status(200).json(result) }).catch((error) => { - console.error(error) + loggerService.error(error) if (error instanceof SystemError) { - console.error('GET AVERAGE PROJECT SCORE - retrieve all informations for all projects for the date defined encountered an error') + loggerService.error('GET AVERAGE PROJECT SCORE - retrieve all informations for all projects for the date defined encountered an error') return res.status(500).send() } - console.error('GET AVERAGE PROJECT SCORES - Average of scores from all projects for the date defined could not be retrieved') + loggerService.error('GET AVERAGE PROJECT SCORES - Average of scores from all projects for the date defined could not be retrieved') return res.status(400).json({ error: error.message }) }) })) @@ -888,18 +943,18 @@ app.post('/api/project/all', asyncMiddleware(async (req, res, _next) => { const filterName = req.query.filterName ?? null const sortBy = req.body.sortBy ?? null const filterScore = req.body.filterScore ?? null - console.log('GET PROJECTS SCORES - Retrieve scores for each project') + loggerService.info('GET PROJECTS SCORES - Retrieve scores for each project') projectService.getAllProjectInformations(date, sortBy, filterName, filterScore) .then((result) => { - console.log('GET PROJECTS SCORES - Average scores for each project retrieved') + loggerService.info('GET PROJECTS SCORES - Average scores for each project retrieved') return res.status(200).json(result) }).catch((error) => { - console.error(error) + loggerService.error(error) if (error instanceof SystemError) { - console.log('GET PROJECTS SCORES - Retrieve scores for each project encountered an error') + loggerService.info('GET PROJECTS SCORES - Retrieve scores for each project encountered an error') return res.status(500).send() } - console.log('GET PROJECT SCORES - Average scores for each each project could not be retrieved') + loggerService.info('GET PROJECT SCORES - Average scores for each each project could not be retrieved') return res.status(400).json({ error: error.message }) }) })) @@ -927,15 +982,15 @@ app.post('/api/project/all', asyncMiddleware(async (req, res, _next) => { */ app.get('/api/bestPractices/project', asyncMiddleware(async (req, res, _next) => { const projectName = req.query.projectName - console.log('GET BEST PRACTICES PROJECT - retrieve best practices analysis for project ' + projectName) - retrieveBestPracticesService.getProjectAnalysis(projectName) + loggerService.info('GET BEST PRACTICES PROJECT - retrieve best practices analysis for project ' + projectName) + retrieveBestPracticesService.getProjectAnalysis(projectName, res) .then((results) => { - console.log('GET BEST PRACTICES PROJECT - Best practices for project retrieved') + loggerService.info('GET BEST PRACTICES PROJECT - Best practices for project retrieved') return res.status(200).json(results) }) .catch((error) => { - console.error(error) - console.error('GET BEST PRACTICES PROJECT - retrieve best practices analysis for project ' + projectName + ' encountered an error') + loggerService.error(error) + loggerService.error('GET BEST PRACTICES PROJECT - retrieve best practices analysis for project ' + projectName + ' encountered an error') return res.status(500).send() }) })) @@ -970,15 +1025,15 @@ app.get('/api/bestPractices/project', asyncMiddleware(async (req, res, _next) => app.post('/api/bestPractices/url', asyncMiddleware(async (req, res, _next) => { const projectName = req.body.projectName const urlName = req.body.urlName - console.log(`GET BEST PRACTICES URL - retrieve best practices analysis for url ${urlName} into project ${projectName}`) + loggerService.info(`GET BEST PRACTICES URL - retrieve best practices analysis for url ${urlName} into project ${projectName}`) retrieveBestPracticesService.getUrlBestPractices(projectName, urlName) .then((results) => { - console.log('GET BEST PRACTICES URL - Best practices for url retrieved') + loggerService.info('GET BEST PRACTICES URL - Best practices for url retrieved') return res.status(200).json(results) }) .catch((error) => { - console.error(error) - console.log(`GET BEST PRACTICES URL - retrieve best practices analysis for url ${urlName} into project ${projectName} encountered an error`) + loggerService.error(error) + loggerService.info(`GET BEST PRACTICES URL - retrieve best practices analysis for url ${urlName} into project ${projectName} encountered an error`) return res.status(500).send() }) })) @@ -1020,7 +1075,7 @@ app.post('/api/crawl', asyncMiddleware(async (req, res, _next) => { const saveUrls = req.body.saveUrls const username = req.body.username const password = req.body.password - console.log(`CRAWLER - Running crawler from ${mainUrl}`) + loggerService.info(`CRAWLER - Running crawler from ${mainUrl}`) crawlerService.launchCrawl(projectName, mainUrl, saveUrls, username, password) return res.status(202).send() })) @@ -1047,15 +1102,15 @@ app.post('/api/crawl', asyncMiddleware(async (req, res, _next) => { */ app.get('/api/crawl', asyncMiddleware(async (req, res, _next) => { const projectName = req.query.projectName - console.log(`CRAWLER - Retrieve all urls crawled for ${projectName}`) + loggerService.info(`CRAWLER - Retrieve all urls crawled for ${projectName}`) crawlerService.retrieveCrawledUrl(projectName) .then((results) => { - console.log(`CRAWLER - ${results.length} URLs retrieved for project ${projectName}`) + loggerService.info(`CRAWLER - ${results.length} URLs retrieved for project ${projectName}`) return res.status(200).json(results) }) .catch((error) => { - console.error(error) - console.error(`CRAWLER - Retrieve all urls crawled for ${projectName} encountered an error`) + loggerService.error(error) + loggerService.error(`CRAWLER - Retrieve all urls crawled for ${projectName} encountered an error`) return res.status(500).send() }) })) @@ -1092,19 +1147,19 @@ app.get('/api/crawl', asyncMiddleware(async (req, res, _next) => { app.post('/api/procedure', asyncMiddleware(async (req, res, _next) => { const projectName = req.body.projectName const selectedProcedure = req.body.selectedProcedure - console.log(`POST PROCEDURE - Save procedure ${selectedProcedure} for project ${projectName}`) + loggerService.info(`POST PROCEDURE - Save procedure ${selectedProcedure} for project ${projectName}`) procedureService.saveProcedure(projectName, selectedProcedure) .then(() => { - console.log(`POST PROCEDURE - Procedure for project ${projectName} saved`) + loggerService.info(`POST PROCEDURE - Procedure for project ${projectName} saved`) return res.status(200).send() }) .catch((error) => { - console.error(error) + loggerService.error(error) if (error instanceof SystemError) { - console.error(`POST PROCEDURE - Save procedure ${selectedProcedure} for project ${projectName} encountered an error`) + loggerService.error(`POST PROCEDURE - Save procedure ${selectedProcedure} for project ${projectName} encountered an error`) return res.status(500).send() } - console.error(`POST PROCEDURE PROJECT - Procedure for project ${projectName} could not be saved because procedure is incorrect`) + loggerService.error(`POST PROCEDURE PROJECT - Procedure for project ${projectName} could not be saved because procedure is incorrect`) return res.status(400).json({ error: error.message }) }) })) @@ -1131,34 +1186,34 @@ app.post('/api/procedure', asyncMiddleware(async (req, res, _next) => { */ app.get('/api/procedure', asyncMiddleware(async (req, res, _next) => { const projectName = req.query.projectName - console.log(`GET PROCEDURE - Get Procedure for project ${projectName}`) + loggerService.info(`GET PROCEDURE - Get Procedure for project ${projectName}`) procedureService.getProcedure(projectName) .then((procedure) => { - console.log(`GET PROCEDURE - Project ${projectName} retrieved`) + loggerService.info(`GET PROCEDURE - Project ${projectName} retrieved`) return res.status(200).json(procedure) }) .catch((error) => { - console.error(error) - console.error(`GET PROCEDURE - Get Procedure for project ${projectName} encountered an error`) + loggerService.error(error) + loggerService.error(`GET PROCEDURE - Get Procedure for project ${projectName} encountered an error`) return res.status(500).send() }) })) app.post('/api/export', asyncMiddleware(async (req, res, _next) => { const projectName = req.body.projectName - console.log(`POST EXCEL - audit for project ${projectName} to be retrieved`) - exportAuditService.exportAudit(projectName) + loggerService.info(`POST EXCEL - audit for project ${projectName} to be retrieved`) + exportAuditService.exportAudit(projectName, res) .then((auditExported) => { - console.log(`POST EXCEL - Excel export for project ${projectName} has been completed`) + loggerService.info(`POST EXCEL - Excel export for project ${projectName} has been completed`) return res.status(200).send(auditExported) }) .catch((error) => { - console.error(error) + loggerService.error(error) if (error instanceof SystemError) { - console.log(`POST EXCEL - audit for project ${projectName} to be retrieved encountered an error`) + loggerService.info(`POST EXCEL - audit for project ${projectName} to be retrieved encountered an error`) return res.status(500).send() } - console.log(`POST EXCEL PROJECT - Excel export for project ${projectName} could not be resolved`) + loggerService.info(`POST EXCEL PROJECT - Excel export for project ${projectName} could not be resolved`) return res.status(400).json({ error: error.message }) }) })) @@ -1179,10 +1234,10 @@ app.post('/api/export', asyncMiddleware(async (req, res, _next) => { */ app.get('/api/version', asyncMiddleware(async (_req, res, _next) => { try { - console.log('GET VERSION - Version of Ecosonar retrieved') + loggerService.info('GET VERSION - Version of Ecosonar retrieved') return res.status(200).json({ version: packageJson.version }) } catch (error) { - console.error('GET VERSION - Version of Ecosonar could not be retrieved') + loggerService.error('GET VERSION - Version of Ecosonar could not be retrieved') return res.status(400).json({ error: error.message }) } })) @@ -1202,14 +1257,14 @@ app.get('/api/version', asyncMiddleware(async (_req, res, _next) => { * description: Documentation could not be retrieved. */ app.get('/api/best-practices-rules', asyncMiddleware(async (req, res, _next) => { - console.log('GET BEST PRACTICES - Best practices rules to be retrieved') + loggerService.info('GET BEST PRACTICES - Best practices rules to be retrieved') try { const bestPracticesRules = bestPracticesServices.getAllBestPracticesRules() - console.log('GET BEST PRACTICES - Best practices rules has been retrieved') + loggerService.info('GET BEST PRACTICES - Best practices rules has been retrieved') return res.status(200).send(bestPracticesRules) } catch (error) { - console.error('GET BEST PRACTICES - Best practices rules could not be retrieved') + loggerService.error('GET BEST PRACTICES - Best practices rules could not be retrieved') return res.status(400).json({ error: error.message }) } })) @@ -1236,15 +1291,189 @@ app.get('/api/best-practices-rules', asyncMiddleware(async (req, res, _next) => */ app.delete('/api/project', asyncMiddleware(async (req, res, _next) => { const projectName = req.query.projectName - console.log(`DELETE PROJECT - Delete project ${projectName}`) + loggerService.info(`DELETE PROJECT - Delete project ${projectName}`) projectService.deleteProject(projectName) .then(() => { - console.log(`DELETE PROJECT - Project ${projectName} deletion succeeded`) + loggerService.info(`DELETE PROJECT - Project ${projectName} deletion succeeded`) return res.status(200).send() }) .catch((error) => { - console.error(error) - console.error(`DELETE PROJECT - Delete project ${projectName} encountered an error`) + loggerService.error(error) + loggerService.error(`DELETE PROJECT - Delete project ${projectName} encountered an error`) + return res.status(500).send() + }) +})) + +/** + * @swagger + * /api/logs: + * get: + * tags: + * - "EcoSonar logs" + * summary: "Get logs of Ecosonar" + * description: Retrieve the logs of Ecosonar server. + * responses: + * 200: + * description: Success. + * 500: + * description: Error retrieving logs. + */ +app.get('/api/logs', (req, res) => { + loggerService.query({ order: 'desc', limit: 100 }, + (err, result) => { + if (err) { + res.status(500).send({ + error: 'Error retrieving logs' + }); + } else { + + fs.readFile('\app.log', 'utf8', (err, data) => { + if (err) { + console.error(err); + return; + } + console.log(data); + res.send(data); + }); + + } + }); +}); + +// API CONFIGURATION +/** + * @swagger + * /api/configuration: + * post: + * tags: + * - "Project Configuration" + * summary: "Add configuration for project" + * description: Update the different modules/analysis to be used + * parameters: + * - name: projectName + * in: body + * description: The name of the project + * required: true + * schema: + * type: object + * properties: + * projectName: + * type: string + * w3c: + * type: string + * carbon: + * type: string + * responses: + * 200: + * description: Success. + * 400: + * description: Procedure could not be updated. + * 500: + * description: System Error. + */ +app.post('/api/configuration', asyncMiddleware(async (req, res, _next) => { + const projectName = req.body.projectName + const w3c = req.body.w3c + const carbon = req.body.carbon + loggerService.info(`POST configuration - Insert configuration for project ${projectName}`) + configurationService.saveConfiguration(projectName, w3c, carbon) + .then(() => { + loggerService.info(`POST configuration - configuration for project ${projectName} saved`) + return res.status(200).send() + }) + .catch((error) => { + loggerService.error(error) + if (error instanceof SystemError) { + loggerService.error(`POST configuration - Save configuration for project ${projectName} encountered an error`) + return res.status(500).send() + } + loggerService.error(`POST configuration PROJECT - configuration for project ${projectName} could not be saved because procedure is incorrect`) + return res.status(400).json({ error: error.message }) + }) +})) + +/** + * @swagger + * /api/configuration: + * put: + * tags: + * - "Project Configuration" + * summary: "Add configuration for project" + * description: Update the different modules/analysis to be used + * parameters: + * - name: projectName + * in: body + * description: The name of the project + * required: true + * schema: + * type: object + * properties: + * projectName: + * type: string + * w3c: + * type: string + * carbon: + * type: string + * responses: + * 200: + * description: Success. + * 400: + * description: Procedure could not be updated. + * 500: + * description: System Error. + */ +app.put('/api/configuration', asyncMiddleware(async (req, res, _next) => { + const projectName = req.body.projectName + const w3c = req.body.w3c + const carbon = req.body.carbon + loggerService.info(`PUT configuration - Modify configuration for project ${projectName}`) + configurationService.updateConfiguration(res, projectName, w3c, carbon) + .then(() => { + loggerService.info(`PUT configuration - configuration for project ${projectName} saved`) + return res.status(200).send() + }) + .catch((error) => { + loggerService.error(error) + if (error instanceof SystemError) { + loggerService.error(`PUT configuration - Modify configuration for project ${projectName} encountered an error`) + return res.status(500).send() + } + loggerService.error(`PUT configuration PROJECT - Modify configuration for project ${projectName} could not be saved because procedure is incorrect`) + return res.status(400).json({ error: error.message }) + }) +})) + +/** + * @swagger + * /api/configuration: + * get: + * tags: + * - "Project Configuration" + * summary: "Get configuration for project" + * description: Retrieve the configuration for a given project. + * parameters: + * - name: projectName + * in: query + * description: The name of the project + * required: true + * type: string + * responses: + * 200: + * description: Success. + * 500: + * description: System Error. + */ +app.get('/api/configuration', asyncMiddleware(async (req, res, _next) => { + const projectName = req.query.projectName + loggerService.info(`GET CONFIGURATION - Get configuration for project ${projectName}`) + configurationService.getConfiguration(projectName, res) + .then((config) => { + loggerService.info(`GET CONFIGURATION - Project ${projectName} retrieved`) + return res.status(200).json(config) + }) + .catch((error) => { + loggerService.error(error) + loggerService.error(`GET CONFIGURATION - Get configuration for project ${projectName} encountered an error`) return res.status(500).send() }) })) diff --git a/EcoSonar-API/server.js b/EcoSonar-API/server.js index 3b99e07..4526be9 100644 --- a/EcoSonar-API/server.js +++ b/EcoSonar-API/server.js @@ -1,5 +1,6 @@ import http from 'http' import app from './routes/app.js' +import loggerService from './loggers/traces.js' import database from './configuration/database.js' // connection BDD @@ -45,7 +46,7 @@ server.on('error', errorHandler) server.on('listening', () => { const address = server.address() const bind = typeof address === 'string' ? 'pipe ' + address : 'port ' + port - console.log('Listening on ' + bind) + loggerService.info('Listening on ' + bind) }) server.listen(port) diff --git a/EcoSonar-API/services/W3C/w3cAnalysis.js b/EcoSonar-API/services/W3C/w3cAnalysis.js index a9878f9..c8bb42d 100644 --- a/EcoSonar-API/services/W3C/w3cAnalysis.js +++ b/EcoSonar-API/services/W3C/w3cAnalysis.js @@ -1,6 +1,7 @@ import validator from 'html-validator' import puppeteer from 'puppeteer' import authenticationService from '../authenticationService.js' +import loggerService from '../../loggers/traces.js' class W3cAnalysis {} @@ -17,17 +18,17 @@ W3cAnalysis.prototype.w3cAnalysisWithAPI = async function (urlsList) { const options = { url } - console.log(`W3C ANALYSIS : launching analyse for ${url} `) + loggerService.info(`W3C ANALYSIS : launching analyse for ${url} `) const resultForUrl = await validator(options) if (resultForUrl.messages[0].type === 'non-document-error') { - console.error('\x1b[31m%s\x1b[0m', `W3C ANALYSIS : URL ${url} cannot be found`) - console.error('\x1b[31m%s\x1b[0m', `W3C ANALYSIS : ${url} has been removed from result `) + loggerService.error('\x1b[31m%s\x1b[0m', `W3C ANALYSIS : URL ${url} cannot be found`) + loggerService.error('\x1b[31m%s\x1b[0m', `W3C ANALYSIS : ${url} has been removed from result `) } else { reports.push(resultForUrl) - console.log(`W3C ANALYSIS : Analyse ended for ${url} `) + loggerService.info(`W3C ANALYSIS : Analyse ended for ${url} `) } } catch (error) { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) } } return reports @@ -87,8 +88,8 @@ W3cAnalysis.prototype.w3cAnalysisLocal = async function (urlsList, projectName, htmlResults.push({ url, html }) } catch { - console.error('\x1b[31m%s\x1b[0m', `W3C ANALYSIS : An error happened on URL ${url}`) - console.error('\x1b[31m%s\x1b[0m', `W3C ANALYSIS : ${url} has been removed from result `) + loggerService.error('\x1b[31m%s\x1b[0m', `W3C ANALYSIS : An error happened on URL ${url}`) + loggerService.error('\x1b[31m%s\x1b[0m', `W3C ANALYSIS : ${url} has been removed from result `) } await page.close() } @@ -101,24 +102,24 @@ W3cAnalysis.prototype.w3cAnalysisLocal = async function (urlsList, projectName, data: htmlResult.html, isFragment: false } - console.log(`W3C ANALYSIS : launching analyse for ${htmlResult.url} `) + loggerService.info(`W3C ANALYSIS : launching analyse for ${htmlResult.url} `) const resultForHtml = await validator(options) resultForUrlsList.push(htmlResult.url, resultForHtml) - console.log(`W3C ANALYSIS : Analyse ended for ${htmlResult.url} `) + loggerService.info(`W3C ANALYSIS : Analyse ended for ${htmlResult.url} `) } catch (error) { - console.error('\x1b[31m%s\x1b[0m', `W3C ANALYSIS : An error happened on URL ${htmlResult.url}`) - console.error(error) + loggerService.error('\x1b[31m%s\x1b[0m', `W3C ANALYSIS : An error happened on URL ${htmlResult.url}`) + loggerService.error(error) } } return resultForUrlsList } else { - console.warn('Could not log in, audit for w3c analysis is skipped') + loggerService.warn('Could not log in, audit for w3c analysis is skipped') } } catch (error) { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) } finally { - console.log('Closing browser for w3cAnalysis'); + loggerService.info('Closing browser for w3cAnalysis'); await browser.close() } } diff --git a/EcoSonar-API/services/analysisService.js b/EcoSonar-API/services/analysisService.js index 2cc259b..c767f93 100644 --- a/EcoSonar-API/services/analysisService.js +++ b/EcoSonar-API/services/analysisService.js @@ -11,6 +11,8 @@ import w3cAnalysis from '../services/W3C/w3cAnalysis.js' import w3cRepository from '../dataBase/w3cRepository.js' import formatW3cBestPractices from './format/formatW3cBestPractices.js' import formatW3cAnalysis from './format/formatW3cAnalysis.js' +import loggerService from '../loggers/traces.js' +import configurationRepository from '../dataBase/configurationRepository.js' class AnalysisService {} @@ -20,10 +22,29 @@ class AnalysisService {} * @param {boolean} autoscroll is used to enable autoscrolling for each tab opened during analysis */ AnalysisService.prototype.insert = async function (projectName, username, password, autoscroll) { - const allowExternalAPI = process.env.ECOSONAR_ENV_ALLOW_EXTERNAL_API || 'false' + let allowW3c = false; let urlProjectList = [] let reports = [] let systemError = false + let idKey = null; + + await urlsProjectRepository.getUrlProject(projectName) + .then((result) => { + idKey = result.idKey }) + .catch(() => { systemError = true }) + + configurationRepository.findConfiguration(idKey) + .then((existingConfig) => { + if (existingConfig === null) { + resolve({ Configuration: '' }) + } + allowW3c = existingConfig.W3C; + resolve({ Configuration: existingConfig.W3C }) + }).catch((err) => { + loggerService.error(err) + }) + + await urlsProjectRepository.findAll(projectName) .then((urls) => { urlProjectList = urls }) @@ -32,74 +53,72 @@ AnalysisService.prototype.insert = async function (projectName, username, passwo }) if (systemError || urlProjectList.length === 0) { - console.warn('GREENIT INSERT - project has no url to do the audit. Audit stopped') + loggerService.warn('GREENIT INSERT - project has no url to do the audit. Audit stopped') } else { - reports = await launchAuditsToUrlList(urlProjectList, projectName, allowExternalAPI, username, password, autoscroll) + reports = await launchAuditsToUrlList(urlProjectList, projectName, allowW3c, username, password, autoscroll) const reportsFormatted = formatAuditsToBeSaved(reports, urlProjectList) - greenItRepository .insertAll(reportsFormatted.greenitAnalysisFormatted) .then(() => { - console.log('GREENIT INSERT - analysis has been inserted') + loggerService.info('GREENIT INSERT - analysis has been inserted') }) .catch(() => { - console.error('GREENIT INSERT - greenit insertion failed') + loggerService.info('GREENIT INSERT - greenit insertion failed') }) lighthouseRepository .insertAll(reportsFormatted.analysisLighthouseFormatted) .then(() => { - console.log('LIGHTHOUSE INSERT - analysis has been inserted') + loggerService.info('LIGHTHOUSE INSERT - analysis has been inserted') }) .catch(() => { - console.error('LIGHTHOUSE INSERT - lighthouse insertion failed') + loggerService.error('LIGHTHOUSE INSERT - lighthouse insertion failed') }) - if (allowExternalAPI === 'true') { + if (allowW3c === 'true') { w3cRepository.insertAll(reportsFormatted.w3cAnalysisFormatted) .then(() => { - console.log('W3C INSERT - analysis has been inserted') + loggerService.info('W3C INSERT - analysis has been inserted') }) .catch(() => { - console.error('W3C INSERT - w3c insertion failed') + loggerService.error('W3C INSERT - w3c insertion failed') }) } bestPracticesRepository .insertBestPractices(reportsFormatted.bestPracticesFormatted) .then(() => { - console.log('BEST PRACTICES INSERT - best practices have been inserted') + loggerService.info('BEST PRACTICES INSERT - best practices have been inserted') }) .catch(() => { - console.error('BEST PRACTICES INSERT : best practices insertion failed') + loggerService.error('BEST PRACTICES INSERT : best practices insertion failed') }) } } -async function launchAuditsToUrlList (urlProjectList, projectName, allowExternalAPI, username, password, autoscroll) { +async function launchAuditsToUrlList (urlProjectList, projectName, allowW3c, username, password, autoscroll) { let reportsGreenit = [] let reportsLighthouse = [] let reportsW3c = [] - const urlList = urlProjectList.map((url) => url.urlName) try { reportsGreenit = await analyse(urlList, projectName, username, password, autoscroll) } catch (error) { - console.error(error) + loggerService.error(error) } try { reportsLighthouse = await lighthouseAnalysis(urlList, projectName, username, password) } catch (error) { - console.error(error) + loggerService.error(error) } - if (allowExternalAPI === 'true') { + if (allowW3c === 'true') { try { reportsW3c = await w3cAnalysis.w3cAnalysisWithAPI(urlList) } catch (error) { - console.error(error) + loggerService.error(error) } } else { - console.warn('INSERT ANALYSIS - Usage of external API is not allowed, W3C analysis skipped') + loggerService.warn('INSERT ANALYSIS - Usage of external API is not allowed, W3C analysis skipped') } return { reportsGreenit, diff --git a/EcoSonar-API/services/authenticationService.js b/EcoSonar-API/services/authenticationService.js index 2f80a23..b716177 100644 --- a/EcoSonar-API/services/authenticationService.js +++ b/EcoSonar-API/services/authenticationService.js @@ -1,6 +1,7 @@ import { waitForSelectors, applyChange } from '../utils/playSelectors.js' import loginProxyConfigurationService from './loginProxyConfigurationService.js' import viewPortParams from '../utils/viewportParams.js' +import loggerService from '../loggers/traces.js' class AuthenticationService { } @@ -11,7 +12,7 @@ AuthenticationService.prototype.loginIfNeeded = async function (browser, project loginInformations = login }) .catch(() => { - console.log('LOGIN CREDENTIALS - no login saved for this project') + loggerService.info('LOGIN CREDENTIALS - no login saved for this project') }) if (loginInformations) { // Go to login url @@ -50,11 +51,11 @@ async function loginOnOnePage (page, loginInformations) { await page.waitForNavigation() return true } catch (error) { - console.error(error.message) + loggerService.error(error.message) if (error.message === 'Navigation timeout of 30000 ms exceeded') { return true } - console.error('Could not log in') + loggerService.error('Could not log in') return false } } @@ -85,11 +86,11 @@ async function loginOnMultiPages (page, loginInformations) { await page.waitForNavigation() return true } catch (error) { - console.error(error.message) + loggerService.error(error.message) if (error.message === 'Navigation timeout of 10000 ms exceeded' || error.message === 'Navigation timeout of 30000 ms exceeded') { return true } - console.error('Could not log in') + loggerService.error('Could not log in') return false } } @@ -101,7 +102,7 @@ AuthenticationService.prototype.useProxyIfNeeded = async function (projectName) proxyConfiguration = '--proxy-server=' + res.ipAddress + ':' + res.port }) .catch(() => { - console.log('PROXY CREDENTIALS - no proxy saved for this project') + loggerService.info('PROXY CREDENTIALS - no proxy saved for this project') }) return proxyConfiguration } diff --git a/EcoSonar-API/services/configurationService.js b/EcoSonar-API/services/configurationService.js new file mode 100644 index 0000000..dfe5bfb --- /dev/null +++ b/EcoSonar-API/services/configurationService.js @@ -0,0 +1,136 @@ +import configurationRepository from '../dataBase/configurationRepository.js' +import urlsProjectRepository from '../dataBase/urlsProjectRepository.js' +import SystemError from '../utils/SystemError.js' +import loggerService from '../loggers/traces.js' + +class ConfigurationService { } + +ConfigurationService.prototype.saveConfiguration = async function (projectName, w3cBool, carbonBool) { + let systemError = false + let idKey = null; + let configExist = false; + + await urlsProjectRepository.getUrlProject(projectName) + .then((result) => { + idKey = result.idKey }) + .catch(() => { systemError = true }) + + if (idKey == null) { + res.status(404).json({ error: 'No project named ' + projectName + ' found' }) + } + + loggerService.info(`GET CONFIGURATION - Checking if project ${projectName} already has a config`) + await configurationRepository.findConfiguration(idKey) + .then((result) => { + if (result != null) { + configExist = true + loggerService.info(`GET CONFIGURATION - Project ${projectName} config present`) + } + }) + + if (configExist == false) { + loggerService.info(`GET CONFIGURATION - Creating a config for the project ${projectName}`) + return new Promise((resolve, reject) => { + if (!systemError && idKey !== null) { + configurationRepository.insertConfiguration(idKey, w3cBool, carbonBool) + .then(() => resolve()) + .catch((error) => reject(error)) + } + else { + reject(new SystemError()) + }}) + } else { + return new Promise((resolve, reject) => { + configurationRepository.findConfiguration(idKey) + .then((existingConfig) => { + if (existingConfig === null) { + resolve({ Configuration: '' }) + } + resolve({ Configuration: existingConfig }) + }).catch((err) => { + reject(err) + }) + }) + } +} + +ConfigurationService.prototype.updateConfiguration = async function (res, projectName, w3cBool, carbonBool) { + let systemError = false + let idKey = null; + + await urlsProjectRepository.getUrlProject(projectName) + .then((result) => { + idKey = result.idKey }) + .catch(() => { systemError = true }) + + if (idKey == null) { + res.status(404).json({ error: 'No project named ' + projectName + ' found' }) + } + return new Promise((resolve, reject) => { + if (!systemError && idKey !== null) { + configurationRepository.updateConfiguration(idKey, w3cBool, carbonBool) + .then(() => resolve()) + .catch((error) => reject(error)) + } + else { + reject(new SystemError()) + } + }) +} + +ConfigurationService.prototype.getConfiguration = async function (projectName, res) { + + let systemError = false + let idKey = null; + + await urlsProjectRepository.getUrlProject(projectName) + .then((result) => { + idKey = result.idKey }) + .catch(() => { systemError = true }) + + if (idKey == null) { + res.status(404).json({ error: 'No project named ' + projectName + ' found' }) + } + + return new Promise((resolve, reject) => { + configurationRepository.findConfiguration(idKey) + .then((existingConfig) => { + if (existingConfig === null) { + resolve({ Configuration: '' }) + } + resolve({ Configuration: existingConfig }) + }).catch((err) => { + reject(err) + }) + }) +} + +ConfigurationService.prototype.getW3CConfig = async function (projectName, res) { + + let systemError = false + let idKey = null; + + await urlsProjectRepository.getUrlProject(projectName) + .then((result) => { + idKey = result.idKey }) + .catch(() => { systemError = true }) + + if (idKey == null) { + res.status(404).json({ error: 'No project named ' + projectName + ' found' }) + } + + return new Promise((resolve, reject) => { + configurationRepository.findConfiguration(idKey) + .then((existingConfig) => { + if (existingConfig === null) { + resolve({ Configuration: '' }) + } + resolve({ Configuration: existingConfig.W3C }) + }).catch((err) => { + reject(err) + }) + }) +} + +const configurationService = new ConfigurationService() +export default configurationService diff --git a/EcoSonar-API/services/crawler/crawlerService.js b/EcoSonar-API/services/crawler/crawlerService.js index e2850fc..483c9d3 100644 --- a/EcoSonar-API/services/crawler/crawlerService.js +++ b/EcoSonar-API/services/crawler/crawlerService.js @@ -1,4 +1,4 @@ -import cheerio from 'cheerio' +import * as cheerio from 'cheerio' import puppeteer from 'puppeteer' import authenticationService from '../authenticationService.js' import urlConfigurationService from '../urlConfigurationService.js' diff --git a/EcoSonar-API/services/encryptionService.js b/EcoSonar-API/services/encryptionService.js new file mode 100644 index 0000000..fb4aa93 --- /dev/null +++ b/EcoSonar-API/services/encryptionService.js @@ -0,0 +1,44 @@ +import crypto from 'crypto' + +// NOTE: encryption Key must be 256 bits (32 characters) +// e.g xfn9P8L9rIpKtWKj68IZ3G865WfdYXNY + +const secret_key = process.env.ENCRYPTION_KEY || 'xfn9P8L9rIpKtWKj68IZ3G865WfdYXNY' +const IV_LENGTH = 16; + +export function aesEncrypt(text) { + let iv = crypto.randomBytes(IV_LENGTH); + let cipher = crypto.createCipheriv( + "aes-256-cbc", + Buffer.from(secret_key), + iv + ); + + let encrypted = cipher.update(text); + + encrypted = Buffer.concat([encrypted, cipher.final()]); + + return iv.toString("hex") + ":" + encrypted.toString("hex"); +} + +export function aesDecrypt(text) { + let textParts = text.split(":"); + let iv = Buffer.from(textParts.shift(), "hex"); + let encryptedText = Buffer.from(textParts.join(":"), "hex"); + let decipher = crypto.createDecipheriv( + "aes-256-cbc", + Buffer.from(secret_key), + iv + ); + + // By default node uses PKCS padding, but Python uses null-byte + // padding instead. So calling cipher.setAutoPadding(false); after + // you create the decipher instance will make it work as expected: + //decipher.setAutoPadding(false); + + let decrypted = decipher.update(encryptedText); + + decrypted = Buffer.concat([decrypted, decipher.final()]); + + return decrypted.toString(); +} \ No newline at end of file diff --git a/EcoSonar-API/services/exportAuditService.js b/EcoSonar-API/services/exportAuditService.js index ec9d63a..31eacdb 100644 --- a/EcoSonar-API/services/exportAuditService.js +++ b/EcoSonar-API/services/exportAuditService.js @@ -2,10 +2,11 @@ import exceljs from 'exceljs' import retrieveAnalysisService from './retrieveAnalysisService.js' import urlConfigurationService from './urlConfigurationService.js' import SystemError from '../utils/SystemError.js' +import loggerService from '../loggers/traces.js' class ExportAuditService { } -ExportAuditService.prototype.exportAudit = async function (projectName) { +ExportAuditService.prototype.exportAudit = async function (projectName, res) { let urls = [] let analysis = null @@ -17,7 +18,7 @@ ExportAuditService.prototype.exportAudit = async function (projectName) { return new SystemError() }) - await retrieveAnalysisService.getProjectAnalysis(projectName) + await retrieveAnalysisService.getProjectAnalysis(projectName, res) .then((results) => { analysis = results }).catch(() => { @@ -118,12 +119,12 @@ ExportAuditService.prototype.exportAudit = async function (projectName) { formatExcelSheet(url, index + 1, workbook, projectName, analysisForUrl, dateLastAnalysis) }) .catch(() => { - console.error('Analysis for URL ' + url + ' could not be resolved ') + loggerService.error('Analysis for URL ' + url + ' could not be resolved ') }) } return workbook.xlsx.writeBuffer() } catch (err) { - console.error(err) + loggerService.error(err) return new Error('Could not export Audit to Excel for projet ' + projectName) } } diff --git a/EcoSonar-API/services/format/formatGreenItAnalysis.js b/EcoSonar-API/services/format/formatGreenItAnalysis.js index 9604a87..d812535 100644 --- a/EcoSonar-API/services/format/formatGreenItAnalysis.js +++ b/EcoSonar-API/services/format/formatGreenItAnalysis.js @@ -1,5 +1,6 @@ import ecoIndexCalculationService from '../ecoIndexCalculationService.js' import formatCompliance from './formatCompliance.js' +import loggerService from '../../loggers/traces.js' class FormatGreenItAnalysis {} @@ -14,8 +15,8 @@ FormatGreenItAnalysis.prototype.greenItUrlAnalysisFormatted = function (analysis grade: analysis.grade } } catch (err) { - console.error(err) - console.error('GREENIT - error during the formatting of project analysis') + loggerService.error(err) + loggerService.error('GREENIT - error during the formatting of project analysis') } return formattedAnalysis } @@ -54,8 +55,8 @@ FormatGreenItAnalysis.prototype.greenItProjectLastAnalysisFormatted = function ( grade: formatCompliance.getEcodesignGrade(ecoIndex / count) } } catch (err) { - console.error(err) - console.error('GREENIT - error during the formatting of project analysis') + loggerService.error(err) + loggerService.error('GREENIT - error during the formatting of project analysis') } return analysis } @@ -99,8 +100,8 @@ FormatGreenItAnalysis.prototype.formatDeploymentsForGraphs = function (deploymen delete i.numberOfValues } } catch (error) { - console.error(error) - console.error('GREENIT - error during the formatting of project analysis') + loggerService.error(error) + loggerService.error('GREENIT - error during the formatting of project analysis') } return finalDeployment diff --git a/EcoSonar-API/services/format/formatLighthouseAnalysis.js b/EcoSonar-API/services/format/formatLighthouseAnalysis.js index c3076ff..83addeb 100644 --- a/EcoSonar-API/services/format/formatLighthouseAnalysis.js +++ b/EcoSonar-API/services/format/formatLighthouseAnalysis.js @@ -1,4 +1,5 @@ import formatCompliance from './formatCompliance.js' +import loggerService from '../../loggers/traces.js' class FormatLighthouseAnalysis {} @@ -41,8 +42,8 @@ FormatLighthouseAnalysis.prototype.lighthouseUrlAnalysisFormatted = function (an } } } catch (err) { - console.error(err) - console.error('LIGHTHOUSE - error during the formatting of project analysis') + loggerService.error(err) + loggerService.error('LIGHTHOUSE - error during the formatting of project analysis') } return formattedAnalysis } @@ -147,8 +148,8 @@ FormatLighthouseAnalysis.prototype.lighthouseProjectLastAnalysisFormatted = func } } } catch (err) { - console.error(err) - console.error('LIGHTHOUSE - error during the formatting of project analysis') + loggerService.error(err) + loggerService.error('LIGHTHOUSE - error during the formatting of project analysis') } return analysis @@ -176,8 +177,8 @@ FormatLighthouseAnalysis.prototype.lighthouseAnalysisFormattedDeployments = func }) deployments = this.formatDeploymentsForGraphs(deployments) } catch (err) { - console.error(err) - console.error('LIGHTHOUSE - error during the formatting of project analysis') + loggerService.error(err) + loggerService.error('LIGHTHOUSE - error during the formatting of project analysis') } return deployments } @@ -235,8 +236,8 @@ FormatLighthouseAnalysis.prototype.formatDeploymentsForGraphs = function (deploy delete i.numberOfValues } } catch (err) { - console.error(err) - console.error('LIGHTHOUSE - error during the formatting of project analysis') + loggerService.error(err) + loggerService.error('LIGHTHOUSE - error during the formatting of project analysis') } return finalDeployment diff --git a/EcoSonar-API/services/format/formatLighthouseBestPractices.js b/EcoSonar-API/services/format/formatLighthouseBestPractices.js index bb4eb59..448189d 100644 --- a/EcoSonar-API/services/format/formatLighthouseBestPractices.js +++ b/EcoSonar-API/services/format/formatLighthouseBestPractices.js @@ -1,6 +1,7 @@ import enumAudits from '../../utils/enumAudits.js' import formatBestPracticesForProject from '../format/formatBestPracticesForProject.js' import metricsCalculate from '../../utils/metricsCalculate.js' +import loggerService from '../../loggers/traces.js' class FormatLighthouseBestPractices { } @@ -63,8 +64,8 @@ FormatLighthouseBestPractices.prototype.formatPerformance = function (report) { formattedReports[element] = { score: score * 100, scoreDisplayMode, description: items, auditedMetric: displayValue } } } catch (error) { - console.error('error for url ' + report.url + ' on element ' + element) - console.error(error) + loggerService.error('error for url ' + report.url + ' on element ' + element) + loggerService.error(error) } } return { ...formattedReports, url: report.url } diff --git a/EcoSonar-API/services/format/formatLighthouseMetrics.js b/EcoSonar-API/services/format/formatLighthouseMetrics.js index 1b25985..aa4adb8 100644 --- a/EcoSonar-API/services/format/formatLighthouseMetrics.js +++ b/EcoSonar-API/services/format/formatLighthouseMetrics.js @@ -1,5 +1,6 @@ import enumAudits from '../../utils/enumAudits.js' import formatCompliance from './formatCompliance.js' +import loggerService from '../../loggers/traces.js' class FormatLighthouseMetrics {} @@ -22,7 +23,7 @@ FormatLighthouseMetrics.prototype.formatLighthouseMetrics = function (reports) { formattedReports[element] = { score, displayValue, complianceLevel } } } catch (error) { - console.error(error) + loggerService.error(error) } } return formattedReports diff --git a/EcoSonar-API/services/format/formatW3cAnalysis.js b/EcoSonar-API/services/format/formatW3cAnalysis.js index 7229cff..6a6aad1 100644 --- a/EcoSonar-API/services/format/formatW3cAnalysis.js +++ b/EcoSonar-API/services/format/formatW3cAnalysis.js @@ -2,6 +2,7 @@ import formatCompliance from './formatCompliance.js' import { createRequire } from 'node:module' const require = createRequire(import.meta.url) const metricsW3c = require('../../utils/metricsW3c.json') +import loggerService from '../../loggers/traces.js' class FormatW3cAnalysis {} @@ -29,8 +30,8 @@ FormatW3cAnalysis.prototype.w3cAnalysisFormattedDeployments = function (deployme }) formattedDeployments = this.formatDeploymentsForGraphs(formattedDeployments) } catch (error) { - console.error(error) - console.error('W3C - error during the formatting of project analysis') + loggerService.error(error) + loggerService.error('W3C - error during the formatting of project analysis') } return formattedDeployments } @@ -64,8 +65,8 @@ FormatW3cAnalysis.prototype.formatDeploymentsForGraphs = function (formattedDepl // Sanitizing duplicatedDeployments finalDeployment = getUniqueListByDate(duplicatedDeployments, 'dateAnalysis') } catch (error) { - console.error(error) - console.error('W3C - error during the formatting of project analysis') + loggerService.error(error) + loggerService.error('W3C - error during the formatting of project analysis') } return finalDeployment @@ -118,8 +119,8 @@ FormatW3cAnalysis.prototype.w3cLastAnalysisFormatted = function (latestW3cAnalys dateAnalysis: latestW3cAnalysis[0].dateW3cAnalysis } } catch (error) { - console.error(error) - console.error('W3C - error during the formatting of project analysis') + loggerService.error(error) + loggerService.error('W3C - error during the formatting of project analysis') } return w3c } @@ -184,8 +185,8 @@ function formatW3c (errorsList) { } return errorsListWithoutDuplicat } catch (err) { - console.error(err) - console.error('W3C - Error during the deletion of duplicate errors for w3c analysis') + loggerService.error(err) + loggerService.error('W3C - Error during the deletion of duplicate errors for w3c analysis') } } const formatW3cAnalysis = new FormatW3cAnalysis() diff --git a/EcoSonar-API/services/format/formatW3cBestPractices.js b/EcoSonar-API/services/format/formatW3cBestPractices.js index 3ddfa88..686a510 100644 --- a/EcoSonar-API/services/format/formatW3cBestPractices.js +++ b/EcoSonar-API/services/format/formatW3cBestPractices.js @@ -1,4 +1,5 @@ import formatCompliance from './formatCompliance.js' +import loggerService from '../../loggers/traces.js' class FormatW3cBestPractices {} @@ -33,7 +34,7 @@ FormatW3cBestPractices.prototype.formatW3c = function (w3cAnalysis) { } } } catch (err) { - console.log('W3C - Error during the formatting of w3c analysis for url ' + w3cAnalysis.url) + loggerService.info('W3C - Error during the formatting of w3c analysis for url ' + w3cAnalysis.url) } } return w3cAnalysis @@ -82,8 +83,8 @@ FormatW3cBestPractices.prototype.returnFormattedW3c = function (latestW3cAnalysi } } } catch (error) { - console.log(error.message) - console.log('W3C - Error during the formatting of w3c analysis') + loggerService.info(error.message) + loggerService.info('W3C - Error during the formatting of w3c analysis') } return formattedW3cAnalysis } diff --git a/EcoSonar-API/services/greenit-analysis/analyseService.js b/EcoSonar-API/services/greenit-analysis/analyseService.js index 1eadd9f..42a44ad 100644 --- a/EcoSonar-API/services/greenit-analysis/analyseService.js +++ b/EcoSonar-API/services/greenit-analysis/analyseService.js @@ -2,6 +2,7 @@ import puppeteer from 'puppeteer' import createGreenITReports from './greenit-analysis.js' import authenticationService from '../authenticationService.js' import viewPortParams from '../../utils/viewportParams.js' +import loggerService from '../../loggers/traces.js' export default async function analyse (urlList, projectName, username, password, autoscroll) { let reports = [] @@ -14,18 +15,18 @@ export default async function analyse (urlList, projectName, username, password, ] const proxyConfiguration = await authenticationService.useProxyIfNeeded(projectName) - console.log('Get proxy successful'); + loggerService.info('Get proxy successful'); if (proxyConfiguration) { browserArgs.push(proxyConfiguration) } const userJourneyEnabled = process.env.ECOSONAR_ENV_USER_JOURNEY_ENABLED || 'false' - console.log('Finished retrieving variable ECOSONAR_ENV_USER_JOURNEY_ENABLED'); + loggerService.info('Finished retrieving variable ECOSONAR_ENV_USER_JOURNEY_ENABLED'); if (userJourneyEnabled === 'true') { - console.log('Your EcoSonar project is using user journey to audit your website, GreenIT analysis will be made into different Chromium browser for right cookies configuration') + loggerService.info('Your EcoSonar project is using user journey to audit your website, GreenIT analysis will be made into different Chromium browser for right cookies configuration') reports = await launchAllAnalysisOnDifferentBrowser(browserArgs, urlList, projectName, username, password, autoscroll) } else { - console.log('launchAllAnalysisOnSameBrowser'); + loggerService.info('launchAllAnalysisOnSameBrowser'); reports = await launchAllAnalysisOnSameBrowser(browserArgs, urlList, projectName, username, password, autoscroll) } return reports @@ -51,10 +52,10 @@ async function launchAllAnalysisOnDifferentBrowser (browserArgs, urlList, projec report = await createGreenITReports(browser, projectName, [url], autoscroll) reports = reports.concat(report) } else { - console.warn('Could not log in, audit for greenit-analysis is skipped') + loggerService.warn('Could not log in, audit for greenit-analysis is skipped') } } catch (error) { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) } finally { await closeBrowser(browser) } @@ -81,12 +82,12 @@ async function launchAllAnalysisOnSameBrowser (browserArgs, urlList, projectName // analyse each page reports = await createGreenITReports(browser, projectName, urlList, autoscroll) } else { - console.warn('Could not log in, audit for greenit-analysis is skipped') + loggerService.warn('Could not log in, audit for greenit-analysis is skipped') } } catch (error) { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) } finally { - console.log('Closing browser for launchAllAnalysisOnSameBrowser'); + loggerService.info('Closing browser for launchAllAnalysisOnSameBrowser'); await closeBrowser(browser) } return reports @@ -100,6 +101,6 @@ async function closeBrowser (browser) { } else { return Promise.resolve() } - })).catch((error) => console.error('\x1b[31m%s\x1b[0m', error)) + })).catch((error) => loggerService.error('\x1b[31m%s\x1b[0m', error)) await browser.close() } diff --git a/EcoSonar-API/services/greenit-analysis/greenit-analysis.js b/EcoSonar-API/services/greenit-analysis/greenit-analysis.js index 5b89b69..293f959 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-analysis.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-analysis.js @@ -3,6 +3,7 @@ import path from 'path' import PuppeteerHar from '../../utils/PuppeteerHar.js' import userJourneyService from '../userJourneyService.js' import viewPortParams from '../../utils/viewportParams.js' +import loggerService from '../../loggers/traces.js' export default async function createGreenITReports (browser, projectName, urlList, autoscroll) { // Concurent tab @@ -96,20 +97,21 @@ async function analyseURL (browser, projectName, url, options, autoscroll) { .then((result) => { userJourney = result }).catch((error) => { - console.log(error.message) + loggerService.info(error.message) }) if (userJourney) { ({ page, harObj } = await userJourneyService.playUserJourney(url, browser, userJourney)) - console.log('GREENIT Analysis - Page requires user journey') + loggerService.info('GREENIT Analysis - Page requires user journey') } else { ({ page, harObj } = await launchPageWithoutUserJourney(browser, url, autoscroll)) } - + try { // get ressources const client = await page.target().createCDPSession() await client.send('Page.enable') const ressourceTree = await client.send('Page.getResourceTree') + loggerService.info('Starting to pickup Resources') ressourceTree.frameTree.resources = await Promise.all( ressourceTree.frameTree.resources.map(async function (resource) { try { @@ -119,12 +121,14 @@ async function analyseURL (browser, projectName, url, options, autoscroll) { }) resource.content = contentScript.content } catch (error) { - console.error('\x1b[33m%s\x1b[0m', resource.url) - console.error('\x1b[33m%s\x1b[0m', error.message) + loggerService.error('Error catched while getting page resources') + loggerService.error('An error occured with this url : ', resource.url) + loggerService.error('Error message : ', error) } return resource }) ) + loggerService.info('Resources picked up for greenIT : ', ressourceTree.frameTree.resources) await client.detach() // get rid of chrome.i18n.getMessage not declared @@ -147,18 +151,19 @@ async function analyseURL (browser, projectName, url, options, autoscroll) { await page.evaluate((x) => (har = x), harObj.log) await page.evaluate((x) => (resources = x), ressourceTree.frameTree.resources) // launch analyse - console.log('Launch GreenIT analysis for url ' + url) + loggerService.info('Launch GreenIT analysis for url ' + url) result = await page.evaluate(async () => await launchAnalyse()) - console.log('GreenIT analysis ended for url ' + url) + loggerService.info('GreenIT analysis ended for url ' + url) page.close() result.success = true } catch (error) { - console.error('\x1b[31m%s\x1b[0m', 'Error on URL ' + url) - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('Error catched while getting anlysing page with greenIT') + loggerService.error('Error on URL : ' + url) + loggerService.error('Error 1', error) result.success = false } } catch (error) { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('Error 2 :', error) result.success = false } finally { result.url = url @@ -170,7 +175,8 @@ async function analyseURL (browser, projectName, url, options, autoscroll) { async function launchPageWithoutUserJourney (browser, url, autoscroll) { const page = await browser.newPage() - + const ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'; + page.setUserAgent(ua); await page.setViewport(viewPortParams) // disabling cache diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/analyseFrameCore.js b/EcoSonar-API/services/greenit-analysis/greenit-core/analyseFrameCore.js index 1241a96..2421f56 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/analyseFrameCore.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/analyseFrameCore.js @@ -1,5 +1,3 @@ -/* eslint-disable no-undef */ -/* eslint-disable no-unused-vars */ /* * Copyright (C) 2016 The EcoMeter authors (https://gitlab.com/ecoconceptionweb/ecometer) * Copyright (C) 2019 didierfred@gmail.com @@ -18,122 +16,114 @@ * along with this program. If not, see . */ -function startAnalyseCore () { - const analyseStartingTime = Date.now() - const domSize = getDomSizeWithoutSvg() - const pluginsNumber = getPluginsNumber() - const printStyleSheetsNumber = getPrintStyleSheetsNumber() - const inlineStyleSheetsNumber = getInlineStyleSheetsNumber() - const emptySrcTagNumber = getEmptySrcTagNumber() - const inlineJsScript = getInlineJsScript() - const inlineJsScriptsNumber = getInlineJsScriptsNumber() - const imagesResizedInBrowser = getImagesResizedInBrowser() +function start_analyse_core() { + const analyseStartingTime = Date.now(); + const dom_size = document.getElementsByTagName('*').length; + let pageAnalysis; - return { - analyseStartingTime, - url: document.URL, - domSize, - pluginsNumber, - printStyleSheetsNumber, - inlineStyleSheetsNumber, - emptySrcTagNumber, - inlineJsScript, - inlineJsScriptsNumber, - imagesResizedInBrowser - } -} -function getDomSizeWithoutSvg () { - let domSize = document.getElementsByTagName('*').length - const svgElements = document.getElementsByTagName('svg') - for (const svgElement of svgElements) { - domSize -= getNbChildsExcludingNestedSvg(svgElement) - 1 - } - return domSize -} + if (analyseBestPractices) { + // test with http://www.wickham43.net/flashvideo.php + const pluginsNumber = getPluginsNumber(); + const printStyleSheetsNumber = getPrintStyleSheetsNumber(); + const inlineStyleSheetsNumber = getInlineStyleSheetsNumber(); + const emptySrcTagNumber = getEmptySrcTagNumber(); + const inlineJsScript = getInlineJsScript(); + const inlineJsScriptsNumber = getInlineJsScriptsNumber(); + const imagesResizedInBrowser = getImagesResizedInBrowser(); -function getNbChildsExcludingNestedSvg (element) { - if (element.nodeType === Node.TEXT_NODE) return 0 - let nbElements = 1 - for (const childNode of element.childNodes) { - // deal with svg nested case - if (childNode.tagName !== 'svg') { - nbElements += getNbChildsExcludingNestedSvg(childNode) - } else { - nbElements += 1 - } - } - return nbElements + pageAnalysis = { + analyseStartingTime: analyseStartingTime, + url: document.URL, + domSize: dom_size, + pluginsNumber: pluginsNumber, + printStyleSheetsNumber: printStyleSheetsNumber, + inlineStyleSheetsNumber: inlineStyleSheetsNumber, + emptySrcTagNumber: emptySrcTagNumber, + inlineJsScript: inlineJsScript, + inlineJsScriptsNumber: inlineJsScriptsNumber, + imagesResizedInBrowser: imagesResizedInBrowser, + }; + } else + pageAnalysis = { + analyseStartingTime: analyseStartingTime, + url: document.URL, + domSize: dom_size, + }; + + return pageAnalysis; } -function getPluginsNumber () { - const plugins = document.querySelectorAll('object,embed') - return (plugins === undefined) ? 0 : plugins.length +function getPluginsNumber() { + const plugins = document.querySelectorAll('object,embed'); + return plugins === undefined ? 0 : plugins.length; } -function getEmptySrcTagNumber () { - return document.querySelectorAll('img[src=""]').length + - document.querySelectorAll('script[src=""]').length + - document.querySelectorAll('link[rel=stylesheet][href=""]').length +function getEmptySrcTagNumber() { + return ( + document.querySelectorAll('img[src=""]').length + + document.querySelectorAll('script[src=""]').length + + document.querySelectorAll('link[rel=stylesheet][href=""]').length + ); } -function getPrintStyleSheetsNumber () { - return document.querySelectorAll('link[rel=stylesheet][media~=print]').length + - document.querySelectorAll('style[media~=print]').length +function getPrintStyleSheetsNumber() { + return ( + document.querySelectorAll('link[rel=stylesheet][media~=print]').length + + document.querySelectorAll('style[media~=print]').length + ); } -function getInlineStyleSheetsNumber () { - const styleSheetsArray = Array.from(document.styleSheets) - let inlineStyleSheetsNumber = 0 - styleSheetsArray.forEach(styleSheet => { - try { - // Ignore SVG styles in count - const isSvgStyleSheet = (styleSheet.ownerNode instanceof SVGStyleElement) - if (!styleSheet.href && !isSvgStyleSheet) inlineStyleSheetsNumber++ - } catch (err) { - console.log('GREENIT-ANALYSIS ERROR ,' + err.name + ' = ' + err.message) - console.log('GREENIT-ANALYSIS ERROR ' + err.stack) - } - }) - return inlineStyleSheetsNumber +function getInlineStyleSheetsNumber() { + let styleSheetsArray = Array.from(document.styleSheets); + let inlineStyleSheetsNumber = 0; + styleSheetsArray.forEach((styleSheet) => { + try { + if (!styleSheet.href) inlineStyleSheetsNumber++; + } catch (err) { + console.log('GREENIT-ANALYSIS ERROR ,' + err.name + ' = ' + err.message); + console.log('GREENIT-ANALYSIS ERROR ' + err.stack); + } + }); + return inlineStyleSheetsNumber; } -function getInlineJsScript () { - const scriptArray = Array.from(document.scripts) - let scriptText = '' - scriptArray.forEach(script => { - const isJSON = (String(script.type) === 'application/ld+json') // Exclude type="application/ld+json" from parsing js analyse - if ((script.text.length > 0) && (!isJSON)) scriptText += '\n' + script.text - }) - return scriptText +function getInlineJsScript() { + let scriptArray = Array.from(document.scripts); + let scriptText = ''; + scriptArray.forEach((script) => { + let isJSON = String(script.type) === 'application/ld+json'; // Exclude type="application/ld+json" from parsing js analyse + if (script.text.length > 0 && !isJSON) scriptText += '\n' + script.text; + }); + return scriptText; } -function getInlineJsScriptsNumber () { - const scriptArray = Array.from(document.scripts) - let inlineScriptNumber = 0 - scriptArray.forEach(script => { - const isJSON = (String(script.type) === 'application/ld+json') // Exclude type="application/ld+json" from count - if ((script.text.length > 0) && (!isJSON)) inlineScriptNumber++ - }) - return inlineScriptNumber +function getInlineJsScriptsNumber() { + let scriptArray = Array.from(document.scripts); + let inlineScriptNumber = 0; + scriptArray.forEach((script) => { + let isJSON = String(script.type) === 'application/ld+json'; // Exclude type="application/ld+json" from count + if (script.text.length > 0 && !isJSON) inlineScriptNumber++; + }); + return inlineScriptNumber; } -function getImagesResizedInBrowser () { - const imgArray = Array.from(document.querySelectorAll('img')) - const imagesResized = [] - imgArray.forEach(img => { - if (img.clientWidth < img.naturalWidth || img.clientHeight < img.naturalHeight) { - // Images of one pixel are some times used ... , we exclude them - if (img.naturalWidth > 1) { - const imageMeasures = { - src: img.src, - clientWidth: img.clientWidth, - clientHeight: img.clientHeight, - naturalWidth: img.naturalWidth, - naturalHeight: img.naturalHeight +function getImagesResizedInBrowser() { + const imgArray = Array.from(document.querySelectorAll('img')); + let imagesResized = []; + imgArray.forEach((img) => { + if (img.clientWidth < img.naturalWidth || img.clientHeight < img.naturalHeight) { + // Images of one pixel are some times used ... , we exclude them + if (img.naturalWidth > 1) { + const imageMeasures = { + src: img.src, + clientWidth: img.clientWidth, + clientHeight: img.clientHeight, + naturalWidth: img.naturalWidth, + naturalHeight: img.naturalHeight, + }; + imagesResized.push(imageMeasures); + } } - imagesResized.push(imageMeasures) - } - } - }) - return imagesResized + }); + return imagesResized; } diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/ecoIndex.js b/EcoSonar-API/services/greenit-analysis/greenit-core/ecoIndex.js index c044355..716d520 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/ecoIndex.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/ecoIndex.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ /* * Copyright (C) 2019 didierfred@gmail.com * @@ -16,34 +15,47 @@ * along with this program. If not, see . */ -const quantilesDom = [0, 47, 75, 159, 233, 298, 358, 417, 476, 537, 603, 674, 753, 843, 949, 1076, 1237, 1459, 1801, 2479, 594601] -const quantilesReq = [0, 2, 15, 25, 34, 42, 49, 56, 63, 70, 78, 86, 95, 105, 117, 130, 147, 170, 205, 281, 3920] -const quantilesSize = [0, 1.37, 144.7, 319.53, 479.46, 631.97, 783.38, 937.91, 1098.62, 1265.47, 1448.32, 1648.27, 1876.08, 2142.06, 2465.37, 2866.31, 3401.59, 4155.73, 5400.08, 8037.54, 223212.26] +let quantiles_dom = [ + 0, 47, 75, 159, 233, 298, 358, 417, 476, 537, 603, 674, 753, 843, 949, 1076, 1237, 1459, 1801, 2479, 594601, +]; +let quantiles_req = [0, 2, 15, 25, 34, 42, 49, 56, 63, 70, 78, 86, 95, 105, 117, 130, 147, 170, 205, 281, 3920]; +let quantiles_size = [ + 0, 1.37, 144.7, 319.53, 479.46, 631.97, 783.38, 937.91, 1098.62, 1265.47, 1448.32, 1648.27, 1876.08, 2142.06, + 2465.37, 2866.31, 3401.59, 4155.73, 5400.08, 8037.54, 223212.26, +]; /** Calcul ecoIndex based on formula from web site www.ecoindex.fr **/ -function computeEcoIndex (dom, req, size) { - const qDom = computeQuantile(quantilesDom, dom) - const qReq = computeQuantile(quantilesReq, req) - const qSize = computeQuantile(quantilesSize, size) +function computeEcoIndex(dom, req, size) { + const q_dom = computeQuantile(quantiles_dom, dom); + const q_req = computeQuantile(quantiles_req, req); + const q_size = computeQuantile(quantiles_size, size); - return Math.round(100 - 5 * (3 * qDom + 2 * qReq + qSize) / 6) + return Math.round(100 - (5 * (3 * q_dom + 2 * q_req + q_size)) / 6); } -function computeQuantile (quantiles, value) { - for (let i = 1; i < quantiles.length; i++) { - if (value < quantiles[i]) return (i - 1 + (value - quantiles[i - 1]) / (quantiles[i] - quantiles[i - 1])) - } - return quantiles.length - 1 +function computeQuantile(quantiles, value) { + for (let i = 1; i < quantiles.length; i++) { + if (value < quantiles[i]) return i + (value - quantiles[i - 1]) / (quantiles[i] - quantiles[i - 1]); + } + return quantiles.length; } -function getEcoIndexGrade (ecoIndex) { - if (ecoIndex > 80) return 'A' - if (ecoIndex > 70) return 'B' - if (ecoIndex > 55) return 'C' - if (ecoIndex > 40) return 'D' - if (ecoIndex > 25) return 'E' - if (ecoIndex > 10) return 'F' - return 'G' +function getEcoIndexGrade(ecoIndex) { + if (ecoIndex > 75) return 'A'; + if (ecoIndex > 65) return 'B'; + if (ecoIndex > 50) return 'C'; + if (ecoIndex > 35) return 'D'; + if (ecoIndex > 20) return 'E'; + if (ecoIndex > 5) return 'F'; + return 'G'; +} + +function computeGreenhouseGasesEmissionfromEcoIndex(ecoIndex) { + return Math.round(100 * (2 + (2 * (50 - ecoIndex)) / 100)) / 100; +} + +function computeWaterConsumptionfromEcoIndex(ecoIndex) { + return Math.round(100 * (3 + (3 * (50 - ecoIndex)) / 100)) / 100; } diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/greenpanel.js b/EcoSonar-API/services/greenit-analysis/greenit-core/greenpanel.js index 9f978bf..223cd20 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/greenpanel.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/greenpanel.js @@ -1,6 +1,3 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ - /* * Copyright (C) 2019 didierfred@gmail.com * @@ -18,259 +15,211 @@ * along with this program. If not, see . */ -let currentRulesChecker -let lastAnalyseStartingTime = 0 -let measuresAcquisition -let har -let resources -let scoreCalculated - -function computeEcoIndexMeasures (measures) { - measures.ecoIndex = computeEcoIndex(measures.domSize, measures.nbRequest, Math.round(measures.responsesSize / 1000)) - measures.grade = getEcoIndexGrade(measures.ecoIndex) +let backgroundPageConnection; +let currentRulesChecker; +let lastAnalyseStartingTime = 0; +let measuresAcquisition; +let analyseBestPractices = true; +let har; +let resources; + +function handleResponseFromBackground(frameMeasures) { + if (isOldAnalyse(frameMeasures.analyseStartingTime)) { + debug(() => `Analyse is too old for url ${frameMeasures.url} , time = ${frameMeasures.analyseStartingTime}`); + return; + } + measuresAcquisition.aggregateFrameMeasures(frameMeasures); } -async function launchAnalyse () { - const now = Date.now() - - // To avoid parallel analyse , force 1 secondes between analysis - if (now - lastAnalyseStartingTime < 1000) { - debug(() => 'Ignore click') - return - } - lastAnalyseStartingTime = now - currentRulesChecker = rulesManager.getNewRulesChecker() - measuresAcquisition = new MeasuresAcquisition(currentRulesChecker) - measuresAcquisition.initializeMeasures() - measuresAcquisition.aggregateFrameMeasures(startAnalyseCore()) - measuresAcquisition.startMeasuring() - await scoreCalculated - - const returnObj = measuresAcquisition.getMeasures() - const bestPractices = measuresAcquisition.getBestPractices() - returnObj.bestPractices = formatBestPractices(bestPractices) - const { dataEntries, emptySrcTagNumber, entries, imagesResizedInBrowser, inlineJsScriptsNumber, inlineStyleSheetsNumber, pluginsNumber, printStyleSheetsNumber, url, ...reducedReturnObj } = returnObj - return reducedReturnObj +function computeEcoIndexMeasures(measures) { + measures.ecoIndex = computeEcoIndex( + measures.domSize, + measures.nbRequest, + Math.round(measures.responsesSize / 1000) + ); + measures.waterConsumption = computeWaterConsumptionfromEcoIndex(measures.ecoIndex); + measures.greenhouseGasesEmission = computeGreenhouseGasesEmissionfromEcoIndex(measures.ecoIndex); + measures.grade = getEcoIndexGrade(measures.ecoIndex); } -function MeasuresAcquisition (rules) { - let measures - const localRulesChecker = rules - let nbGetHarTry = 0 - - this.initializeMeasures = () => { - measures = { - url: '', - domSize: 0, - nbRequest: 0, - responsesSize: 0, - responsesSizeUncompress: 0, - ecoIndex: 100, - grade: 'A', - pluginsNumber: 0, - printStyleSheetsNumber: 0, - inlineStyleSheetsNumber: 0, - emptySrcTagNumber: 0, - inlineJsScriptsNumber: 0, - imagesResizedInBrowser: [] - } - } - - this.startMeasuring = function () { - getNetworkMeasure() - getResourcesMeasure() - } - - this.getMeasures = () => measures - - this.getBestPractices = () => Object.fromEntries(localRulesChecker.getAllRules()) - - this.aggregateFrameMeasures = function (frameMeasures) { - measures.domSize += frameMeasures.domSize - computeEcoIndexMeasures(measures) +function launchAnalyse() { + let now = Date.now(); - measures.pluginsNumber += frameMeasures.pluginsNumber - - measures.printStyleSheetsNumber += frameMeasures.printStyleSheetsNumber - if (measures.inlineStyleSheetsNumber < frameMeasures.inlineStyleSheetsNumber) measures.inlineStyleSheetsNumber = frameMeasures.inlineStyleSheetsNumber - measures.emptySrcTagNumber += frameMeasures.emptySrcTagNumber - if (frameMeasures.inlineJsScript.length > 0) { - const resourceContent = { - url: 'inline js', - type: 'script', - content: frameMeasures.inlineJsScript - } - localRulesChecker.sendEvent('resourceContentReceived', measures, resourceContent) - } - if (measures.inlineJsScriptsNumber < frameMeasures.inlineJsScriptsNumber) measures.inlineJsScriptsNumber = frameMeasures.inlineJsScriptsNumber - - measures.imagesResizedInBrowser = frameMeasures.imagesResizedInBrowser - - localRulesChecker.sendEvent('frameMeasuresReceived', measures) - } - - const getNetworkMeasure = () => { - console.log('Start network measure...') - // only account for network traffic, filtering resources embedded through data urls - const entries = har.entries.filter(entry => isNetworkResource(entry)) - - // Get the "mother" url - if (entries.length > 0) measures.url = entries[0].request.url - else { - // Bug with firefox when we first get har.entries when starting the plugin , we need to ask again to have it - if (nbGetHarTry < 1) { - debug(() => 'No entries, try again to get HAR in 1s') - nbGetHarTry++ - setTimeout(getNetworkMeasure, 1000) - } + // To avoid parallel analyse , force 1 secondes between analysis + if (now - lastAnalyseStartingTime < 1000) { + debug(() => 'Ignore click'); + return; } + lastAnalyseStartingTime = now; + currentRulesChecker = rulesManager.getNewRulesChecker(); + measuresAcquisition = new MeasuresAcquisition(currentRulesChecker); + measuresAcquisition.initializeMeasures(); + measuresAcquisition.aggregateFrameMeasures(start_analyse_core()); + measuresAcquisition.startMeasuring(); + let returnObj = measuresAcquisition.getMeasures(); + returnObj.bestPractices = measuresAcquisition.getBestPractices(); + return returnObj; +} - measures.entries = entries - measures.dataEntries = har.entries.filter(entry => isDataResource(entry)) // embeded data urls - - if (entries.length) { - measures.nbRequest = entries.length - entries.forEach(entry => { - // If chromium : - // _transferSize represent the real data volume transfert - // while content.size represent the size of the page which is uncompress - if (entry.response._transferSize) { - measures.responsesSize += entry.response._transferSize - measures.responsesSizeUncompress += entry.response.content.size - } else { - // In firefox , entry.response.content.size can sometimes be undefined - if (entry.response.content.size) measures.responsesSize += entry.response.content.size +function MeasuresAcquisition(rules) { + let measures; + let localRulesChecker = rules; + let nbGetHarTry = 0; + + this.initializeMeasures = () => { + measures = { + url: '', + domSize: 0, + nbRequest: 0, + responsesSize: 0, + responsesSizeUncompress: 0, + ecoIndex: 100, + grade: 'A', + waterConsumption: 0, + greenhouseGasesEmission: 0, + pluginsNumber: 0, + printStyleSheetsNumber: 0, + inlineStyleSheetsNumber: 0, + emptySrcTagNumber: 0, + inlineJsScriptsNumber: 0, + imagesResizedInBrowser: [], + }; + }; + + this.startMeasuring = function () { + getNetworkMeasure(); + if (analyseBestPractices) getResourcesMeasure(); + }; + + this.getMeasures = () => measures; + + this.getBestPractices = () => Object.fromEntries(localRulesChecker.getAllRules()); + + this.aggregateFrameMeasures = function (frameMeasures) { + measures.domSize += frameMeasures.domSize; + computeEcoIndexMeasures(measures); + + if (analyseBestPractices) { + measures.pluginsNumber += frameMeasures.pluginsNumber; + + measures.printStyleSheetsNumber += frameMeasures.printStyleSheetsNumber; + if (measures.inlineStyleSheetsNumber < frameMeasures.inlineStyleSheetsNumber) + measures.inlineStyleSheetsNumber = frameMeasures.inlineStyleSheetsNumber; + measures.emptySrcTagNumber += frameMeasures.emptySrcTagNumber; + if (frameMeasures.inlineJsScript.length > 0) { + const resourceContent = { + url: 'inline js', + type: 'script', + content: frameMeasures.inlineJsScript, + }; + localRulesChecker.sendEvent('resourceContentReceived', measures, resourceContent); + } + if (measures.inlineJsScriptsNumber < frameMeasures.inlineJsScriptsNumber) + measures.inlineJsScriptsNumber = frameMeasures.inlineJsScriptsNumber; + + measures.imagesResizedInBrowser = frameMeasures.imagesResizedInBrowser; + + localRulesChecker.sendEvent('frameMeasuresReceived', measures); + } + }; + + const getNetworkMeasure = () => { + console.log('Start network measure...'); + // only account for network traffic, filtering resources embedded through data urls + let entries = har.entries.filter((entry) => isNetworkResource(entry)); + + // Get the "mother" url + if (entries.length > 0) measures.url = entries[0].request.url; + else { + // Bug with firefox when we first get har.entries when starting the plugin , we need to ask again to have it + if (nbGetHarTry < 1) { + debug(() => 'No entries, try again to get HAR in 1s'); + nbGetHarTry++; + setTimeout(getNetworkMeasure, 1000); + } } - }) - localRulesChecker.sendEvent('harReceived', measures) - computeEcoIndexMeasures(measures) + measures.entries = entries; + measures.dataEntries = har.entries.filter((entry) => isDataResource(entry)); // embeded data urls + + if (entries.length) { + measures.nbRequest = entries.length; + entries.forEach((entry) => { + // If chromium : + // _transferSize represent the real data volume transfert + // while content.size represent the size of the page which is uncompress + if (entry.response._transferSize) { + measures.responsesSize += entry.response._transferSize; + measures.responsesSizeUncompress += entry.response.content.size; + } else { + // In firefox , entry.response.content.size can sometimes be undefined + if (entry.response.content.size) measures.responsesSize += entry.response.content.size; + //debug(() => `entry size = ${entry.response.content.size} , responseSize = ${measures.responsesSize}`); + } + }); + if (analyseBestPractices) localRulesChecker.sendEvent('harReceived', measures); + + computeEcoIndexMeasures(measures); + } + }; + + function getResourcesMeasure() { + resources.forEach((resource) => { + if (resource.url.startsWith('file') || resource.url.startsWith('http')) { + if (resource.type === 'script' || resource.type === 'stylesheet' || resource.type === 'image') { + let resourceAnalyser = new ResourceAnalyser(resource); + resourceAnalyser.analyse(); + } + } + }); } - } - function getResourcesMeasure () { - resources.forEach(resource => { - if (resource.url.startsWith('file') || resource.url.startsWith('http')) { - if ((resource.type.toUpperCase() === 'SCRIPT') || (resource.type.toUpperCase() === 'STYLESHEET') || (resource.type.toUpperCase() === 'IMAGE')) { - const resourceAnalyser = new ResourceAnalyser(resource) - resourceAnalyser.analyseContent(resource) - } - } - }) - } + function ResourceAnalyser(resource) { + let resourceToAnalyse = resource; - function ResourceAnalyser (resource) { - const resourceToAnalyse = resource + this.analyse = () => resourceToAnalyse.getContent(this.analyseContent); - this.analyseContent = (code) => { - // exclude from analyse the injected script - if ((resourceToAnalyse.type.toUpperCase() === 'SCRIPT') && (resourceToAnalyse.url.includes('script/analyseFrame.js'))) return + this.analyseContent = (code) => { + // exclude from analyse the injected script + if (resourceToAnalyse.type === 'script' && resourceToAnalyse.url.includes('script/analyseFrame.js')) return; - const resourceContent = { - url: resourceToAnalyse.url, - type: resourceToAnalyse.type, - content: code.content - } - localRulesChecker.sendEvent('resourceContentReceived', measures, resourceContent) + let resourceContent = { + url: resourceToAnalyse.url, + type: resourceToAnalyse.type, + content: code, + }; + localRulesChecker.sendEvent('resourceContentReceived', measures, resourceContent); + }; } - } } -function formatBestPractices (bestPractices) { - if (bestPractices.AddExpiresOrCacheControlHeaders.requests) { - const requestsFormatted = bestPractices.AddExpiresOrCacheControlHeaders.requests.split('|') - requestsFormatted.pop() - bestPractices.AddExpiresOrCacheControlHeaders.requests = requestsFormatted - } - if (bestPractices.CompressHttp.requests) { - const requestsFormatted = bestPractices.CompressHttp.requests.split('|') - requestsFormatted.pop() - bestPractices.CompressHttp.requests = requestsFormatted - } - if (bestPractices.DomainsNumber.domains) { - const domainsFormatted = bestPractices.DomainsNumber.domains.split('|') - domainsFormatted.pop() - bestPractices.DomainsNumber.domains = domainsFormatted - } - if (bestPractices.DontResizeImageInBrowser.imgAnalysed) { - const imgAnalysedFormatted = bestPractices.DontResizeImageInBrowser.imgAnalysed.split('|') - imgAnalysedFormatted.pop() - bestPractices.DontResizeImageInBrowser.imgAnalysed = imgAnalysedFormatted - } - if (bestPractices.HttpError.errors) { - const errorsFormatted = bestPractices.HttpError.errors.split('|') - errorsFormatted.pop() - bestPractices.HttpError.errors = errorsFormatted - } - if (bestPractices.HttpRequests.requests) { - const requestsFormatted = bestPractices.HttpRequests.requests.split('|') - requestsFormatted.pop() - bestPractices.HttpRequests.requests = requestsFormatted - } - if (bestPractices.ImageDownloadedNotDisplayed.imgAnalysed) { - const imgAnalysedFormatted = bestPractices.ImageDownloadedNotDisplayed.imgAnalysed.split('|') - imgAnalysedFormatted.pop() - bestPractices.ImageDownloadedNotDisplayed.imgAnalysed = imgAnalysedFormatted - } - if (bestPractices.JsValidate.contents) { - const contentsFormatted = bestPractices.JsValidate.contents.split('|') - contentsFormatted.pop() - bestPractices.JsValidate.contents = contentsFormatted - } - if (bestPractices.MaxCookiesLength.domains) { - const domainsFormatted = bestPractices.MaxCookiesLength.domains.split('|') - domainsFormatted.pop() - bestPractices.MaxCookiesLength.domains = domainsFormatted - } - if (bestPractices.NoCookieForStaticRessources.cookies) { - const cookiesFormatted = bestPractices.NoCookieForStaticRessources.cookies.split('|') - cookiesFormatted.pop() - bestPractices.NoCookieForStaticRessources.cookies = cookiesFormatted - } - if (bestPractices.NoRedirect.redirections) { - const redirectionsFormatted = bestPractices.NoRedirect.redirections.split('|') - redirectionsFormatted.pop() - bestPractices.NoRedirect.redirections = redirectionsFormatted - } - if (bestPractices.OptimizeBitmapImages.img) { - const imgFormatted = bestPractices.OptimizeBitmapImages.img.split('|') - imgFormatted.pop() - bestPractices.OptimizeBitmapImages.img = imgFormatted - } - if (bestPractices.OptimizeSvg.img) { - const imgFormatted = bestPractices.OptimizeSvg.img.split('|') - imgFormatted.pop() - bestPractices.OptimizeSvg.img = imgFormatted - } - if (bestPractices.SocialNetworkButton.socialNetworks) { - const socialNetworksFormatted = bestPractices.SocialNetworkButton.socialNetworks.split('|') - socialNetworksFormatted.pop() - bestPractices.SocialNetworkButton.socialNetworks = socialNetworksFormatted - } - if (bestPractices.StyleSheets.styleSheets) { - const styleSheetsFormatted = bestPractices.StyleSheets.styleSheets.split('|') - styleSheetsFormatted.pop() - bestPractices.StyleSheets.styleSheets = styleSheetsFormatted - } - if (bestPractices.UseETags.eTags) { - const eTagsFormatted = bestPractices.UseETags.eTags.split('|') - eTagsFormatted.pop() - bestPractices.UseETags.eTags = eTagsFormatted - } - if (bestPractices.UseStandardTypefaces.fonts) { - const fontsFormatted = bestPractices.UseStandardTypefaces.fonts.split('|') - fontsFormatted.pop() - bestPractices.UseStandardTypefaces.fonts = fontsFormatted - } - if (bestPractices.MinifiedCss.contents) { - const contentsFormatted = bestPractices.MinifiedCss.contents.split('|') - contentsFormatted.pop() - bestPractices.MinifiedCss.contents = contentsFormatted - } - if (bestPractices.MinifiedJs.contents) { - const contentsFormatted = bestPractices.MinifiedJs.contents.split('|') - contentsFormatted.pop() - bestPractices.MinifiedJs.contents = contentsFormatted - } - return bestPractices +/** +Add to the history the result of an analyse +**/ +function storeAnalysisInHistory() { + let measures = measuresAcquisition.getMeasures(); + if (!measures) return; + + var analyse_history = []; + var string_analyse_history = localStorage.getItem('analyse_history'); + var analyse_to_store = { + resultDate: new Date(), + url: measures.url, + nbRequest: measures.nbRequest, + responsesSize: Math.round(measures.responsesSize / 1000), + domSize: measures.domSize, + greenhouseGasesEmission: measures.greenhouseGasesEmission, + waterConsumption: measures.waterConsumption, + ecoIndex: measures.ecoIndex, + grade: measures.grade, + }; + + if (string_analyse_history) { + analyse_history = JSON.parse(string_analyse_history); + analyse_history.reverse(); + analyse_history.push(analyse_to_store); + analyse_history.reverse(); + } else analyse_history.push(analyse_to_store); + + localStorage.setItem('analyse_history', JSON.stringify(analyse_history)); } diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/AddExpiresOrCacheControlHeaders.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/AddExpiresOrCacheControlHeaders.js index c6caefa..4ecef10 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/AddExpiresOrCacheControlHeaders.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/AddExpiresOrCacheControlHeaders.js @@ -1,41 +1,31 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'AddExpiresOrCacheControlHeaders', - requests: '', - cacheHeaderRatio: 'N.A', - score: 100, + complianceLevel: 'A', + id: "AddExpiresOrCacheControlHeaders", + comment: "", + detailComment: "", - check: function (measures) { - let staticResourcesSize = 0 - let staticResourcesWithCache = 0 + check: function (measures) { + let staticResourcesSize = 0; + let staticResourcesWithCache = 0; - if (measures.entries.length) { - measures.entries.forEach(entry => { - if (isStaticRessource(entry)) { - staticResourcesSize += entry.response.content.size - if (hasValidCacheHeaders(entry)) { - staticResourcesWithCache += entry.response.content.size - } else { - this.requests += `${entry.request.url} ${Math.round(entry.response.content.size / 100) / 10}|` - } + if (measures.entries.length) measures.entries.forEach(entry => { + if (isStaticRessource(entry)) { + staticResourcesSize += entry.response.content.size; + if (hasValidCacheHeaders(entry)) { + staticResourcesWithCache += entry.response.content.size; + } + else this.detailComment += chrome.i18n.getMessage("rule_AddExpiresOrCacheControlHeaders_DetailComment",`${entry.request.url} ${Math.round(entry.response.content.size / 100) / 10}`) + '
'; + } + }); + + if (staticResourcesSize > 0) { + const cacheHeaderRatio = staticResourcesWithCache / staticResourcesSize * 100; + if (cacheHeaderRatio < 95) { + if (cacheHeaderRatio < 90) this.complianceLevel = 'C' + else this.complianceLevel = 'B'; + } + else this.complianceLevel = 'A'; + this.comment = chrome.i18n.getMessage("rule_AddExpiresOrCacheControlHeaders_Comment", String(Math.round(cacheHeaderRatio * 10) / 10) + "%"); } - }) - } - if (staticResourcesSize > 0) { - this.cacheHeaderRatio = staticResourcesWithCache / staticResourcesSize * 100 - if (this.cacheHeaderRatio === 100) { - this.score = 100 - } else if (this.cacheHeaderRatio > 96.76) { - this.score = 75 - } else if (this.cacheHeaderRatio > 90) { - this.score = 50 - } else if (this.cacheHeaderRatio >= 88.83) { - this.score = 35 - } else if (this.cacheHeaderRatio >= 84.85) { - this.score = 20 - } else { - this.score = 0 - } } - } -}, 'harReceived') +}, "harReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/CompressHttp.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/CompressHttp.js index 60a2c53..57964da 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/CompressHttp.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/CompressHttp.js @@ -1,41 +1,29 @@ -/* eslint-disable no-undef */ -// eslint-disable-next-line no-undef rulesManager.registerRule({ - id: 'CompressHttp', - requests: '', - compressRatio: 'N.A', - score: 100, + complianceLevel: 'A', + id: "CompressHttp", + comment: "", + detailComment: "", - check: function (measures) { - let compressibleResourcesSize = 0 - let compressibleResourcesCompressedSize = 0 - if (measures.entries.length) { - measures.entries.forEach(entry => { - if (isCompressibleResource(entry)) { - compressibleResourcesSize += entry.response.content.size - if (isResourceCompressed(entry)) { - compressibleResourcesCompressedSize += entry.response.content.size - } else this.requests += `${entry.request.url} ${Math.round(entry.response.content.size / 100) / 10}|` + check: function (measures) { + let compressibleResourcesSize = 0; + let compressibleResourcesCompressedSize = 0; + if (measures.entries.length) measures.entries.forEach(entry => { + if (isCompressibleResource(entry)) { + compressibleResourcesSize += entry.response.content.size; + if (isResourceCompressed(entry)) { + compressibleResourcesCompressedSize += entry.response.content.size; + } + else this.detailComment += chrome.i18n.getMessage("rule_CompressHttp_DetailComment",`${entry.request.url} ${Math.round(entry.response.content.size / 100) / 10}`) + '
'; + } + }); + if (compressibleResourcesSize > 0) { + const compressRatio = compressibleResourcesCompressedSize / compressibleResourcesSize * 100; + if (compressRatio < 95) { + if (compressRatio < 90) this.complianceLevel = 'C' + else this.complianceLevel = 'B'; + } + else this.complianceLevel = 'A'; + this.comment = chrome.i18n.getMessage("rule_CompressHttp_Comment", String(Math.round(compressRatio * 10) / 10) + "%"); } - }) } - if (compressibleResourcesSize > 0) { - this.compressRatio = compressibleResourcesCompressedSize / compressibleResourcesSize * 100 - if (this.compressRatio === 100) { - this.score = 100 - } else if (this.compressRatio >= 99.38) { - this.score = 75 - } else if (this.compressRatio >= 95.32) { - this.score = 65 - } else if (this.compressRatio >= 94) { - this.score = 50 - } else if (this.compressRatio >= 92.45) { - this.score = 35 - } else if (this.compressRatio >= 89.06) { - this.score = 20 - } else { - this.score = 0 - } - } - } -}, 'harReceived') +}, "harReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/DomainsNumber.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/DomainsNumber.js index f5fb12c..494ba6b 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/DomainsNumber.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/DomainsNumber.js @@ -1,38 +1,25 @@ -/* eslint-disable no-undef */ -// eslint-disable-next-line no-undef rulesManager.registerRule({ - id: 'DomainsNumber', - domains: '', - domainsNumber: 0, - score: 100, + complianceLevel: 'A', + id: "DomainsNumber", + comment: "", + detailComment: "", - check: function (measures) { - const domainsToAdd = [] - if (measures.entries.length) { - measures.entries.forEach(entry => { - const domain = getDomainFromUrl(entry.request.url) - if (domainsToAdd.indexOf(domain) === -1) { - domainsToAdd.push(domain) - this.domains += domain + '|' - this.domainsNumber++ + check: function (measures) { + let domains = []; + if (measures.entries.length) measures.entries.forEach(entry => { + let domain = getDomainFromUrl(entry.request.url); + if (domains.indexOf(domain) === -1) { + domains.push(domain); + } + }); + if (domains.length > 2) { + if (domains.length === 3) this.complianceLevel = 'B'; + else this.complianceLevel = 'C'; } - }) - } + domains.forEach(domain => { + this.detailComment += domain + "
"; + }); - if (this.domainsNumber <= 2) { - this.score = 100 - } else if (this.domainsNumber <= 3) { - this.score = 75 - } else if (this.domainsNumber <= 4) { - this.score = 65 - } else if (this.domainsNumber <= 5.5) { - this.score = 50 - } else if (this.domainsNumber <= 6) { - this.score = 35 - } else if (this.domainsNumber <= 7) { - this.score = 20 - } else { - this.score = 0 + this.comment = chrome.i18n.getMessage("rule_DomainsNumber_Comment", String(domains.length)); } - } -}, 'harReceived') +}, "harReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/DontResizeImageInBrowser.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/DontResizeImageInBrowser.js index 6fb36fc..239c3e3 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/DontResizeImageInBrowser.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/DontResizeImageInBrowser.js @@ -1,41 +1,39 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'DontResizeImageInBrowser', - imagesResizedInBrowserNumber: 0, - imgAnalysed: '', - score: 100, + complianceLevel: 'A', + id: "DontResizeImageInBrowser", + comment: "", + detailComment: "", + imagesResizedInBrowserNumber: 0, + imgAnalysed: new Map(), - isRevelant: function (entry) { - // exclude svg - if (isSvgUrl(entry.src)) return false + // need to get a new map , otherwise it's share between instance + initialize: function () { + this.imgAnalysed = new Map(); + }, - // difference of 1 pixel is not relevant - if (entry.naturalWidth - entry.clientWidth < 2) return false - if (entry.naturalHeight - entry.clientHeight < 2) return false + isRevelant: function (entry) { + // exclude svg + if (isSvgUrl(entry.src)) return false; - // If picture is 0x0 it meens it's not visible on the ui , see imageDownloadedNotDisplayed - return entry.clientWidth !== 0 - }, + // difference of 1 pixel is not relevant + if (entry.naturalWidth - entry.clientWidth < 2) return false; + if (entry.naturalHeight - entry.clientHeight < 2) return false; - check: function (measures) { - const imgAnalysedToAdd = new Map() - measures.imagesResizedInBrowser.forEach(entry => { - if (!imgAnalysedToAdd.has(entry.src) && this.isRevelant(entry)) { // Do not count two times the same picture - imgAnalysedToAdd.set(entry.src) - this.imagesResizedInBrowserNumber += 1 - this.imgAnalysed += entry.src + '|' - } - }) + // If picture is 0x0 it meens it's not visible on the ui , see imageDownloadedNotDisplayed + if (entry.clientWidth === 0) return false; - if (this.imagesResizedInBrowserNumber === 0) { - this.score = 100 - } else if (this.imagesResizedInBrowserNumber <= 1) { - this.score = 35 - } else if (this.imagesResizedInBrowserNumber <= 3) { - this.score = 20 - } else { - this.score = 0 - } - } + return true; + }, -}, 'frameMeasuresReceived') + check: function (measures) { + measures.imagesResizedInBrowser.forEach(entry => { + if (!this.imgAnalysed.has(entry.src) && this.isRevelant(entry)) { // Do not count two times the same picture + this.detailComment += chrome.i18n.getMessage("rule_DontResizeImageInBrowser_DetailComment",[entry.src,`${entry.naturalWidth}x${entry.naturalHeight}`,`${entry.clientWidth}x${entry.clientHeight}`]) + '
'; + this.imgAnalysed.set(entry.src); + this.imagesResizedInBrowserNumber += 1; + } + }); + if (this.imagesResizedInBrowserNumber > 0) this.complianceLevel = 'C'; + this.comment = chrome.i18n.getMessage("rule_DontResizeImageInBrowser_Comment", String(this.imagesResizedInBrowserNumber)); + } +}, "frameMeasuresReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/EmptySrcTag.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/EmptySrcTag.js index 10b6ad0..544caf3 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/EmptySrcTag.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/EmptySrcTag.js @@ -1,16 +1,13 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'EmptySrcTag', - emptySrcTagNumber: 0, - score: 100, + complianceLevel: 'A', + id: "EmptySrcTag", + comment: "", + detailComment: "", - check: function (measures) { - this.emptySrcTagNumber = measures.emptySrcTagNumber - - if (this.emptySrcTagNumber === 0) { - this.score = 100 - } else { - this.score = 0 + check: function (measures) { + if (measures.emptySrcTagNumber > 0) { + this.complianceLevel = 'C'; + this.comment = chrome.i18n.getMessage("rule_EmptySrcTag_Comment", String(measures.emptySrcTagNumber)); + } } - } -}, 'frameMeasuresReceived') +}, "frameMeasuresReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/ExternalizeCss.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/ExternalizeCss.js index 5986b3e..87bf726 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/ExternalizeCss.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/ExternalizeCss.js @@ -1,22 +1,13 @@ -// eslint-disable-next-line no-undef rulesManager.registerRule({ - id: 'ExternalizeCss', - inlineStyleSheetsNumber: 0, - score: 100, + complianceLevel: 'A', + id: "ExternalizeCss", + comment: "", + detailComment: "", - check: function (measures) { - this.inlineStyleSheetsNumber = measures.inlineStyleSheetsNumber - - if (this.inlineStyleSheetsNumber === 0) { - this.score = 100 - } else if (this.inlineStyleSheetsNumber <= 1) { - this.score = 75 - } else if (this.inlineStyleSheetsNumber <= 2) { - this.score = 50 - } else if (this.inlineStyleSheetsNumber <= 3) { - this.score = 20 - } else { - this.score = 0 + check: function (measures) { + if (measures.inlineStyleSheetsNumber > 0) { + this.complianceLevel = 'C'; + this.comment = chrome.i18n.getMessage("rule_ExternalizeCss_Comment", String(measures.inlineStyleSheetsNumber)); + } } - } -}, 'frameMeasuresReceived') +}, "frameMeasuresReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/ExternalizeJs.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/ExternalizeJs.js index 5c88340..65b5115 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/ExternalizeJs.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/ExternalizeJs.js @@ -1,22 +1,14 @@ -// eslint-disable-next-line no-undef rulesManager.registerRule({ - complianceLevel: 'A', - id: 'ExternalizeJs', - inlineJsScriptsNumber: 0, - score: 100, + complianceLevel: 'A', + id: "ExternalizeJs", + comment: "", + detailComment: "", - check: function (measures) { - this.inlineJsScriptsNumber = measures.inlineJsScriptsNumber - if (this.inlineJsScriptsNumber === 0) { - this.score = 100 - } else if (this.inlineJsScriptsNumber <= 1) { - this.score = 75 - } else if (this.inlineJsScriptsNumber <= 2) { - this.score = 50 - } else if (this.inlineJsScriptsNumber <= 3) { - this.score = 20 - } else { - this.score = 0 + check: function (measures) { + if (measures.inlineJsScriptsNumber > 0) { + if (measures.inlineJsScriptsNumber > 1) this.complianceLevel = 'C'; + this.comment = chrome.i18n.getMessage("rule_ExternalizeJs_Comment", String(measures.inlineJsScriptsNumber)); + + } } - } -}, 'frameMeasuresReceived') +}, "frameMeasuresReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/HttpError.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/HttpError.js index 2efde66..017eb30 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/HttpError.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/HttpError.js @@ -1,28 +1,20 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'HttpError', - errorNumber: 0, - errors: '', - score: 100, - - check: function (measures) { - if (measures.entries.length) { - measures.entries.forEach(entry => { + complianceLevel: 'A', + id: "HttpError", + comment: "", + detailComment: "", + + check: function (measures) { + let errorNumber = 0; + if (measures.entries.length) measures.entries.forEach(entry => { if (entry.response) { - if (entry.response.status >= 400) { - this.errorNumber++ - this.errors += entry.request.url + ' ' + entry.response.status + '|' + if (entry.response.status >=400 ) { + this.detailComment += entry.response.status + " " + entry.request.url + "
"; + errorNumber++; } } - }) + }); + if (errorNumber > 0) this.complianceLevel = 'C'; + this.comment = chrome.i18n.getMessage("rule_HttpError_Comment", String(errorNumber)); } - - if (this.errorNumber === 0) { - this.score = 100 - } else if (this.errorNumber <= 1) { - this.score = 50 - } else { - this.score = 0 - } - } -}, 'harReceived') + }, "harReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/HttpRequests.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/HttpRequests.js index dffc6a8..27d390b 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/HttpRequests.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/HttpRequests.js @@ -1,32 +1,15 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'HttpRequests', - nbRequest: 0, - requests: '', - score: 100, + complianceLevel: 'A', + id: "HttpRequests", + comment: "", + detailComment: "", - check: function (measures) { - if (measures.entries.length) { - measures.entries.forEach(entry => { - this.requests += entry.request.url + '|' - }) + check: function (measures) { + if (measures.entries.length) measures.entries.forEach(entry => { + this.detailComment += entry.request.url + "
"; + }); + if (measures.nbRequest > 40) this.complianceLevel = 'C'; + else if (measures.nbRequest > 26) this.complianceLevel = 'B'; + this.comment = chrome.i18n.getMessage("rule_HttpRequests_Comment", String(measures.nbRequest)); } - this.nbRequest = measures.nbRequest - - if (this.nbRequest <= 10) { - this.score = 100 - } else if (this.nbRequest <= 25) { - this.score = 75 - } else if (this.nbRequest <= 33) { - this.score = 65 - } else if (this.nbRequest <= 40) { - this.score = 50 - } else if (this.nbRequest <= 86) { - this.score = 35 - } else if (this.nbRequest <= 168) { - this.score = 20 - } else { - this.score = 0 - } - } -}, 'harReceived') +}, "harReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/ImageDownloadedNotDisplayed.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/ImageDownloadedNotDisplayed.js index 2ff6378..e5d1529 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/ImageDownloadedNotDisplayed.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/ImageDownloadedNotDisplayed.js @@ -1,34 +1,32 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'ImageDownloadedNotDisplayed', - imgAnalysed: '', - imageDownloadedNotDisplayedNumber: 0, - score: 100, + complianceLevel: 'A', + id: "ImageDownloadedNotDisplayed", + comment: "", + detailComment: "", + imageDownloadedNotDisplayedNumber: 0, + imgAnalysed: new Map(), - isRevelant: function (entry) { - // Very small images could be download even if not display as it may be icons - if (entry.naturalWidth * entry.naturalHeight < 10000) return false - return (entry.clientWidth === 0 && entry.clientHeight === 0) - }, + // need to get a new map , otherwise it's share between instance + initialize: function () { + this.imgAnalysed = new Map(); + }, - check: function (measures) { - const imgAnalysedToAdd = new Map() - measures.imagesResizedInBrowser.forEach(entry => { - if (!imgAnalysedToAdd.has(entry.src) && this.isRevelant(entry)) { - imgAnalysedToAdd.set(entry.src) // Do not count two times the same picture - this.imageDownloadedNotDisplayedNumber += 1 - this.imgAnalysed += entry.src + '|' - } - }) + isRevelant: function (entry) { + // Very small images could be download even if not display as it may be icons + if (entry.naturalWidth * entry.naturalHeight < 10000) return false; + if (entry.clientWidth === 0 && entry.clientHeight === 0) return true; + return false; + }, - if (this.imageDownloadedNotDisplayedNumber === 0) { - this.score = 100 - } else if (this.imageDownloadedNotDisplayedNumber <= 4) { - this.score = 50 - } else if (this.imageDownloadedNotDisplayedNumber <= 6) { - this.score = 25 - } else { - this.score = 0 + check: function (measures) { + measures.imagesResizedInBrowser.forEach(entry => { + if (!this.imgAnalysed.has(entry.src) && this.isRevelant(entry)) { // Do not count two times the same picture + this.detailComment += chrome.i18n.getMessage("rule_ImageDownloadedNotDisplayed_DetailComment",[entry.src,`${entry.naturalWidth}x${entry.naturalHeight}`]) + '
'; + this.imgAnalysed.set(entry.src); + this.imageDownloadedNotDisplayedNumber += 1; + } + }); + if (this.imageDownloadedNotDisplayedNumber > 0) this.complianceLevel = 'C'; + this.comment = chrome.i18n.getMessage("rule_ImageDownloadedNotDisplayed_Comment", String(this.imageDownloadedNotDisplayedNumber)); } - } -}, 'frameMeasuresReceived') +}, "frameMeasuresReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/JsValidate.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/JsValidate.js index 2bc9e2e..6f869e9 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/JsValidate.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/JsValidate.js @@ -1,26 +1,21 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'JsValidate', - contents: '', - errors: 0, - totalJsSize: 0, - score: 100, + complianceLevel: 'A', + id: "JsValidate", + comment: "", + detailComment: "", + errors: 0, + totalJsSize: 0, - check: function (_measures, resourceContent) { - if (resourceContent.type.toUpperCase() === 'SCRIPT') { - const errorNumber = computeNumberOfErrorsInJSCode(resourceContent.content, resourceContent.url) - if (errorNumber > 0) { - this.errors += errorNumber - this.contents += `URL ${resourceContent.url} has ${errorNumber} error(s)|` - } + check: function (measures, resourceContent) { + if (resourceContent.type === "script") { + this.totalJsSize += resourceContent.content.length; + let errorNumber = computeNumberOfErrorsInJSCode(resourceContent.content, resourceContent.url); + if (errorNumber > 0) { + this.detailComment += (`URL ${resourceContent.url} has ${errorNumber} error(s)
`); + this.errors += errorNumber; + this.complianceLevel = 'C'; + this.comment = chrome.i18n.getMessage("rule_JsValidate_Comment", String(this.errors)); + } + } } - - if (this.errors === 0) { - this.score = 100 - } else if (this.errors <= 1) { - this.score = 50 - } else { - this.score = 0 - } - } -}, 'resourceContentReceived') +}, "resourceContentReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/MaxCookiesLength.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/MaxCookiesLength.js index 2bbf286..91215ff 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/MaxCookiesLength.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/MaxCookiesLength.js @@ -1,43 +1,30 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'MaxCookiesLength', - maxCookiesLength: 0, - domains: '', - score: 100, + complianceLevel: 'A', + id: "MaxCookiesLength", + comment: "", + detailComment: "", - check: function (measures) { - const domainsToCheck = new Map() - if (measures.entries.length) { - measures.entries.forEach(entry => { - const cookiesLength = getCookiesLength(entry) - if (cookiesLength !== 0) { - const domain = getDomainFromUrl(entry.request.url) - if (domainsToCheck.has(domain)) { - if (domainsToCheck.get(domain) < cookiesLength) domainsToCheck.set(domain, cookiesLength) - } else domainsToCheck.set(domain, cookiesLength) - if (cookiesLength > this.maxCookiesLength) this.maxCookiesLength = cookiesLength + check: function (measures) { + let maxCookiesLength = 0; + let domains = new Map(); + if (measures.entries.length) measures.entries.forEach(entry => { + const cookiesLength = getCookiesLength(entry); + if (cookiesLength !== 0) { + let domain = getDomainFromUrl(entry.request.url); + if (domains.has(domain)) { + if (domains.get(domain) < cookiesLength) domains.set(domain, cookiesLength); + } + else domains.set(domain, cookiesLength); + if (cookiesLength > maxCookiesLength) maxCookiesLength = cookiesLength; + } + }); + domains.forEach((value, key) => { + this.detailComment += chrome.i18n.getMessage("rule_MaxCookiesLength_DetailComment",[value,key]) + '
' ; + }); + if (maxCookiesLength !== 0) { + this.comment = chrome.i18n.getMessage("rule_MaxCookiesLength_Comment", String(maxCookiesLength)); + if (maxCookiesLength > 512) this.complianceLevel = 'B'; + if (maxCookiesLength > 1024) this.complianceLevel = 'C'; } - }) } - - domainsToCheck.forEach((value, key) => { - this.domains += value + ' ' + key + '|' - }) - - if (this.maxCookiesLength <= 13) { - this.score = 100 - } else if (this.maxCookiesLength <= 56) { - this.score = 75 - } else if (this.maxCookiesLength <= 82.50) { - this.score = 65 - } else if (this.maxCookiesLength <= 150) { - this.score = 50 - } else if (this.maxCookiesLength <= 366.50) { - this.score = 35 - } else if (this.maxCookiesLength <= 800) { - this.score = 20 - } else { - this.score = 0 - } - } -}, 'harReceived') +}, "harReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/MinifiedCss.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/MinifiedCss.js index dad1555..5c5a189 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/MinifiedCss.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/MinifiedCss.js @@ -1,31 +1,21 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'MinifiedCss', - totalCssSize: 0, - minifiedCssSize: 0, - percentMinifiedCss: 0, - contents: '', - score: 100, + complianceLevel: 'A', + id: "MinifiedCss", + comment: "", + detailComment: "", + totalCssSize: 0, + minifiedCssSize: 0, - check: function (_measures, resourceContent) { - if (resourceContent.type.toUpperCase() === 'STYLESHEET') { - this.totalCssSize += resourceContent.content.length - if (isMinified(resourceContent.content)) { - this.minifiedCssSize += resourceContent.content.length - } else { - this.contents += `${resourceContent.url}|` - } - this.percentMinifiedCss = this.minifiedCssSize / this.totalCssSize * 100 - - if (this.percentMinifiedCss === 100) { - this.score = 100 - } else if (this.percentMinifiedCss >= 98.82) { - this.score = 35 - } else if (this.percentMinifiedCss >= 97.64) { - this.score = 20 - } else { - this.score = 0 - } + check: function (measures, resourceContent) { + if (resourceContent.type === "stylesheet") { + this.totalCssSize += resourceContent.content.length; + if (!isMinified(resourceContent.content)) this.detailComment += chrome.i18n.getMessage("rule_MinifiedCss_DetailComment",resourceContent.url) + '
'; + else this.minifiedCssSize += resourceContent.content.length; + const percentMinifiedCss = this.minifiedCssSize / this.totalCssSize * 100; + this.complianceLevel = 'A'; + if (percentMinifiedCss < 90) this.complianceLevel = 'C'; + else if (percentMinifiedCss < 95) this.complianceLevel = 'B'; + this.comment = chrome.i18n.getMessage("rule_MinifiedCss_Comment", String(Math.round(percentMinifiedCss * 10) / 10)); + } } - } -}, 'resourceContentReceived') +}, "resourceContentReceived"); diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/MinifiedJs.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/MinifiedJs.js index 70a06c6..47708d4 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/MinifiedJs.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/MinifiedJs.js @@ -1,31 +1,21 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'MinifiedJs', - totalJsSize: 0, - minifiedJsSize: 0, - percentMinifiedJs: 0, - contents: '', - score: 100, + complianceLevel: 'A', + id: "MinifiedJs", + comment: "", + detailComment: "", + totalJsSize: 0, + minifiedJsSize: 0, - check: function (_measures, resourceContent) { - if (resourceContent.type.toUpperCase() === 'SCRIPT') { - this.totalJsSize += resourceContent.content.length - if (isMinified(resourceContent.content)) { - this.minifiedJsSize += resourceContent.content.length - } else { - this.contents += `${resourceContent.url}|` - } - this.percentMinifiedJs = this.minifiedJsSize / this.totalJsSize * 100 - - if (this.percentMinifiedJs === 100) { - this.score = 100 - } else if (this.percentMinifiedJs >= 99.28) { - this.score = 35 - } else if (this.percentMinifiedJs >= 98.56) { - this.score = 20 - } else { - this.score = 0 - } + check: function (measures, resourceContent) { + if (resourceContent.type === "script") { + this.totalJsSize += resourceContent.content.length; + if (!isMinified(resourceContent.content)) this.detailComment += chrome.i18n.getMessage("rule_MinifiedJs_DetailComment",resourceContent.url) + '
'; + else this.minifiedJsSize += resourceContent.content.length; + const percentMinifiedJs = this.minifiedJsSize / this.totalJsSize * 100; + this.complianceLevel = 'A'; + if (percentMinifiedJs < 90) this.complianceLevel = 'C'; + else if (percentMinifiedJs < 95) this.complianceLevel = 'B'; + this.comment = chrome.i18n.getMessage("rule_MinifiedJs_Comment", String(Math.round(percentMinifiedJs * 10) / 10)); + } } - } -}, 'resourceContentReceived') +}, "resourceContentReceived"); diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/NoCookieForStaticRessources.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/NoCookieForStaticRessources.js index a5f5302..e7abe45 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/NoCookieForStaticRessources.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/NoCookieForStaticRessources.js @@ -1,33 +1,24 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'NoCookieForStaticRessources', - totalCookiesSize: 0, - nbRessourcesStaticWithCookie: 0, - cookies: '', - score: 100, - - check: function (measures) { - if (measures.entries.length) { - measures.entries.forEach(entry => { - const cookiesLength = getCookiesLength(entry) + complianceLevel: 'A', + id: "NoCookieForStaticRessources", + comment: "", + detailComment: "", + + check: function (measures) { + let nbRessourcesStaticWithCookie = 0; + let totalCookiesSize = 0; + if (measures.entries.length) measures.entries.forEach(entry => { + const cookiesLength = getCookiesLength(entry); if (isStaticRessource(entry) && (cookiesLength > 0)) { - this.nbRessourcesStaticWithCookie++ - this.totalCookiesSize += cookiesLength + 7 // 7 is size for the header name "cookie:" - this.cookies += entry.request.url + '|' + nbRessourcesStaticWithCookie++; + totalCookiesSize += cookiesLength + 7; // 7 is size for the header name "cookie:" + this.detailComment += chrome.i18n.getMessage("rule_NoCookieForStaticRessources_DetailComment",entry.request.url) + "
"; } - }) + }); + if (nbRessourcesStaticWithCookie > 0) { + if (totalCookiesSize > 2000) this.complianceLevel = 'C'; + else this.complianceLevel = 'B'; + this.comment = chrome.i18n.getMessage("rule_NoCookieForStaticRessources_Comment", [String(nbRessourcesStaticWithCookie), String(Math.round(totalCookiesSize / 100) / 10)]); + } } - - if (this.totalCookiesSize <= 512) { - this.score = 100 - } else if (this.totalCookiesSize <= 1024) { - this.score = 75 - } else if (this.totalCookiesSize <= 2048) { - this.score = 50 - } else if (this.totalCookiesSize <= 4096) { - this.score = 25 - } else { - this.score = 0 - } - } -}, 'harReceived') + }, "harReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/NoRedirect.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/NoRedirect.js index 282974a..66c4c96 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/NoRedirect.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/NoRedirect.js @@ -1,30 +1,20 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'NoRedirect', - redirectNumber: 0, - redirections: '', - score: 100, - - check: function (measures) { - if (measures.entries.length) { - measures.entries.forEach(entry => { + complianceLevel: 'A', + id: "NoRedirect", + comment: "", + detailComment: "", + + check: function (measures) { + let redirectNumber = 0; + if (measures.entries.length) measures.entries.forEach(entry => { if (entry.response) { if (isHttpRedirectCode(entry.response.status)) { - this.redirections += entry.request.url + ' ' + entry.response.status + '|' - this.redirectNumber++ + this.detailComment += entry.response.status + " " + entry.request.url + "
"; + redirectNumber++; } } - }) + }); + if (redirectNumber > 0) this.complianceLevel = 'C'; + this.comment = chrome.i18n.getMessage("rule_NoRedirect_Comment", String(redirectNumber)); } - - if (this.redirectNumber === 0) { - this.score = 100 - } else if (this.redirectNumber === 1) { - this.score = 75 - } else if (this.redirectNumber === 2) { - this.score = 35 - } else { - this.score = 0 - } - } -}, 'harReceived') + }, "harReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/OptimizeBitmapImages.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/OptimizeBitmapImages.js index 972ae57..87b7c40 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/OptimizeBitmapImages.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/OptimizeBitmapImages.js @@ -1,103 +1,39 @@ -/* eslint-disable no-undef */ -rulesManager.registerRule( - { - id: 'OptimizeBitmapImages', - img: '', - score: 100, - nbImagesToOptimize: 0, - totalMinGains: 0, - +rulesManager.registerRule({ + complianceLevel: 'A', + id: "OptimizeBitmapImages", + comment: "", + detailComment: "", + check: function (measures) { - const imagesLoadingPromises = [] - const imagesLoadingStatus = [] - const imagesToLoad = [] - - if (measures.entries) { - measures.entries.forEach((entry) => { - if (entry.response) { - const imageType = getImageTypeFromResource(entry) - if (imageType !== '') { - const myImage = new Image() - myImage.src = entry.request.url - // needed to access object in the function after - myImage.size = entry.response.content.size - myImage.rule = this - - // Creating a variable that allow us to resolve the promise outside the promise declaration - let resolveLoaded - const loadedPromise = new Promise((resolve, _reject) => { - resolveLoaded = resolve - }) - myImage.resolveLoaded = resolveLoaded - - // Setting status of image into each array - myImage.index = imagesToLoad.length - imagesToLoad.push(myImage) - imagesLoadingStatus.push(false) - - // Pushing a instance of the promise for each image - imagesLoadingPromises.push(loadedPromise) - - // Onload is executed for each image - myImage.onload = function () { - const minGains = getMinOptimisationGainsForImage(this.width * this.height, this.size, imageType) - if (minGains > 500) { - // exclude small gain - this.rule.nbImagesToOptimize++ - this.rule.totalMinGains += minGains - this.rule.img += `${this.src} ${Math.round(this.size / 1000)}, ${this.width} x ${this.height}, ${String(Math.round(minGains / 1000))}|` - } - // In case it successfully load the image, we set the status to true and resolve the promise - imagesLoadingStatus[this.index] = true - this.resolveLoaded() + let nbImagesToOptimize = 0; + let totalMinGains = 0; + if (measures.entries) measures.entries.forEach(entry => { + if (entry.response) { + const imageType = getImageTypeFromResource(entry); + if (imageType !== "") { + var myImage = new Image(); + myImage.src = entry.request.url; + // needed to access object in the function after + myImage.rule = this; + + myImage.size = entry.response.content.size; + myImage.onload = function () { + + const minGains = getMinOptimisationGainsForImage(this.width * this.height, this.size, imageType); + if (minGains > 500) { // exclude small gain + nbImagesToOptimize++; + totalMinGains += minGains; + this.rule.detailComment += chrome.i18n.getMessage("rule_OptimizeBitmapImages_DetailComment", [this.src + " , " + Math.round(this.size / 1000),this.width + "x" + this.height,String(Math.round(minGains / 1000))]) + "
"; + } + if (nbImagesToOptimize > 0) { + if (totalMinGains < 50000) this.rule.complianceLevel = 'B'; + else this.rule.complianceLevel = 'C'; + this.rule.comment = chrome.i18n.getMessage("rule_OptimizeBitmapImages_Comment", [String(nbImagesToOptimize), String(Math.round(totalMinGains / 1000))]); + showEcoRuleOnUI(this.rule); } } } - }) - } - - // Creating a variable to confirm that the score has been calculated - let resolveScoreCalculated - scoreCalculated = new Promise((resolve, _reject) => { - resolveScoreCalculated = resolve - }) - - // Creating a variable to store the context, to avoid promise to give it own to the function called inside - const context = this - - // Creating two promises : a timeout after 5s and allLoadedPromise that wait for every loaded promise into imageLoadingPromises array to be resolved - const timeoutPromise = new Promise((resolve, _reject) => { - setTimeout(resolve, 5000) - }) - const allLoadedPromises = Promise.all(imagesLoadingPromises) - - // Race will resolved after the first promise is resolved - Promise.race([timeoutPromise, allLoadedPromises]).then(() => { - imagesLoadingStatus.forEach((loaded, index) => { - if (loaded === false) { - console.warn("Optimize bitmap image - Image couldn't be loaded in time : ") - console.warn(imagesToLoad[index]) - } - }) - calculateScore(context) - resolveScoreCalculated() - }) - - function calculateScore (context) { - if (context.totalMinGains <= 0) { - context.score = 100 - } else if (context.totalMinGains <= 25000) { - context.score = 75 - } else if (context.totalMinGains <= 50000) { - context.score = 50 - } else if (context.totalMinGains <= 75000) { - context.score = 25 - } else { - context.score = 0 } - } + }); } - - }, - 'harReceived' -) + }, "harReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/OptimizeSvg.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/OptimizeSvg.js index 4cd696f..3b94feb 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/OptimizeSvg.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/OptimizeSvg.js @@ -1,30 +1,24 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'OptimizeSvg', - totalSizeToOptimize: 0, - totalResourcesToOptimize: 0, - img: '', - score: 100, - - check: function (_measures, resourceContent) { - if ((resourceContent.type.toUpperCase() === 'IMAGE') && isSvgUrl(resourceContent.url)) { - if (!isSvgOptimized(window.atob(resourceContent.content))) { - this.img += `${resourceContent.url} ${String(Math.round(resourceContent.content.length / 100) / 10)}|` - this.totalSizeToOptimize += resourceContent.content.length - this.totalResourcesToOptimize++ + complianceLevel: 'A', + id: "OptimizeSvg", + comment: "", + detailComment: "", + totalSizeToOptimize: 0, + totalResourcesToOptimize: 0, + + check: function (measures, resourceContent) { + if ((resourceContent.type === 'image') && isSvgUrl(resourceContent.url)) { + if (!isSvgOptimized(window.atob(resourceContent.content))) // code is in base64 , decode base64 data with atob + { + this.detailComment += chrome.i18n.getMessage("rule_OptimizeSvg_detailComment",[resourceContent.url,String(Math.round(resourceContent.content.length / 100) / 10)]) + '
'; + this.totalSizeToOptimize += resourceContent.content.length; + this.totalResourcesToOptimize++; + } + if (this.totalSizeToOptimize > 0) { + if (this.totalSizeToOptimize < 20000) this.complianceLevel = 'B'; + else this.complianceLevel = 'C'; + this.comment = chrome.i18n.getMessage("rule_OptimizeSvg_Comment", String(this.totalResourcesToOptimize)); + } } } - - if (this.totalSizeToOptimize === 0) { - this.score = 100 - } else if (this.totalSizeToOptimize <= 15000) { - this.score = 50 - } else if (this.totalSizeToOptimize <= 17000) { - this.score = 35 - } else if (this.totalSizeToOptimize < 20000) { - this.score = 20 - } else { - this.score = 0 - } - } -}, 'resourceContentReceived') + }, "resourceContentReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/Plugins.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/Plugins.js index 7dbe29c..d2442dc 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/Plugins.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/Plugins.js @@ -1,16 +1,13 @@ -// eslint-disable-next-line no-undef rulesManager.registerRule({ - id: 'Plugins', - pluginsNumber: 0, - score: 100, - - check: function (measures) { - this.pluginsNumber = measures.pluginsNumber - - if (this.pluginsNumber === 0) { - this.score = 100 - } else { - this.score = 0 + complianceLevel: 'A', + id: "Plugins", + comment: "", + detailComment: "", + + check: function (measures) { + if (measures.pluginsNumber > 0) { + this.complianceLevel = 'C'; + this.comment = chrome.i18n.getMessage("rule_Plugins_Comment", String(measures.pluginsNumber)); + } } - } -}, 'frameMeasuresReceived') + }, "frameMeasuresReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/PrintStyleSheet.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/PrintStyleSheet.js index ce4479b..590c45a 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/PrintStyleSheet.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/PrintStyleSheet.js @@ -1,16 +1,13 @@ -// eslint-disable-next-line no-undef rulesManager.registerRule({ - id: 'PrintStyleSheet', - printStyleSheetsNumber: 0, - score: 100, - - check: function (measures) { - this.printStyleSheetsNumber = measures.printStyleSheetsNumber - - if (this.printStyleSheetsNumber >= 1) { - this.score = 100 - } else { - this.score = 0 + complianceLevel: 'C', + id: "PrintStyleSheet", + comment: "", + detailComment: "", + + check: function (measures) { + if (measures.printStyleSheetsNumber > 0) { + this.complianceLevel = 'A'; + this.comment = chrome.i18n.getMessage("rule_PrintStyleSheet_Comment", String(measures.printStyleSheetsNumber)); + } } - } -}, 'frameMeasuresReceived') + }, "frameMeasuresReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/SocialNetworkButton.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/SocialNetworkButton.js index 3419ed3..7fa8b86 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/SocialNetworkButton.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/SocialNetworkButton.js @@ -1,33 +1,25 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'SocialNetworkButton', - nbSocialNetworkButton: 0, - socialNetworks: '', - score: 100, + complianceLevel: 'A', + id: "SocialNetworkButton", + comment: "", + detailComment: "", - check: function (measures) { - const socialNetworksToAdd = [] - if (measures.entries.length) { - measures.entries.forEach(entry => { - const officalSocialButton = getOfficialSocialButtonFormUrl(entry.request.url) - if (officalSocialButton.length > 0) { - if (socialNetworksToAdd.indexOf(officalSocialButton) === -1) { - socialNetworksToAdd.push(officalSocialButton) - this.socialNetworks += officalSocialButton + '|' - this.nbSocialNetworkButton++ - } + check: function (measures) { + let nbSocialNetworkButton = 0; + let socialNetworks = []; + if (measures.entries.length) measures.entries.forEach(entry => { + const officalSocialButton = getOfficialSocialButtonFormUrl(entry.request.url); + if (officalSocialButton.length > 0) { + if (socialNetworks.indexOf(officalSocialButton) === -1) { + socialNetworks.push(officalSocialButton); + this.detailComment += chrome.i18n.getMessage("rule_SocialNetworkButton_detailComment", officalSocialButton) + "
"; + nbSocialNetworkButton++; + } + } + }); + if (nbSocialNetworkButton > 0) { + this.complianceLevel = 'C'; + this.comment = chrome.i18n.getMessage("rule_SocialNetworkButton_Comment", String(nbSocialNetworkButton)); } - }) } - - if (this.nbSocialNetworkButton === 0) { - this.score = 100 - } else if (this.nbSocialNetworkButton <= 1) { - this.score = 35 - } else if (this.nbSocialNetworkButton <= 2) { - this.score = 20 - } else { - this.score = 0 - } - } -}, 'harReceived') +}, "harReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/StyleSheets.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/StyleSheets.js index dd186ec..38244e8 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/StyleSheets.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/StyleSheets.js @@ -1,36 +1,23 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'StyleSheets', - styleSheets: '', - styleSheetsNumber: 0, - score: 100, - - check: function (measures) { - const styleSheetsToAdd = [] - if (measures.entries.length) { - measures.entries.forEach(entry => { - if (getResponseHeaderFromResource(entry, 'content-type').toLowerCase().includes('text/css')) { - if (styleSheetsToAdd.indexOf(entry.request.url) === -1) { - styleSheetsToAdd.push(entry.request.url) - this.styleSheets += entry.request.url + '|' - this.styleSheetsNumber++ + complianceLevel: 'A', + id: "StyleSheets", + comment: "", + detailComment: "", + + check: function (measures) { + let styleSheets = []; + if (measures.entries.length) measures.entries.forEach(entry => { + if (getResponseHeaderFromResource(entry, "content-type").toLowerCase().includes('text/css')) { + if (styleSheets.indexOf(entry.request.url) === -1) { + styleSheets.push(entry.request.url); + this.detailComment += entry.request.url + "
"; } } - }) + }); + if (styleSheets.length > 2) { + if (styleSheets.length === 3) this.complianceLevel = 'B'; + else this.complianceLevel = 'C'; + this.comment = chrome.i18n.getMessage("rule_StyleSheets_Comment", String(styleSheets.length)); + } } - - if (this.styleSheetsNumber <= 1) { - this.score = 100 - } else if (this.styleSheetsNumber <= 2) { - this.score = 75 - } else if (this.styleSheetsNumber <= 3) { - this.score = 65 - } else if (this.styleSheetsNumber <= 4) { - this.score = 50 - } else if (this.styleSheetsNumber <= 7) { - this.score = 35 - } else if (this.styleSheetsNumber <= 10) { - this.score = 20 - } else { this.score = 0 } - } -}, 'harReceived') + }, "harReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/UseETags.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/UseETags.js index 99cd116..a48164d 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/UseETags.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/UseETags.js @@ -1,36 +1,32 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'UseETags', - staticResourcesSize: 0, - staticResourcesWithETagsSize: 0, - eTagsRatio: 'N.A', - eTags: '', - score: 100, - - check: function (measures) { - this.staticResourcesSize = 0 - if (measures.entries.length) { - measures.entries.forEach(entry => { + complianceLevel: 'A', + id: "UseETags", + comment: "", + detailComment: "", + + check: function (measures) { + + let staticResourcesSize = 0; + let staticResourcesWithETagsSize = 0; + + if (measures.entries.length) measures.entries.forEach(entry => { if (isStaticRessource(entry)) { - this.staticResourcesSize += entry.response.content.size + staticResourcesSize += entry.response.content.size; if (isRessourceUsingETag(entry)) { - this.staticResourcesWithETagsSize += entry.response.content.size - } else this.eTags += `${entry.request.url} ${Math.round(entry.response.content.size / 100) / 10}|` + staticResourcesWithETagsSize += entry.response.content.size; + } + else this.detailComment +=chrome.i18n.getMessage("rule_UseETags_DetailComment",`${entry.request.url} ${Math.round(entry.response.content.size / 100) / 10}`) + '
'; } - }) - } - if (this.staticResourcesSize > 0) { - this.eTagsRatio = this.staticResourcesWithETagsSize / this.staticResourcesSize * 100 - - if (this.eTagsRatio === 100) { - this.score = 100 - } else if (this.eTagsRatio >= 95) { - this.score = 75 - } else if (this.eTagsRatio > 90) { - this.score = 50 - } else { - this.score = 0 + }); + if (staticResourcesSize > 0) { + const eTagsRatio = staticResourcesWithETagsSize / staticResourcesSize * 100; + if (eTagsRatio < 95) { + if (eTagsRatio < 90) this.complianceLevel = 'C' + else this.complianceLevel = 'B'; + } + else this.complianceLevel = 'A'; + this.comment = chrome.i18n.getMessage("rule_UseETags_Comment", + Math.round(eTagsRatio * 10) / 10 + "%"); } } - } -}, 'harReceived') + }, "harReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/UseStandardTypefaces.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/UseStandardTypefaces.js index 1aaab2a..b9ffb69 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rules/UseStandardTypefaces.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rules/UseStandardTypefaces.js @@ -1,26 +1,27 @@ -/* eslint-disable no-undef */ rulesManager.registerRule({ - id: 'UseStandardTypefaces', - totalFontsSize: 0, - fonts: '', - score: 100, - - check: function (measures) { - if (measures.entries.length) { - measures.entries.forEach(entry => { + complianceLevel: 'A', + id: "UseStandardTypefaces", + comment: "", + detailComment: "", + + check: function (measures) { + let totalFontsSize = 0; + if (measures.entries.length) measures.entries.forEach(entry => { if (isFontResource(entry) && (entry.response.content.size > 0)) { - this.totalFontsSize += entry.response.content.size - this.fonts += entry.request.url + ' ' + Math.round(entry.response.content.size / 1000) + 'KB|' + totalFontsSize += entry.response.content.size; + this.detailComment += entry.request.url + " " + Math.round(entry.response.content.size / 1000) + "KB
"; } - }) - } - - if (this.totalFontsSize === 0) { - this.score = 100 - } else if (this.totalFontsSize <= 10000) { - this.score = 50 - } else { - this.score = 0 + }); + if (measures.dataEntries.length) measures.dataEntries.forEach(entry => { + if (isFontResource(entry) && (entry.response.content.size > 0)) { + totalFontsSize += entry.response.content.size; + url_toshow = entry.request.url; + if (url_toshow.length > 80) url_toshow = url_toshow.substring(0, 80) + "..."; + this.detailComment += url_toshow + " " + Math.round(entry.response.content.size / 1000) + "KB
"; + } + }); + if (totalFontsSize > 10000) this.complianceLevel = 'C'; + else if (totalFontsSize > 0) this.complianceLevel = 'B'; + if (totalFontsSize > 0) this.comment = chrome.i18n.getMessage("rule_UseStandardTypefaces_Comment", String(Math.round(totalFontsSize / 1000))); } - } -}, 'harReceived') + }, "harReceived"); \ No newline at end of file diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/rulesManager.js b/EcoSonar-API/services/greenit-analysis/greenit-core/rulesManager.js index 3d773ad..3100896 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/rulesManager.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/rulesManager.js @@ -1,5 +1,3 @@ -/* eslint-disable no-undef */ -/* eslint-disable no-unused-vars */ /* * Copyright (C) 2019 didierfred@gmail.com * @@ -16,64 +14,65 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ -rulesManager = new RulesManager() -function RulesManager () { - const rulesId = [] - const rulesChecker = new Map() - const eventListeners = new Map() - const notCompatibleRules = [] - eventListeners.set('harReceived', []) - eventListeners.set('frameMeasuresReceived', []) - eventListeners.set('resourceContentReceived', []) +rulesManager = new RulesManager(); - this.registerRule = function (ruleChecker, eventListener) { - rulesId.push(ruleChecker.id) - rulesChecker.set(ruleChecker.id, ruleChecker) - const event = eventListeners.get(eventListener) - if (event) event.push(ruleChecker.id) - } +function RulesManager() { + let rulesId = []; + let rulesChecker = new Map(); + let eventListeners = new Map(); + let notCompatibleRules = []; + eventListeners.set('harReceived', []); + eventListeners.set('frameMeasuresReceived', []); + eventListeners.set('resourceContentReceived', []); - this.getRulesId = function () { - return rulesId - } + this.registerRule = function (ruleChecker, eventListener) { + rulesId.push(ruleChecker.id); + rulesChecker.set(ruleChecker.id, ruleChecker); + let event = eventListeners.get(eventListener); + if (event) event.push(ruleChecker.id); + }; - this.getRulesNotCompatibleWithCurrentBrowser = function () { - return notCompatibleRules - } + this.getRulesId = function () { + return rulesId; + }; - this.getNewRulesChecker = function () { - return new RulesChecker() - } + this.getRulesNotCompatibleWithCurrentBrowser = function () { + return notCompatibleRules; + }; - function RulesChecker () { - const rules = new Map() - rulesChecker.forEach((ruleChecker, ruleId) => { - const ruleCheckerInstance = Object.create(ruleChecker) - // for certains rules need an initalization , method not implemented in all rules - if (ruleCheckerInstance.initialize) ruleCheckerInstance.initialize() - rules.set(ruleId, ruleCheckerInstance) - }) + this.getNewRulesChecker = function () { + return new RulesChecker(); + }; - this.sendEvent = function (event, measures, resource) { - const eventListener = eventListeners.get(event) - if (eventListener) { - eventListener.forEach(ruleID => { - this.checkRule(ruleID, measures, resource) - }) - } - } + function RulesChecker() { + let rules = new Map(); + rulesChecker.forEach((ruleChecker, ruleId) => { + let ruleCheckerInstance = Object.create(ruleChecker); + // for certains rules need an initalization , method not implemented in all rules + if (ruleCheckerInstance.initialize) ruleCheckerInstance.initialize(); + rules.set(ruleId, ruleCheckerInstance); + }); - this.checkRule = function (rule, measures, resource) { - rules.get(rule).check(measures, resource) - } + this.sendEvent = function (event, measures, resource) { + eventListener = eventListeners.get(event); + if (eventListener) { + eventListener.forEach((ruleID) => { + this.checkRule(ruleID, measures, resource); + }); + } + }; - this.getRule = function (rule) { - return rules.get(rule) - } + this.checkRule = function (rule, measures, resource) { + rules.get(rule).check(measures, resource); + }; + + this.getRule = function (rule) { + return rules.get(rule); + }; - this.getAllRules = function () { - return rules + this.getAllRules = function () { + return rules; + }; } - } } diff --git a/EcoSonar-API/services/greenit-analysis/greenit-core/utils.js b/EcoSonar-API/services/greenit-analysis/greenit-core/utils.js index 64f9e57..670fdf7 100644 --- a/EcoSonar-API/services/greenit-analysis/greenit-core/utils.js +++ b/EcoSonar-API/services/greenit-analysis/greenit-core/utils.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ /* * Copyright (C) 2016 The EcoMeter authors (https://gitlab.com/ecoconceptionweb/ecometer) * Copyright (C) 2019 didierfred@gmail.com @@ -17,320 +16,320 @@ * along with this program. If not, see . */ -const DEBUG = true - -const compressibleImageEcoSonar = [ - /^image\/bmp(;|$)/i, - /^image\/svg\+xml(;|$)/i, - /^image\/vnd\.microsoft\.icon(;|$)/i, - /^image\/x-icon(;|$)/i -] - -const imageEcoSonar = [ - /^image\/gif(;|$)/i, - /^image\/jpeg(;|$)/i, - /^image\/png(;|$)/i, - /^image\/tiff(;|$)/i -].concat(compressibleImageEcoSonar) - -const cssEcoSonar = [ - /^text\/css(;|$)/i -] - -const javascriptEcoSonar = [ - /^text\/javascript(;|$)/i, - /^application\/javascript(;|$)/i, - /^application\/x-javascript(;|$)/i -] - -const compressibleFontEcoSonar = [ - /^font\/eot(;|$)/i, - /^font\/opentype(;|$)/i -] - -const fontEcoSonar = [ - /^application\/x-font-ttf(;|$)/i, - /^application\/x-font-opentype(;|$)/i, - /^application\/font-woff(;|$)/i, - /^application\/x-font-woff(;|$)/i, - /^application\/font-woff2(;|$)/i, - /^application\/vnd.ms-fontobject(;|$)/i, - /^application\/font-sfnt(;|$)/i, - /^font\/woff2(;|$)/i -].concat(compressibleFontEcoSonar) - -const manifestEcoSonar = [ - /^text\/cache-manifest(;|$)/i, - /^application\/x-web-app-manifest\+json(;|$)/i, - /^application\/manifest\+json(;|$)/i -] +const DEBUG = true; +/* +requirejs.config({ + //By default load any module IDs from script + baseUrl: 'script/externalLibs', +}); + +// Load module require.js +requirejs(['esprima'], + (esprima) => console.log("Load esprima module")); +*/ + +const compressibleImage = [ + /^image\/bmp(;|$)/i, + /^image\/svg\+xml(;|$)/i, + /^image\/vnd\.microsoft\.icon(;|$)/i, + /^image\/x-icon(;|$)/i, +]; + +const image = [/^image\/gif(;|$)/i, /^image\/jpeg(;|$)/i, /^image\/png(;|$)/i, /^image\/tiff(;|$)/i].concat( + compressibleImage +); + +const css = [/^text\/css(;|$)/i]; + +const javascript = [/^text\/javascript(;|$)/i, /^application\/javascript(;|$)/i, /^application\/x-javascript(;|$)/i]; + +const compressibleFont = [/^font\/eot(;|$)/i, /^font\/opentype(;|$)/i]; + +const font = [ + /^application\/x-font-ttf(;|$)/i, + /^application\/x-font-opentype(;|$)/i, + /^application\/font-woff(;|$)/i, + /^application\/x-font-woff(;|$)/i, + /^application\/font-woff2(;|$)/i, + /^application\/vnd.ms-fontobject(;|$)/i, + /^application\/font-sfnt(;|$)/i, + /^font\/woff2(;|$)/i, +].concat(compressibleFont); + +const manifest = [ + /^text\/cache-manifest(;|$)/i, + /^application\/x-web-app-manifest\+json(;|$)/i, + /^application\/manifest\+json(;|$)/i, +]; // Mime types from H5B project recommendations // See https://github.com/h5bp/server-configs-apache/blob/master/dist/.htaccess#L741 -const compressibleEcoSonar = [ - /^text\/html(;|$)/i, - /^text\/plain(;|$)/i, - /^text\/xml(;|$)/i, - /^application\/json(;|$)/i, - /^application\/atom\+xml(;|$)/i, - /^application\/ld\+json(;|$)/i, - /^application\/rdf\+xml(;|$)/i, - /^application\/rss\+xml(;|$)/i, - /^application\/schema\+json(;|$)/i, - /^application\/vnd\.geo\+json(;|$)/i, - /^application\/vnd\.ms-fontobject(;|$)/i, - /^application\/xhtml\+xml(;|$)/i, - /^application\/xml(;|$)/i, - /^text\/vcard(;|$)/i, - /^text\/vnd\.rim\.location\.xloc(;|$)/i, - /^text\/vtt(;|$)/i, - /^text\/x-component(;|$)/i, - /^text\/x-cross-domain-policy(;|$)/i -].concat(javascriptEcoSonar, cssEcoSonar, compressibleImageEcoSonar, compressibleFontEcoSonar, manifestEcoSonar) - -const EcoSonar = [ - /^audio\/mpeg(;|$)/i, - /^audio\/x-ms-wma(;|$)/i, - /^audio\/vnd.rn-realaudio(;|$)/i, - /^audio\/x-wav(;|$)/i, - /^application\/ogg(;|$)/i -] - -const videoEcoSonar = [ - /^video\/mpeg(;|$)/i, - /^video\/mp4(;|$)/i, - /^video\/quicktime(;|$)/i, - /^video\/x-ms-wmv(;|$)/i, - /^video\/x-msvideo(;|$)/i, - /^video\/x-flv(;|$)/i, - /^video\/webm(;|$)/i -] - -const othersEcoSonar = [ - /^application\/x-shockwave-flash(;|$)/i, - /^application\/octet-stream(;|$)/i, - /^application\/pdf(;|$)/i, - /^application\/zip(;|$)/i -] - -const staticResourcesEcoSonar = [].concat(imageEcoSonar, javascriptEcoSonar, fontEcoSonar, cssEcoSonar, EcoSonar, videoEcoSonar, manifestEcoSonar, othersEcoSonar) - -const httpCompressionTokensEcoSonar = [ - 'br', - 'compress', - 'deflate', - 'gzip', - 'pack200-gzip' -] - -const httpRedirectCodes = [301, 302, 303, 307] +const compressible = [ + /^text\/html(;|$)/i, + /^text\/plain(;|$)/i, + /^text\/xml(;|$)/i, + /^application\/json(;|$)/i, + /^application\/atom\+xml(;|$)/i, + /^application\/ld\+json(;|$)/i, + /^application\/rdf\+xml(;|$)/i, + /^application\/rss\+xml(;|$)/i, + /^application\/schema\+json(;|$)/i, + /^application\/vnd\.geo\+json(;|$)/i, + /^application\/vnd\.ms-fontobject(;|$)/i, + /^application\/xhtml\+xml(;|$)/i, + /^application\/xml(;|$)/i, + /^text\/vcard(;|$)/i, + /^text\/vnd\.rim\.location\.xloc(;|$)/i, + /^text\/vtt(;|$)/i, + /^text\/x-component(;|$)/i, + /^text\/x-cross-domain-policy(;|$)/i, +].concat(javascript, css, compressibleImage, compressibleFont, manifest); + +const audio = [ + /^audio\/mpeg(;|$)/i, + /^audio\/x-ms-wma(;|$)/i, + /^audio\/vnd.rn-realaudio(;|$)/i, + /^audio\/x-wav(;|$)/i, + /^application\/ogg(;|$)/i, +]; + +const video = [ + /^video\/mpeg(;|$)/i, + /^video\/mp4(;|$)/i, + /^video\/quicktime(;|$)/i, + /^video\/x-ms-wmv(;|$)/i, + /^video\/x-msvideo(;|$)/i, + /^video\/x-flv(;|$)/i, + /^video\/webm(;|$)/i, +]; + +const others = [ + /^application\/x-shockwave-flash(;|$)/i, + /^application\/octet-stream(;|$)/i, + /^application\/pdf(;|$)/i, + /^application\/zip(;|$)/i, +]; + +const staticResources = [].concat(image, javascript, font, css, audio, video, manifest, others); + +const httpCompressionTokens = ['br', 'compress', 'deflate', 'gzip', 'pack200-gzip']; + +const httpRedirectCodes = [301, 302, 303, 307]; // utils for cache rule -function isStaticRessource (resource) { - const contentType = getResponseHeaderFromResource(resource, 'content-type') - return staticResourcesEcoSonar.some(value => value.test(contentType)) +function isStaticRessource(resource) { + const contentType = getResponseHeaderFromResource(resource, 'content-type'); + return staticResources.some((value) => value.test(contentType)); } -function isFontResource (resource) { - const contentType = getResponseHeaderFromResource(resource, 'content-type') - if (fontEcoSonar.some(value => value.test(contentType))) return true - // if not check url , because sometimes content-type is set to text/plain - if (contentType === 'text/plain' || contentType === '' || contentType === 'application/octet-stream') { - const url = resource.request.url - if (url.endsWith('.woff')) return true - if (url.endsWith('.woff2')) return true - if (url.includes('.woff?')) return true - if (url.includes('.woff2?')) return true - if (url.includes('.woff2.json')) return true - } - return false +function isFontResource(resource) { + const contentType = getResponseHeaderFromResource(resource, 'content-type'); + if (font.some((value) => value.test(contentType))) return true; + // if not check url , because sometimes content-type is set to text/plain + if (contentType === 'text/plain' || contentType === '' || contentType == 'application/octet-stream') { + const url = resource.request.url; + if (url.endsWith('.woff')) return true; + if (url.endsWith('.woff2')) return true; + if (url.includes('.woff?')) return true; + if (url.includes('.woff2?')) return true; + if (url.includes('.woff2.json')) return true; + } + return false; } -function getHeaderWithName (headers, headerName) { - let headerValue = '' - headers.forEach(header => { - if (header.name.toLowerCase() === headerName.toLowerCase()) headerValue = header.value - }) - return headerValue +function getHeaderWithName(headers, headerName) { + let headerValue = ''; + headers.forEach((header) => { + if (header.name.toLowerCase() === headerName.toLowerCase()) headerValue = header.value; + }); + return headerValue; } -function getResponseHeaderFromResource (resource, headerName) { - return getHeaderWithName(resource.response.headers, headerName) +function getResponseHeaderFromResource(resource, headerName) { + return getHeaderWithName(resource.response.headers, headerName); } -function getCookiesLength (resource) { - const cookies = getHeaderWithName(resource.request.headers, 'cookie') - if (cookies) return cookies.length - else return 0 +function getCookiesLength(resource) { + let cookies = getHeaderWithName(resource.request.headers, 'cookie'); + if (cookies) return cookies.length; + else return 0; } -function hasValidCacheHeaders (resource) { - const headers = resource.response.headers - const cache = {} - let isValid = false - - headers.forEach(header => { - if (header.name.toLowerCase() === 'cache-control') cache.CacheControl = header.value - if (header.name.toLowerCase() === 'expires') cache.Expires = header.value - if (header.name.toLowerCase() === 'date') cache.Date = header.value - }) - - if (cache.CacheControl) { - if (!(/(no-cache)|(no-store)|(max-age\s*=\s*0)/i).test(cache.CacheControl)) isValid = true - } - - if (cache.Expires) { - const now = cache.Date ? new Date(cache.Date) : new Date() - const expires = new Date(cache.Expires) - // Expires is in the past - if (expires < now) { - isValid = false +function hasValidCacheHeaders(resource) { + const headers = resource.response.headers; + let cache = {}; + let isValid = false; + + headers.forEach((header) => { + if (header.name.toLowerCase() === 'cache-control') cache.CacheControl = header.value; + if (header.name.toLowerCase() === 'expires') cache.Expires = header.value; + if (header.name.toLowerCase() === 'date') cache.Date = header.value; + }); + + // debug(() => `Cache headers gathered: ${JSON.stringify(cache)}`); + + if (cache.CacheControl) { + if (!/(no-cache)|(no-store)|(max-age\s*=\s*0)/i.test(cache.CacheControl)) isValid = true; } - } - return isValid + if (cache.Expires) { + let now = cache.Date ? new Date(cache.Date) : new Date(); + let expires = new Date(cache.Expires); + // Expires is in the past + if (expires < now) { + //debug(() => `Expires header is in the past ! ${now.toString()} < ${expires.toString()}`); + isValid = false; + } + } + + return isValid; } // utils for compress rule -function isCompressibleResource (resource) { - if (resource.response.content.size <= 150) return false - const contentType = getResponseHeaderFromResource(resource, 'content-type') - return compressibleEcoSonar.some(value => value.test(contentType)) +function isCompressibleResource(resource) { + if (resource.response.content.size <= 150) return false; + const contentType = getResponseHeaderFromResource(resource, 'content-type'); + return compressible.some((value) => value.test(contentType)); } -function isResourceCompressed (resource) { - const contentEncoding = getResponseHeaderFromResource(resource, 'content-encoding') - return ((contentEncoding.length > 0) && (httpCompressionTokensEcoSonar.indexOf(contentEncoding.toLocaleLowerCase()) !== -1)) +function isResourceCompressed(resource) { + const contentEncoding = getResponseHeaderFromResource(resource, 'content-encoding'); + return contentEncoding.length > 0 && httpCompressionTokens.indexOf(contentEncoding.toLocaleLowerCase()) !== -1; } // utils for ETags rule -function isRessourceUsingETag (resource) { - const eTag = getResponseHeaderFromResource(resource, 'ETag') - return eTag !== '' +function isRessourceUsingETag(resource) { + const eTag = getResponseHeaderFromResource(resource, 'ETag'); + if (eTag === '') return false; + return true; } -function getDomainFromUrl (url) { - let elements = url.split('//') - if (elements[1] === undefined) return '' - else { - elements = elements[1].split('/') // get domain with port - elements = elements[0].split(':') // get domain without port - } - return elements[0] +function getDomainFromUrl(url) { + var elements = url.split('//'); + if (elements[1] === undefined) return ''; + else { + elements = elements[1].split('/'); // get domain with port + elements = elements[0].split(':'); // get domain without port + } + return elements[0]; } /** -* Count character occurences in the given string -*/ -function countChar (char, str) { - let total = 0 - str.split('').forEach(curr => { - if (curr === char) total++ - }) - return total + * Count character occurences in the given string + */ +function countChar(char, str) { + let total = 0; + str.split('').forEach((curr) => { + if (curr === char) total++; + }); + return total; } /** * Detect minification for Javascript and CSS files */ -function isMinified (scriptContent) { - if (!scriptContent) return true - if (scriptContent.length === 0) return true - const total = scriptContent.length - 1 - const semicolons = countChar(';', scriptContent) - const linebreaks = countChar('\n', scriptContent) - if (linebreaks < 2) return true - // Empiric method to detect minified files - // - // javascript code is minified if, on average: - // - there is more than one semicolon by line - // - and there are more than 100 characters by line - return semicolons / linebreaks > 1 && linebreaks / total < 0.01 +function isMinified(scriptContent) { + if (!scriptContent) return true; + if (scriptContent.length === 0) return true; + const total = scriptContent.length - 1; + const semicolons = countChar(';', scriptContent); + const linebreaks = countChar('\n', scriptContent); + if (linebreaks < 2) return true; + // Empiric method to detect minified files + // + // javascript code is minified if, on average: + // - there is more than one semicolon by line + // - and there are more than 100 characters by line + return semicolons / linebreaks > 1 && linebreaks / total < 0.01; } /** * Detect network resources (data urls embedded in page is not network resource) * Test with request.url as request.httpVersion === "data" does not work with old chrome version (example v55) */ -function isNetworkResource (harEntry) { - return !(harEntry.request.url.startsWith('data')) +function isNetworkResource(harEntry) { + return !harEntry.request.url.startsWith('data'); } /** * Detect non-network resources (data urls embedded in page) * Test with request.url as request.httpVersion === "data" does not work with old chrome version (example v55) */ -function isDataResource (harEntry) { - return (harEntry.request.url.startsWith('data')) +function isDataResource(harEntry) { + return harEntry.request.url.startsWith('data'); } -function computeNumberOfErrorsInJSCode (code, url) { - let errorNumber = 0 - try { - const syntax = require('esprima').parse(code, { tolerant: true, sourceType: 'script', loc: true }) - if (syntax.errors) { - if (syntax.errors.length > 0) { - errorNumber += syntax.errors.length - debug(() => `url ${url} : ${syntax.errors.length} errors`) - } +function computeNumberOfErrorsInJSCode(code, url) { + let errorNumber = 0; + try { + const syntax = require('esprima').parse(code, { tolerant: true, sourceType: 'script', loc: true }); + if (syntax.errors) { + if (syntax.errors.length > 0) { + errorNumber += syntax.errors.length; + debug(() => `url ${url} : ${Syntax.errors.length} errors`); + } + } + } catch (err) { + errorNumber++; + debug(() => `url ${url} : ${err} `); } - } catch (err) { - errorNumber++ - debug(() => `url ${url} : ${err} `) - } - return errorNumber + return errorNumber; } -function isHttpRedirectCode (code) { - return httpRedirectCodes.some(value => value === code) +function isHttpRedirectCode(code) { + return httpRedirectCodes.some((value) => value === code); } -function getImageTypeFromResource (resource) { - const contentType = getResponseHeaderFromResource(resource, 'content-type') - if (contentType === 'image/png') return 'png' - if (contentType === 'image/jpeg') return 'jpeg' - if (contentType === 'image/gif') return 'gif' - if (contentType === 'image/bmp') return 'bmp' - if (contentType === 'image/tiff') return 'tiff' - return '' +function getImageTypeFromResource(resource) { + const contentType = getResponseHeaderFromResource(resource, 'content-type'); + if (contentType === 'image/png') return 'png'; + if (contentType === 'image/jpeg') return 'jpeg'; + if (contentType === 'image/gif') return 'gif'; + if (contentType === 'image/bmp') return 'bmp'; + if (contentType === 'image/tiff') return 'tiff'; + return ''; } -function getMinOptimisationGainsForImage (pixelsNumber, imageSize, imageType) { - // difficult to get good compression when image is small , images less than 10Kb are considered optimized - if (imageSize < 10000) return 0 +function getMinOptimisationGainsForImage(pixelsNumber, imageSize, imageType) { + // difficult to get good compression when image is small , images less than 10Kb are considered optimized + if (imageSize < 10000) return 0; - // image png or gif < 50Kb are considered optimized (used for transparency not supported in jpeg format) - if ((imageSize < 50000) && ((imageType === 'png') || (imageType === 'gif'))) return 0 + // image png or gif < 50Kb are considered optimized (used for transparency not supported in jpeg format) + if (imageSize < 50000 && (imageType === 'png' || imageType === 'gif')) return 0; - const imgMaxSize = Math.max(pixelsNumber / 5, 10000) // difficult to get under 10Kb + let imgMaxSize = Math.max(pixelsNumber / 5, 10000); // difficult to get under 10Kb - // image > 500Kb are too big for web site , there are considered never optimized - if (imageSize > 500000) return Math.max(imageSize - 500000, imageSize - imgMaxSize) + // image > 500Kb are too big for web site , there are considered never optimized + if (imageSize > 500000) return Math.max(imageSize - 500000, imageSize - imgMaxSize); - return Math.max(0, imageSize - imgMaxSize) + return Math.max(0, imageSize - imgMaxSize); } -function isSvgUrl (url) { - return (url.endsWith('.svg') || url.includes('.svg?')) +function isSvgUrl(url) { + if (url.endsWith('.svg')) return true; + if (url.includes('.svg?')) return true; + return false; } -function isSvgOptimized (svgImage) { - return (svgImage.length < 1000 || svgImage.search(' <') === -1) +function isSvgOptimized(svgImage) { + if (svgImage.length < 1000) return true; // do not consider image < 1KB + if (svgImage.search(' <') === -1) return true; + return false; } -function getOfficialSocialButtonFormUrl (url) { - if (url.includes('platform.twitter.com/widgets.js')) return 'tweeter' - if (url.includes('platform.linkedin.com/in.js')) return 'linkedin' - if (url.includes('assets.pinterest.com/js/pinit.js')) return 'pinterest' - if (url.includes('connect.facebook.net') && url.includes('sdk.js')) return 'facebook' - if (url.includes('platform-api.sharethis.com/js/sharethis.js')) return 'sharethis.com (mutliple social network) ' - if (url.includes('s7.addthis.com/js/300/addthis_widget.js')) return 'addthis.com (mutliple social network) ' - if (url.includes('static.addtoany.com/menu/page.js')) return 'addtoany.com (mutliple social network) ' - return '' +function getOfficialSocialButtonFormUrl(url) { + if (url.includes('platform.twitter.com/widgets.js')) return 'tweeter'; + if (url.includes('platform.linkedin.com/in.js')) return 'linkedin'; + if (url.includes('assets.pinterest.com/js/pinit.js')) return 'pinterest'; + if (url.includes('connect.facebook.net') && url.includes('sdk.js')) return 'facebook'; + if (url.includes('platform-api.sharethis.com/js/sharethis.js')) return 'sharethis.com (mutliple social network) '; + if (url.includes('s7.addthis.com/js/300/addthis_widget.js')) return 'addthis.com (mutliple social network) '; + if (url.includes('static.addtoany.com/menu/page.js')) return 'addtoany.com (mutliple social network) '; + return ''; } -function debug (lazyString) { - if (!DEBUG) return - const message = typeof lazyString === 'function' ? lazyString() : lazyString - console.log(`GreenIT-Analysis [DEBUG] ${message}\n`) +function debug(lazyString) { + if (!DEBUG) return; + const message = typeof lazyString === 'function' ? lazyString() : lazyString; + console.log(`GreenIT-Analysis [DEBUG] ${message}\n`); } diff --git a/EcoSonar-API/services/lighthouse/lighthouse.js b/EcoSonar-API/services/lighthouse/lighthouse.js index 2d24f57..28a8b35 100644 --- a/EcoSonar-API/services/lighthouse/lighthouse.js +++ b/EcoSonar-API/services/lighthouse/lighthouse.js @@ -4,6 +4,7 @@ import config from './config.js' import authenticationService from '../authenticationService.js' import userJourneyService from '../userJourneyService.js' import viewPortParams from '../../utils/viewportParams.js' +import loggerService from '../../loggers/traces.js' export default async function lighthouseAnalysis (urlList, projectName, username, password) { const browserArgs = [ @@ -40,7 +41,7 @@ export default async function lighthouseAnalysis (urlList, projectName, username const homePageReport = await lighthouse(url, config); const homePageReportLhr = homePageReport.lhr; results[index] = { ...homePageReportLhr, url } - console.log(`home page performance report generated successfully`); + loggerService.info(`home page performance report generated successfully`); }; try { @@ -52,12 +53,12 @@ export default async function lighthouseAnalysis (urlList, projectName, username for (const [index, url] of urlList.entries()) { const page = await browserLight.newPage() // prevent browser to close before ending all pages analysis try { - console.log('Lighthouse Analysis launched for url ' + url) + loggerService.info('Lighthouse Analysis launched for url ' + url) await userJourneyService.getUserFlow(projectName, url) .then((result) => { userJourney = result }).catch((error) => { - console.log(error.message) + loggerService.info(error.message) }) if (userJourney) { authenticatedPage = await userJourneyService.playUserFlowLighthouse(url, browserLight, userJourney) @@ -71,26 +72,26 @@ export default async function lighthouseAnalysis (urlList, projectName, username } //If the url requires an authentication if (authenticatedPage) { - console.log('Light house analysis with authentication in progress for the url '+ authenticatedPage.url()); + loggerService.info('Light house analysis with authentication in progress for the url '+ authenticatedPage.url()); await generateReportForHome(authenticatedPage.url(), index); } else { lighthouseResults = await lighthouse(url, { disableStorageReset: true }, config, page) - console.log('Light house analysis without authentication in progress for the url '+ url); + loggerService.info('Light house analysis without authentication in progress for the url '+ url); results[index] = { ...lighthouseResults.lhr, url } } } catch (error) { - console.error('LIGHTHOUSE ANALYSIS - An error occured when auditing ' + url) - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('LIGHTHOUSE ANALYSIS - An error occured when auditing ' + url) + loggerService.error('\x1b[31m%s\x1b[0m', error) } } } else { - console.warn('Could not log in, audit for lighthouse analysis is skipped') + loggerService.warn('Could not log in, audit for lighthouse analysis is skipped') } } catch (error) { - console.error('\x1b[31m%s\x1b[0m', error) + loggerService.error('\x1b[31m%s\x1b[0m', error) } finally { - console.log('Closing browser for Lighthouse'); + loggerService.info('Closing browser for Lighthouse'); await browserLight.close(); } return results; diff --git a/EcoSonar-API/services/projectService.js b/EcoSonar-API/services/projectService.js index 4aad2f4..54f04fe 100644 --- a/EcoSonar-API/services/projectService.js +++ b/EcoSonar-API/services/projectService.js @@ -7,6 +7,7 @@ import greenItRepository from '../dataBase/greenItRepository.js' import bestPracticesRepository from '../dataBase/bestPracticesRepository.js' import urlsProjectRepository from '../dataBase/urlsProjectRepository.js' import tempurlsProjectRepository from '../dataBase/tempurlsProjectRepository.js' +import loggerService from '../loggers/traces.js' class ProjectService { } @@ -99,7 +100,7 @@ ProjectService.prototype.getAllProjectInformations = async function (date, sortB resultWithFilters.nbProjects = Object.keys(resultWithFilters.projects).length ?? 0 resolve(sortProjects(resultWithFilters, sortBy)) } catch (err) { - console.error(err) + loggerService.error(err) reject(new Error(err.message)) } }) @@ -154,7 +155,7 @@ function sortProjects (resultList, sortParams) { } else if (scores.includes(type)) { sortedProjects = sortByScore(resultList.projects, type, order) } else { - console.error('Sort type does not exist, no sorting applied') + loggerService.error('Sort type does not exist, no sorting applied') return resultList } @@ -286,7 +287,7 @@ ProjectService.prototype.deleteProject = async function (projectName) { await tempurlsProjectRepository.deleteProject(projectName) await projectsRepository.deleteProjectPerProjectName(projectName) } catch (error) { - console.error(error) + loggerService.error(error) systemError = true } return new Promise((resolve, reject) => { diff --git a/EcoSonar-API/services/retrieveAnalysisService.js b/EcoSonar-API/services/retrieveAnalysisService.js index c2fc2e5..d363138 100644 --- a/EcoSonar-API/services/retrieveAnalysisService.js +++ b/EcoSonar-API/services/retrieveAnalysisService.js @@ -6,6 +6,8 @@ import formatLighthouseAnalysis from './format/formatLighthouseAnalysis.js' import SystemError from '../utils/SystemError.js' import formatGreenItAnalysis from './format/formatGreenItAnalysis.js' import formatW3cAnalysis from './format/formatW3cAnalysis.js' +import loggerService from '../loggers/traces.js' +import configurationService from './configurationService.js' class RetrieveAnalysisService { } @@ -152,7 +154,7 @@ RetrieveAnalysisService.prototype.getUrlAnalysis = async function (projectName, * @returns {Object} Returns the formatted values with average score for the given project */ -RetrieveAnalysisService.prototype.getProjectAnalysis = async function (projectName) { +RetrieveAnalysisService.prototype.getProjectAnalysis = async function (projectName, res) { let urlsIdKey = [] let systemError = false let greenitAnalysisDeployments = [] @@ -161,6 +163,17 @@ RetrieveAnalysisService.prototype.getProjectAnalysis = async function (projectNa let greenitLastAnalysis = null let lighthouseProjectLastAnalysis = null let w3cProjectLastAnalysis = null + let allowW3cs = false; + + configurationService.getConfiguration(projectName, res) + .then((config) => { + loggerService.info(`GET CONFIGURATION - Project ${projectName} retrieved`) + allowW3cs = config.w3c; + }) + .catch((error) => { + loggerService.error(error) + loggerService.error(`GET CONFIGURATION - Get configuration for project ${projectName} encountered an error`) + }) await urlsProjectRepository.findAll(projectName) .then((result) => { urlsIdKey = result.map((el) => el.idKey) }) @@ -221,7 +234,7 @@ RetrieveAnalysisService.prototype.getProjectAnalysis = async function (projectNa reject(new SystemError()) } else { const analysis = { - allowW3c: process.env.ECOSONAR_ENV_ALLOW_EXTERNAL_API || 'false', + allowW3c: allowW3cs, deployments: { greenit: greenitAnalysisDeployments, lighthouse: lighthouseAnalysisDeployments, @@ -323,7 +336,7 @@ RetrieveAnalysisService.prototype.getProjectScores = async function (projectName } ecoIndex = ecoIndex / lastAnalysis.length } else { - console.log('Greenit - no greenit analysis found for ' + projectName) + loggerService.info('Greenit - no greenit analysis found for ' + projectName) } }) .catch(() => { @@ -349,7 +362,7 @@ RetrieveAnalysisService.prototype.getProjectScores = async function (projectName accessScore = accessScore / lastAnalysis.length perfScore = perfScore / lastAnalysis.length } else { - console.log('No lighthouse Analysis found for project ' + projectName) + loggerService.info('No lighthouse Analysis found for project ' + projectName) } }) .catch(() => { @@ -368,7 +381,7 @@ RetrieveAnalysisService.prototype.getProjectScores = async function (projectName const w3cProjectLastAnalysis = formatW3cAnalysis.w3cLastAnalysisFormatted(lastAnalysis) w3cScore = w3cProjectLastAnalysis.score } else { - console.log('No W3C Analysis found for project ' + projectName) + loggerService.info('No W3C Analysis found for project ' + projectName) } }) .catch(() => { diff --git a/EcoSonar-API/services/retrieveBestPracticesService.js b/EcoSonar-API/services/retrieveBestPracticesService.js index 574a55b..9d8d52a 100644 --- a/EcoSonar-API/services/retrieveBestPracticesService.js +++ b/EcoSonar-API/services/retrieveBestPracticesService.js @@ -7,6 +7,7 @@ import bestPracticesSorting from './format/bestPracticesSorting.js' import projectsRepository from '../dataBase/projectsRepository.js' import urlsProjectRepository from '../dataBase/urlsProjectRepository.js' import SystemError from '../utils/SystemError.js' +import loggerService from '../loggers/traces.js' class RetrieveBestPracticesService { } @@ -31,11 +32,11 @@ RetrieveBestPracticesService.prototype.getProjectAnalysis = async function (proj await projectsRepository.getProjectSettings(projectName) .then((result) => { if (result === null) { - console.log('Best Practices is returned with default procedure score impact') + loggerService.info('Best Practices is returned with default procedure score impact') } procedure = result.procedure }).catch(() => { - console.log('Best Practices is returned with default procedure score impact') + loggerService.info('Best Practices is returned with default procedure score impact') }) await w3cRepository @@ -128,11 +129,11 @@ RetrieveBestPracticesService.prototype.getUrlBestPractices = async function (pro await projectsRepository.getProjectSettings(projectName) .then((result) => { if (result === null) { - console.log('Best Practices is returned with default procedure score impact') + loggerService.info('Best Practices is returned with default procedure score impact') } procedure = result.procedure }).catch(() => { - console.log('Best Practices is returned with default procedure score impact') + loggerService.info('Best Practices is returned with default procedure score impact') }) await w3cRepository diff --git a/EcoSonar-API/services/urlConfigurationService.js b/EcoSonar-API/services/urlConfigurationService.js index 4cda201..8399db7 100644 --- a/EcoSonar-API/services/urlConfigurationService.js +++ b/EcoSonar-API/services/urlConfigurationService.js @@ -5,6 +5,8 @@ import lighthouseRepository from '../dataBase/lighthouseRepository.js' import bestPracticesRepository from '../dataBase/bestPracticesRepository.js' import w3cRepository from '../dataBase/w3cRepository.js' import SystemError from '../utils/SystemError.js' +import loggerService from '../loggers/traces.js' +import configurationService from './configurationService.js' class UrlConfigurationService { } @@ -65,6 +67,7 @@ UrlConfigurationService.prototype.insert = async function (projectName, urlToBeA errorRegexp = error } }) + configurationService.saveConfiguration(projectName, 'false', 'false'); } if (!systemError && notInsertedArray.length === 0 && errorRegexp.length === 0) { @@ -73,13 +76,13 @@ UrlConfigurationService.prototype.insert = async function (projectName, urlToBeA return new Promise((resolve, reject) => { if (notInsertedArray.length > 0) { - console.error('URL CONFIGURATION SERVICE - Some urls are duplicated') + loggerService.error('URL CONFIGURATION SERVICE - Some urls are duplicated') reject(errorArray) } else if (errorRegexp.length > 0) { - console.error('URL CONFIGURATION SERVICE - Some urls are invalid') + loggerService.error('URL CONFIGURATION SERVICE - Some urls are invalid') reject(errorRegexp) } else if (systemError) { - console.error('URL CONFIGURATION SERVICE - An error occured when reaching the database') + loggerService.error('URL CONFIGURATION SERVICE - An error occured when reaching the database') reject(new SystemError()) } else { resolve() diff --git a/EcoSonar-API/services/userJourneyService.js b/EcoSonar-API/services/userJourneyService.js index 6bca99c..96380f4 100644 --- a/EcoSonar-API/services/userJourneyService.js +++ b/EcoSonar-API/services/userJourneyService.js @@ -1,11 +1,12 @@ import { startFlow } from 'lighthouse' -import lighthouse from 'lighthouse' import { setTimeout } from "timers/promises"; import PuppeteerHar from '../utils/PuppeteerHar.js' import { clickOnElement, waitForSelectors, applyChange } from '../utils/playSelectors.js' import urlsProjectRepository from '../dataBase/urlsProjectRepository.js' import viewPortParams from '../utils/viewportParams.js' import SystemError from '../utils/SystemError.js' +import loggerService from '../loggers/traces.js' +import { aesEncrypt, aesDecrypt } from '../services/encryptionService.js' class UserJourneyService { } @@ -59,8 +60,8 @@ UserJourneyService.prototype.playUserJourney = async function (url, browser, use break } } catch (error) { - console.error('USER JOURNEY : An error occured when launching user flow for url ' + url + ' in step ' + step.type) - console.error(error) + loggerService.error('USER JOURNEY : An error occured when launching user flow for url ' + url + ' in step ' + step.type) + loggerService.error(error) } } // await page.waitForNavigation() @@ -123,6 +124,7 @@ UserJourneyService.prototype.insertUserFlow = async function (projectName, url, if (!systemError && urlProject === null) { return Promise.reject(new Error('Url not found')) } else if (!systemError) { + findElementAndEncrypt(userFlow.steps, "selectors", "pass") await urlsProjectRepository.insertUserFlow(urlProject, userFlow) .catch(() => { systemError = true @@ -137,14 +139,37 @@ UserJourneyService.prototype.insertUserFlow = async function (projectName, url, }) } +function findElementAndEncrypt(arr, propName, propValue) { + for (var i=0; i < arr.length; i++) { + if ((arr[i][propName].toString()).includes(propValue)) { + arr[i].value = '***encrypt***'+aesEncrypt(arr[i].value) + } + } + // will return undefined if not found; you could return a default instead +} + +function findElementAndDecrypt(arr, propName, propValue) { + var test = arr.steps + for (var i=0; i < test.length; i++) { + if ((test[i][propName].toString()).includes(propValue)) { + if (test[i].value.includes('***encrypt***')) { + let newText = test[i].value.replace('***encrypt***', ''); + test[i].value = aesDecrypt(newText) + } + } + } + // will return undefined if not found; you could return a default instead +} + UserJourneyService.prototype.getUserFlow = async function (projectName, url) { return new Promise((resolve, reject) => { urlsProjectRepository.getUserFlow(projectName, url) .then((result) => { if (result === null || result.userFlow === undefined) { - console.log('GET USER FLOW - Url flow not found') + loggerService.info('GET USER FLOW - Url flow not found') reject(new Error('The page to audit does not have any user flow saved into database.')) } else { + findElementAndDecrypt(Object.fromEntries(result.userFlow), "selectors", "pass") resolve(Object.fromEntries(result.userFlow)) } }) @@ -183,7 +208,7 @@ UserJourneyService.prototype.deleteUserFlow = async function (projectName, url) } UserJourneyService.prototype.scrollUntil = async function (page, distancePercentage, selectors = null) { - console.log('AUTOSCROLL - autoscroll has started') + loggerService.log('AUTOSCROLL - autoscroll has started') if (distancePercentage) { await page.evaluate(async (percentage) => { await new Promise((resolve, _reject) => { @@ -207,7 +232,7 @@ UserJourneyService.prototype.scrollUntil = async function (page, distancePercent window.scrollTo({ top: y - 100 }) }, selectors) } - console.log('AUTOSCROLL - Autoscroll has ended ') + loggerService.log('AUTOSCROLL - Autoscroll has ended ') } const userJourneyService = new UserJourneyService() diff --git a/EcoSonar-API/swagger.js b/EcoSonar-API/swagger.js index a271f49..ce6682a 100644 --- a/EcoSonar-API/swagger.js +++ b/EcoSonar-API/swagger.js @@ -4,7 +4,7 @@ const swagger = { swaggerDefinition: { info: { title: 'API EcoSonar', - version: '3.6', + version: '3.7', description: 'Swagger UI of EcoSonar API' } }, diff --git a/EcoSonar-API/utils/playSelectors.js b/EcoSonar-API/utils/playSelectors.js index a0400fb..4431806 100644 --- a/EcoSonar-API/utils/playSelectors.js +++ b/EcoSonar-API/utils/playSelectors.js @@ -1,3 +1,5 @@ +import loggerService from '../loggers/traces.js' + async function clickOnElement (element, step) { if (step.offsetX && step.offsetY) { await element.click({ @@ -22,7 +24,7 @@ async function waitForSelectors (selectors, frame, options) { return await waitForSelector([selector], frame, options) } } catch (err) { - console.error(err.message) + loggerService.error(err.message) } } throw new Error('Could not find element for selectors: ' + JSON.stringify(selectors)) @@ -33,8 +35,7 @@ async function waitForSelector (selector, frame, options) { const firstSelector = selector[0] if (selector.length === 1 && firstSelector.indexOf('#') === 0) { const idStartsWith = firstSelector.replace('#', '') - const selectorPicker = `[id="${idStartsWith}"]` - console.log('Selector being picked '+ idStartsWith) + loggerService.info('Selector being picked '+ idStartsWith) return await frame.waitForSelector(firstSelector) } diff --git a/EcoSonar-SonarQube/README.md b/EcoSonar-SonarQube/README.md index dfe60b8..68eddd3 100644 --- a/EcoSonar-SonarQube/README.md +++ b/EcoSonar-SonarQube/README.md @@ -1,31 +1,15 @@ # Plugin SonarQube EcoSonar -## Summary - -- [Introduction](#introduction) -- [Getting Started](#getting-started) - - [Prerequisites](#prerequisites) - - [Build the EcoSonar SonarQube Plugin](#build) - - [Install Sonarqube Plugins (EcoSonar + Ecocode) manually](#install) - - - - ## Introduction This plugin aims to embed EcoSonar Audits, Recommendations as well as Configuration. -It fulfills three purposes : +It fulfills two purposes : -- enable automatic trigger of EcoSonar Analysis each time a Sonarqube analysis is done -- static code analysis with green coding rules implemented by EcoCode project -- add EcoSonar audit reports directly into Sonarqube projet User Interface - - +- enable automatic trigger of EcoSonar Analysis each time a Sonarqube analysis is made +- adding EcoSonar audit reports directly into Sonarqube projet User interface ## Getting Started - - ### Prerequisites - Sonarqube- minimum version 9.4 @@ -33,11 +17,9 @@ It fulfills three purposes : https://docs.sonarqube.org/latest/setup/install-cluster/ No constraint on the edition type. Please check with your infrastructure team which edition are you allowed to use. - Java : version 17 if Sonarqube version is 9.9 or above, otherwise version 11 -- Maven minimum version 3.8.3 +- Maven - 3.8.3 - - -### Build the EcoSonar SonarQube Plugin +### Build the SonarQube Plugin related to EcoSonar To build the plugin JAR file, first you need to retrieve the URL of the deployed server for EcoSonar API. Then run the following commands: @@ -58,8 +40,6 @@ mvn clean package -Durl=#EcoSonar-API-URL If you are running EcoSonar locally, EcoSonar-API-URL should be by default `http://localhost:3000`. - - ### Install Sonarqube Plugins (EcoSonar + Ecocode) manually 1. Copy the file located at the following path `EcoSonar-SonarQube/target/ecosonar-X-SNAPSHOT.jar`. @@ -69,18 +49,56 @@ If you are running EcoSonar locally, EcoSonar-API-URL should be by default `http To finally launch Sonarqube with the plugin, run the shell script: `bin/windows-x86-64/StartSonar.bat`. -![Ecosonar Plugin Sonarqube](../images/ecosonar-plugin.webp) - The Sonarqube instance startup logs are located in the file `logs/web.log` Official documentation about installing a SonarQube plugin: https://docs.sonarqube.org/latest/setup/install-plugin/. -### Our tip +## Launch a Sonarqube analysis from Azure Pipelines on a local SonarQube server + +1. Download ngrok https://ngrok.com/ + +2. Launch the Sonarqube server on http://localhost:9000/ + +3. On a command prompt, launch: + +``` +ngrok http 9000 +``` -Set up a CI/CD pipeline to build the executable and automatically add it in the configuration of the Sonarqube server deployed with a script. +4. Retrieve the http url provided by ngrok -### Development of new features in EcoSonar Sonarqube plugin +5. Create an authentication token on sonarqube : (go to My Account > Security > Generate Tokens) -Check this link : https://docs.sonarqube.org/latest/extend/developing-plugin/ +6. In Project Settings on Azure DevOps > Service Connections, add a connection service of type SonarQube; server url the url given by ngrok; the token generated by Sonar + +7. Choose a connection service name and add it to the pipeline script as the SonarQube Server Endpoint. + +8. Launch the correctly configured pipeline with the project key defined on the SonarQube server + +9. The analysis is launched and you should see the results on the corresponding project page. + +## Launch a Sonarqube analysis from Azure Pipelines on a deployed SonarQube server + +1. In Azure DevOps, go to project settings, then Service Connections + +2. Add a new service connection with the following parameters : + +- connection type : Sonarqube +- server URL : url of the sonarqube instance +- token : token generated when creating the Sonarqube project +- service connecton name + +3. In the Azure Pipelines file, set up Sonarqube analysis using Sonarque service connection previously registered and project key defined in the Sonarqube instance. + +## How to run dependency check + +We have added a dependency check to verify vulnerabilities in packages included in the maven project. + +In command prompt, run the following command : + +``` +mvn dependency-check:check +``` -Otherwise feel free to use our code as example with respect of licence. +It will create automatically a report located in the followng path `target/dependency-check/dependency-check-report.html`. +You will find the number of packages audited and the list of vulnerabilities detected. diff --git a/EcoSonar-SonarQube/ecocode/ecocode-csharp-plugin-1.1.0.jar b/EcoSonar-SonarQube/ecocode/ecocode-csharp-plugin-1.1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..a3f21894a47d8aae0f9c0f9b2db9a9fbe210d556 GIT binary patch literal 509241 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

?ZZak0l{R$0Wf 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 z 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

|B)Cu^I~(A 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émyFeLs--y5aHj`M?jEV8iu=o(9y>lawdL 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

_hU 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

g85D>7VE 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%0A>)WQ<&Z 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 E14NKMfB*mh diff --git a/EcoSonar-SonarQube/ecocode/ecocode-php-plugin-1.5.1.jar b/EcoSonar-SonarQube/ecocode/ecocode-php-plugin-1.5.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..9d4fed095a4c9f16d0611bb50dff209b65e6add8 GIT binary patch literal 93024 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 GFbvC<3VLYDCD)JPnm>HztC(z~j1?iLF>JZZTiZ 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 TEhsH02NEc#K}q0=3hMs=x=5lk literal 0 HcmV?d00001 diff --git a/EcoSonar-SonarQube/ecocode/ecocode-python-plugin-1.4.3.jar b/EcoSonar-SonarQube/ecocode/ecocode-python-plugin-1.4.4.jar similarity index 70% rename from EcoSonar-SonarQube/ecocode/ecocode-python-plugin-1.4.3.jar rename to EcoSonar-SonarQube/ecocode/ecocode-python-plugin-1.4.4.jar index 764b8cac9c35209a7ef856e4e71763833e3421d7..5cd61d69471b6c3e63585d255515dcfb4f1f9d0e 100644 GIT binary patch delta 11972 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 delta 11061 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 XwNz0Nufqyt1^NbLzzHib@NWJO)g#N` diff --git a/EcoSonar-SonarQube/package.json b/EcoSonar-SonarQube/package.json index b971300..b70de47 100644 --- a/EcoSonar-SonarQube/package.json +++ b/EcoSonar-SonarQube/package.json @@ -1,6 +1,6 @@ { "name": "ecosonar-plugin", - "version": "3.5", + "version": "3.6", "description": "Ecodesign and accessibility tool to help developpers minimize carbon footprint of their web-application", "main": "index.js", "scripts": { diff --git a/EcoSonar-SonarQube/pom.xml b/EcoSonar-SonarQube/pom.xml index e6d6abe..23e80b9 100644 --- a/EcoSonar-SonarQube/pom.xml +++ b/EcoSonar-SonarQube/pom.xml @@ -6,7 +6,7 @@ com.ls ecosonar - 3.6 + 3.7 sonar-plugin diff --git a/EcoSonar-SonarQube/src/main/js/ecosonar_configuration_page/components/ConfigurationPage.js b/EcoSonar-SonarQube/src/main/js/ecosonar_configuration_page/components/ConfigurationPage.js index c01b8d3..0238150 100644 --- a/EcoSonar-SonarQube/src/main/js/ecosonar_configuration_page/components/ConfigurationPage.js +++ b/EcoSonar-SonarQube/src/main/js/ecosonar_configuration_page/components/ConfigurationPage.js @@ -6,6 +6,7 @@ import DeleteUrlForm from './DeleteUrlForm' import UrlList from './UrlList' import errors from '../../utils/errors.json' import formatError from '../../format/formatError' +import { postLauchAnalysis } from '../../services/ecoSonarService' export default class ConfigurationPage extends React.PureComponent { constructor () { @@ -118,6 +119,14 @@ export default class ConfigurationPage extends React.PureComponent {

URL Configuration for project {this.state.projectName}

+ +