From 8ad2466846e66c82d45d962b113083a7d756f292 Mon Sep 17 00:00:00 2001 From: PierreDemailly Date: Sat, 16 Mar 2024 13:51:39 +0100 Subject: [PATCH] Revert "chore: remove cli & ui translations (#124)" This reverts commit a2284570c02bb0423bbff1e531d2091874d5cbea. --- README.md | 4 +- index.html | 752 +++++++++++++++++++++++++++++++++++++++---- languages/english.js | 99 +++++- languages/french.js | 99 +++++- views/index.html | 50 +++ 5 files changed, 944 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index 31b4d22..3db196d 100644 --- a/README.md +++ b/README.md @@ -44,10 +44,10 @@ import * as i18n from "@nodesecure/i18n"; await i18n.setLocalLang("french"); -console.log(i18n.getToken("depWalker.dep_tree")); +console.log(i18n.getToken("cli.executing_at")); // Using parameters -console.log(i18n.getToken("depWalker.success_tarball", "14", "15ms")); +console.log(i18n.getToken("cli.min_nodejs_version", "14")); ``` You can consult the real use case of the API in the following codes: [here](https://github.com/NodeSecure/cli/blob/master/src/commands/lang.js) and [here](https://github.com/NodeSecure/cli/blob/master/src/commands/vulnerability.js). diff --git a/index.html b/index.html index 7a930df..636e458 100644 --- a/index.html +++ b/index.html @@ -41,10 +41,316 @@

NodeSecure - i18n

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyValue
executing_atExecuting node-secure at
min_nodejs_versionnode-secure requires at least Node.js {0} to work! Please upgrade your Node.js version.
no_dep_to_proceedNo dependencies to proceed!
successfully_written_jsonSuccessfully written results file at: {0}
http_server_startedHTTP Server started on:
commands.option_depthMaximum dependencies depth to fetch
commands.option_outputJson file output name
commands.strategyVulnerabilities source to use
commands.hydrate_db.descHydrate the vulnerabilities db
commands.hydrate_db.runningHydrating local vulnerabilities with the '{0}' database...
commands.hydrate_db.successSuccessfully hydrated vulnerabilities database in {0}
commands.cwd.descRun security analysis on the current working dir
commands.cwd.option_nolockDisable usage of package-lock.json
commands.cwd.option_fullEnable full analysis of packages in the package-lock.json file
commands.from.descRun security analysis on a given package from npm registry
commands.from.searchingSearching for '{0}' manifest in the npm registry...
commands.from.fetchedFetched {0} manifest from npm in {1}
commands.auto.descRun security analysis on cwd or a given package and automatically open the web interface
commands.auto.option_keepKeep the nsecure-result.json file on the system after execution
commands.open.descRun an HTTP Server with a given nsecure JSON file
commands.open.option_portDefine the running port
commands.verify.descRun a complete advanced analysis for a given npm package
commands.verify.option_jsonStdout the analysis payload
commands.summary.descDisplay your analysis results
commands.summary.warningsWarnings
commands.lang.descConfigure the CLI default language
commands.lang.question_textWhat language do you want to use?
commands.lang.new_selection'{0}' has been selected as the new CLI language!
commands.scorecard.descDisplay the OSSF Scorecard for a given repository or the current working directory (Github only, e.g. fastify/fastify)
executing_atExécution de node-secure à
min_nodejs_versionnode-secure nécessite au moins Node.js {0} pour fonctionner ! Merci de mettre à jour votre version de Node.js.
no_dep_to_proceedAucune dépendance pour continuer !
successfully_written_jsonEcriture du fichier de résultats réalisée avec succès ici : {0}
http_server_startedServeur HTTP démarré sur :
commands.option_depthNiveau de profondeur de dépendances maximum à aller chercher
commands.option_outputNom de sortie du fichier json
commands.strategySource de vulnérabilités à utiliser
commands.hydrate_db.descMise à jour de la base de vulnérabilité
commands.hydrate_db.runningMise à jour locale des vulnérabilités avec la base '{0}'...
commands.hydrate_db.successBase de vulnérabilités mise à jour avec succès en {0}
commands.cwd.descDémarre une analyse de sécurité sur le dossier courant
commands.cwd.option_nolockDésactive l'utilisation du package-lock.json
commands.cwd.option_fullActive l'analyse complète des packages présents dans le package-lock.json
commands.from.descDémarre une analyse de sécurité sur un package donné du registre npm
commands.from.searchingRecherche du manifest '{0}' dans le registre npm...
commands.from.fetchedManifest du package {0} importé de npm en {1}
commands.auto.descDémarre une analyse de sécurité sur le dossier courant ou sur un package donné et ouvre automatiquement l'interface web
commands.auto.option_keepConserve le fichier nsecure-result.json sur le systeme après l'exécution
commands.open.descDémarre un serveur HTTP avec un fichier .json nsecure donné
commands.open.option_portPort à utiliser
commands.verify.descDémarre une analyse AST avancée pour un package npm donné
commands.verify.option_jsonAffiche le résultat d'analyse dans la sortie standard
commands.summary.descAfficher le résultat de votre analyse
commands.summary.warningsMenaces
commands.lang.descConfigure le langage par défaut du CLI
commands.lang.question_textQuel langage souhaitez-vous utiliser ?
commands.lang.new_selection'{0}' a été selectionné comme étant le nouveau langage du CLI !
commands.scorecard.descAfficher la fiche de score OSSF du repo donné ou du repertoire actuel (Github uniquement ex. fastify/fastify)
@@ -53,110 +359,444 @@

NodeSecure - i18n

- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + +
dep_tree dependency tree
fetch_and_walk_deps Fetching and walking through all dependencies...
fetch_on_registry Waiting for packages to fetch from npm registry...
waiting_tarball Waiting tarballs to be analyzed...
fetch_metadata Fetched package metadata:
analyzed_tarball Analyzed npm tarballs:
success_fetch_deptree Successfully navigated through the {0} in {1}
success_tarball Successfully analyzed {0} packages tarballs in {1}
success_registry_metadata Successfully fetched required metadata for all packages!
failed_rmdir Failed to remove directory {0}!
dep_tree arbre de dépendances
fetch_and_walk_deps Importation et analyse de l'intégralité des dépendances...
fetch_on_registry En attente de l'importation des packages du registre npm...
waiting_tarball En attente de l'analyse des tarballs...
fetch_metadata Metadonnées importées :
analyzed_tarball Tarballs en cours d'analyse :
success_fetch_deptree Analyse de l'{0} terminée avec succès en {1}
success_tarball {0} tarballs analysés avec succès en {1}
success_registry_metadata Metadonnées requises pour tous les packages importées avec succès !
failed_rmdir Suppression du dossier {0} échouée !
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyValue
stats.titleGlobal Stats
stats.total_packagesTotal of packages
stats.total_sizeTotal size
stats.indirect_depsPackages with indirect dependencies
stats.extensionsExtensions
stats.licensesLicenses
stats.maintainersMaintainers
package_info.navigation.overviewoverview
package_info.navigation.filesfiles
package_info.navigation.dependenciesscripts & dependencies
package_info.navigation.warningsthreats in source code
package_info.navigation.vulnerabilitiesvulnerabilities (CVE)
package_info.navigation.licenseslicenses conformance (SPDX)
package_info.title.maintainersmaintainers
package_info.title.releasesreleases
package_info.title.filesfiles
package_info.title.files_extensionsfiles extensions
package_info.title.unused_depsunused dependencies
package_info.title.missing_depsmissing dependencies
package_info.title.minified_filesminified files
package_info.title.node_depsnode.js dependencies
package_info.title.third_party_depsthird-party dependencies
package_info.title.required_filesrequired files
package_info.title.used_byused by
package_info.title.openSsfScorecardSecurity Scorecard
package_info.helpers.warningsLearn more about warnings in the
package_info.helpers.spdxLearn more about the SPDX project
package_info.helpers.herehere
package_info.helpers.openSsfLearn more about the OpenSSF Scorecards
searchbar_placeholderSearch
loading_nodes... Loading nodes ...
please_wait(Please wait)
stats.titleStats Globales
stats.total_packagesTotal des packages
stats.total_sizePoids total
stats.indirect_depsPackages avec dépendances indirectes
stats.extensionsExtensions
stats.licensesLicences
stats.maintainersMainteneurs
package_info.navigation.overviewvue d'ensemble
package_info.navigation.filesfichiers
package_info.navigation.dependenciesscripts & dépendances
package_info.navigation.warningsmenaces dans le code
package_info.navigation.vulnerabilitiesvulnérabilités
package_info.navigation.licensesconformité des licences (SPDX)
package_info.title.maintainersmainteneurs
package_info.title.releasesversions publiées
package_info.title.filesfichiers
package_info.title.files_extensionsextensions des fichiers
package_info.title.unused_depsdépendances non utilisées
package_info.title.missing_depsdépendances manquantes
package_info.title.minified_filesfichiers minifiés
package_info.title.node_depsdépendances node.js
package_info.title.third_party_depsdépendances tierces
package_info.title.required_filesfichiers requis
package_info.title.used_byutilisé par
package_info.title.openSsfScorecardFiche de score de sécurité
package_info.helpers.warningsEn savoir plus sur les alertes avec le
package_info.helpers.spdxEn savoir plus sur le projet SPDX
package_info.helpers.hereici
package_info.helpers.openSsfEn savoir plus sur les fiches de score OpenSSF
searchbar_placeholderRecherche
loading_nodes... Chargement des noeuds ...
please_wait(Merci de patienter)
@@ -167,30 +807,30 @@

NodeSecure - i18n

- + - + - + - + - + - +
disable_scarf This dependency could collect data against your will so think to disable it with the env var: SCARF_ANALYTICS
keylogging This dependency can retrieve your keyboard and mouse inputs. It can be used for 'keylogging' attacks/malwares.
disable_scarf Cette dépendance peut récolter des données contre votre volonté, pensez donc à la désactiver en fournissant la variable d'environnement SCARF_ANALYTICS
keylogging Cette dépendance peut obtenir vos entrées clavier ou de souris. Cette dépendance peut être utilisée en tant que 'keylogging' attacks/malwares.
@@ -201,142 +841,142 @@

NodeSecure - i18n

- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
parsing_error An error occured when parsing the JavaScript code with meriyah. It mean that the conversion from string to AST has failed. If you encounter such an error, please open an issue here.
unsafe_import Unable to follow an import (require, require.resolve) statement/expr.
unsafe_regex A RegEx as been detected as unsafe and may be used for a ReDoS Attack.
unsafe_stmt Usage of dangerous statement like eval() or Function("").
unsafe_assign Assignment of a protected global like process or require.
encoded_literal An encoded literal has been detected (it can be an hexa value, unicode sequence, base64 string etc)
suspicious_file A suspicious file with more than ten encoded-literal in it.
short_identifiers This mean that all identifiers has an average length below 1.5. Only possible if the file contains more than 5 identifiers.
suspicious_literal This mean that the sum of suspicious score of all Literals is bigger than 3.
obfuscated_code There's a very high probability that the code is obfuscated...
weak_crypto The code probably contains a weak crypto algorithm (md5, sha1...)
shady_link A Literal (string) contains an URL to a domain with a suspicious extension.
zeroSemVer Semantic version starting with 0.x (unstable project or without serious versioning)
parsing_error Une erreur s'est produite lors de l'analyse du code JavaScript avec meriyah. Cela signifie que la conversion de la chaîne de caractères AST a échoué. Si vous rencontrez une telle erreur, veuillez ouvrir une issue.
unsafe_import Impossible de suivre l'import (require, require.resolve) statement/expr.
unsafe_regex Un RegEx a été détecté comme non sûr et peut être utilisé pour une attaque ReDoS.
unsafe_stmt Utilisation d'instructions dangereuses comme eval() ou Function("").
unsafe_assign Attribution d'un processus ou d'un require global protégé..
encoded_literal Un code littérale a été découvert (il peut s'agir d'une valeur hexa, d'une séquence unicode, d'une chaîne de caractères base64, etc.)
short_identifiers Cela signifie que tous les identifiants ont une longueur moyenne inférieure à 1,5. Seulement possible si le fichier contient plus de 5 identifiants.
suspicious_literal Cela signifie que la somme des scores suspects de tous les littéraux est supérieure à 3.
suspicious_file Un fichier suspect contenant plus de dix chaines de caractères encodés
obfuscated_code Il y a une très forte probabilité que le code soit obscurci...
weak_crypto Le code contient probablement un algorithme de chiffrement faiblement sécurisé (md5, sha1...).
shady_link Un Literal (string) contient une URL vers un domaine avec une extension suspecte.
zeroSemVer Version sémantique commençant par 0.x (projet instable ou sans versionnement sérieux)
diff --git a/languages/english.js b/languages/english.js index b84453b..13cddeb 100644 --- a/languages/english.js +++ b/languages/english.js @@ -5,6 +5,58 @@ import { taggedString as tS } from "../src/utils.js"; const lang = "en"; +const cli = { + executing_at: "Executing node-secure at", + min_nodejs_version: tS`node-secure requires at least Node.js ${0} to work! Please upgrade your Node.js version.`, + no_dep_to_proceed: "No dependencies to proceed!", + successfully_written_json: tS`Successfully written results file at: ${0}`, + http_server_started: "HTTP Server started on:", + commands: { + option_depth: "Maximum dependencies depth to fetch", + option_output: "Json file output name", + strategy: "Vulnerabilities source to use", + hydrate_db: { + desc: "Hydrate the vulnerabilities db", + running: tS`Hydrating local vulnerabilities with the '${0}' database...`, + success: tS`Successfully hydrated vulnerabilities database in ${0}` + }, + cwd: { + desc: "Run security analysis on the current working dir", + option_nolock: "Disable usage of package-lock.json", + option_full: "Enable full analysis of packages in the package-lock.json file" + }, + from: { + desc: "Run security analysis on a given package from npm registry", + searching: tS`Searching for '${0}' manifest in the npm registry...`, + fetched: tS`Fetched ${0} manifest from npm in ${1}` + }, + auto: { + desc: "Run security analysis on cwd or a given package and automatically open the web interface", + option_keep: "Keep the nsecure-result.json file on the system after execution" + }, + open: { + desc: "Run an HTTP Server with a given nsecure JSON file", + option_port: "Define the running port" + }, + verify: { + desc: "Run a complete advanced analysis for a given npm package", + option_json: "Stdout the analysis payload" + }, + summary: { + desc: "Display your analysis results", + warnings: "Warnings" + }, + lang: { + desc: "Configure the CLI default language", + question_text: "What language do you want to use?", + new_selection: tS`'${0}' has been selected as the new CLI language!` + }, + scorecard: { + desc: "Display the OSSF Scorecard for a given repository or the current working directory (Github only, e.g. fastify/fastify)" + } + } +}; + const depWalker = { dep_tree: "dependency tree", fetch_and_walk_deps: "Fetching and walking through all dependencies...", @@ -18,6 +70,51 @@ const depWalker = { failed_rmdir: tS`Failed to remove directory ${0}!` }; +const ui = { + stats: { + title: "Global Stats", + total_packages: "Total of packages", + total_size: "Total size", + indirect_deps: "Packages with indirect dependencies", + extensions: "Extensions", + licenses: "Licenses", + maintainers: "Maintainers" + }, + package_info: { + navigation: { + overview: "overview", + files: "files", + dependencies: "scripts & dependencies", + warnings: "threats in source code", + vulnerabilities: "vulnerabilities (CVE)", + licenses: "licenses conformance (SPDX)" + }, + title: { + maintainers: "maintainers", + releases: "releases", + files: "files", + files_extensions: "files extensions", + unused_deps: "unused dependencies", + missing_deps: "missing dependencies", + minified_files: "minified files", + node_deps: "node.js dependencies", + third_party_deps: "third-party dependencies", + required_files: "required files", + used_by: "used by", + openSsfScorecard: "Security Scorecard" + }, + helpers: { + warnings: "Learn more about warnings in the", + spdx: "Learn more about the SPDX project", + here: "here", + openSsf: "Learn more about the OpenSSF Scorecards" + } + }, + searchbar_placeholder: "Search", + loading_nodes: "... Loading nodes ...", + please_wait: "(Please wait)" +}; + const warnings = { disable_scarf: "This dependency could collect data against your will so think to disable it with the env var: SCARF_ANALYTICS", keylogging: "This dependency can retrieve your keyboard and mouse inputs. It can be used for 'keylogging' attacks/malwares." @@ -39,4 +136,4 @@ const sast_warnings = { zeroSemVer: "Semantic version starting with 0.x (unstable project or without serious versioning)" }; -export const english = { lang, depWalker, warnings, sast_warnings }; +export const english = { lang, cli, depWalker, ui, warnings, sast_warnings }; diff --git a/languages/french.js b/languages/french.js index 1202486..8537ba3 100644 --- a/languages/french.js +++ b/languages/french.js @@ -5,6 +5,58 @@ import { taggedString as tS } from "../src/utils.js"; const lang = "fr"; +const cli = { + executing_at: "Exécution de node-secure à", + min_nodejs_version: tS`node-secure nécessite au moins Node.js ${0} pour fonctionner ! Merci de mettre à jour votre version de Node.js.`, + no_dep_to_proceed: "Aucune dépendance pour continuer !", + successfully_written_json: tS`Ecriture du fichier de résultats réalisée avec succès ici : ${0}`, + http_server_started: "Serveur HTTP démarré sur :", + commands: { + option_depth: "Niveau de profondeur de dépendances maximum à aller chercher", + option_output: "Nom de sortie du fichier json", + strategy: "Source de vulnérabilités à utiliser", + hydrate_db: { + desc: "Mise à jour de la base de vulnérabilité", + running: tS`Mise à jour locale des vulnérabilités avec la base '${0}'...`, + success: tS`Base de vulnérabilités mise à jour avec succès en ${0}` + }, + cwd: { + desc: "Démarre une analyse de sécurité sur le dossier courant", + option_nolock: "Désactive l'utilisation du package-lock.json", + option_full: "Active l'analyse complète des packages présents dans le package-lock.json" + }, + from: { + desc: "Démarre une analyse de sécurité sur un package donné du registre npm", + searching: tS`Recherche du manifest '${0}' dans le registre npm...`, + fetched: tS`Manifest du package ${0} importé de npm en ${1}` + }, + auto: { + desc: "Démarre une analyse de sécurité sur le dossier courant ou sur un package donné et ouvre automatiquement l'interface web", + option_keep: "Conserve le fichier nsecure-result.json sur le systeme après l'exécution" + }, + open: { + desc: "Démarre un serveur HTTP avec un fichier .json nsecure donné", + option_port: "Port à utiliser" + }, + verify: { + desc: "Démarre une analyse AST avancée pour un package npm donné", + option_json: "Affiche le résultat d'analyse dans la sortie standard" + }, + summary: { + desc: "Afficher le résultat de votre analyse", + warnings: "Menaces" + }, + lang: { + desc: "Configure le langage par défaut du CLI", + question_text: "Quel langage souhaitez-vous utiliser ?", + new_selection: tS`'${0}' a été selectionné comme étant le nouveau langage du CLI !` + }, + scorecard: { + desc: "Afficher la fiche de score OSSF du repo donné ou du repertoire actuel (Github uniquement ex. fastify/fastify)" + } + } +}; + const depWalker = { dep_tree: "arbre de dépendances", fetch_and_walk_deps: "Importation et analyse de l'intégralité des dépendances...", @@ -18,6 +70,51 @@ const depWalker = { failed_rmdir: tS`Suppression du dossier ${0} échouée !` }; +const ui = { + stats: { + title: "Stats Globales", + total_packages: "Total des packages", + total_size: "Poids total", + indirect_deps: "Packages avec dépendances indirectes", + extensions: "Extensions", + licenses: "Licences", + maintainers: "Mainteneurs" + }, + package_info: { + navigation: { + overview: "vue d'ensemble", + files: "fichiers", + dependencies: "scripts & dépendances", + warnings: "menaces dans le code", + vulnerabilities: "vulnérabilités", + licenses: "conformité des licences (SPDX)" + }, + title: { + maintainers: "mainteneurs", + releases: "versions publiées", + files: "fichiers", + files_extensions: "extensions des fichiers", + unused_deps: "dépendances non utilisées ", + missing_deps: "dépendances manquantes", + minified_files: "fichiers minifiés", + node_deps: "dépendances node.js", + third_party_deps: "dépendances tierces", + required_files: "fichiers requis", + used_by: "utilisé par", + openSsfScorecard: "Fiche de score de sécurité" + }, + helpers: { + warnings: "En savoir plus sur les alertes avec le", + spdx: "En savoir plus sur le projet SPDX", + here: "ici", + openSsf: "En savoir plus sur les fiches de score OpenSSF" + } + }, + searchbar_placeholder: "Recherche", + loading_nodes: "... Chargement des noeuds ...", + please_wait: "(Merci de patienter)" +}; + const warnings = { disable_scarf: "Cette dépendance peut récolter des données contre votre volonté, pensez donc à la désactiver en fournissant la variable d'environnement SCARF_ANALYTICS", keylogging: "Cette dépendance peut obtenir vos entrées clavier ou de souris. Cette dépendance peut être utilisée en tant que 'keylogging' attacks/malwares." @@ -41,4 +138,4 @@ const sast_warnings = { zeroSemVer: "Version sémantique commençant par 0.x (projet instable ou sans versionnement sérieux)" }; -export const french = { lang, depWalker, warnings, sast_warnings }; +export const french = { lang, cli, depWalker, ui, warnings, sast_warnings }; diff --git a/views/index.html b/views/index.html index 2845d0a..14a8aeb 100644 --- a/views/index.html +++ b/views/index.html @@ -41,10 +41,36 @@

NodeSecure - i18n

+ + + + + + + + + [[ for (props in z.template('cli', 'english')) { ]] + + + + + [[ } ]] + + + [[ for (props in z.template('cli', 'french')) { ]] + + + + + [[ } ]] + +
KeyValue
[[-z.printKey(props)]][[-z.printValue(props, z.template('cli', 'english'))]]
[[-z.printKey(props)]][[-z.printValue(props, z.template('cli', 'french'))]]
@@ -69,6 +95,30 @@

NodeSecure - i18n

[[ } ]]
+ + + + + + + + + [[ for (props in z.template('ui', 'english')) { ]] + + + + + [[ } ]] + + + [[ for (props in z.template('ui', 'french')) { ]] + + + + + [[ } ]] + +
KeyValue
[[-z.printKey(props)]][[-z.printValue(props, z.template('ui', 'english'))]]
[[-z.printKey(props)]][[-z.printValue(props, z.template('ui', 'french'))]]