diff --git a/ExpressAPI/.env.vault b/ExpressAPI/.env.vault index 2001a15f6759296c27c80ced828293191ac4496c..6aee6e6dcd1c83ac4b9340a92ba68e996a98a865 100644 --- a/ExpressAPI/.env.vault +++ b/ExpressAPI/.env.vault @@ -4,8 +4,8 @@ #/--------------------------------------------------/ # development -DOTENV_VAULT_DEVELOPMENT="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" +DOTENV_VAULT_DEVELOPMENT="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" # production -DOTENV_VAULT_PRODUCTION="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" +DOTENV_VAULT_PRODUCTION="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" diff --git a/ExpressAPI/src/InitialImports.ts b/ExpressAPI/src/InitialImports.ts index 1ba7814dd1acfaf666c7878f6fb0446b82b7b4c4..7fd00732ce602000be8d23d218acc009c6652f8f 100644 --- a/ExpressAPI/src/InitialImports.ts +++ b/ExpressAPI/src/InitialImports.ts @@ -1,13 +1,17 @@ -import path from 'node:path'; +import path from 'node:path'; +import cluster from 'node:cluster'; -if ( process.env.NODE_ENV && process.env.NODE_ENV === 'production' ) { - const myEnv = require('dotenv').config(); - require('dotenv-expand').expand(myEnv); -} else { - require('dotenv').config({ path: path.join(__dirname, '../.env.keys') }); - const myEnv = require('dotenv').config({ DOTENV_KEY: process.env.DOTENV_KEY_DEVELOPMENT }); - require('dotenv-expand').expand(myEnv); +if ( cluster.isPrimary ) { + if ( process.env.NODE_ENV && process.env.NODE_ENV === 'production' ) { + const myEnv = require('dotenv').config(); + require('dotenv-expand').expand(myEnv); + } else { + require('dotenv').config({ path: path.join(__dirname, '../.env.keys') }); + const myEnv = require('dotenv').config({ DOTENV_KEY: process.env.DOTENV_KEY_DEVELOPMENT }); + require('dotenv-expand').expand(myEnv); + } } + require('./shared/helpers/TypeScriptExtensions'); // ATTENTION : This line MUST be after the dotenv.config() calls diff --git a/ExpressAPI/src/config/Config.ts b/ExpressAPI/src/config/Config.ts index beab7cc8a1cc89ed8e148766c2e1207d62a1ec8d..e3a1b78e2926f988b8a6d61675ea78f570987bc3 100644 --- a/ExpressAPI/src/config/Config.ts +++ b/ExpressAPI/src/config/Config.ts @@ -65,7 +65,8 @@ class Config { this.requestClientValidation = JSON5.parse(process.env.REQUEST_CLIENT_VALIDATION || '{"version": {}}'); this.jwtConfig = { - secret: process.env.JWT_SECRET_KEY || '', expiresIn: Number(process.env.SESSION_TIMEOUT || 0) + secret : process.env.JWT_SECRET_KEY || '', + expiresIn: Number(process.env.SESSION_TIMEOUT || 0) }; this.login = { @@ -77,29 +78,49 @@ class Config { }; this.gitlab = { - urls : JSON5.parse(process.env.GITLAB_URLS || '[]'), account: { - id: Number(process.env.GITLAB_DOJO_ACCOUNT_ID || 0), username: process.env.GITLAB_DOJO_ACCOUNT_USERNAME || '', token: process.env.GITLAB_DOJO_ACCOUNT_TOKEN || '' - }, repository: { + urls : JSON5.parse(process.env.GITLAB_URLS || '[]'), + account : { + id : Number(process.env.GITLAB_DOJO_ACCOUNT_ID || 0), + username: process.env.GITLAB_DOJO_ACCOUNT_USERNAME || '', + token : process.env.GITLAB_DOJO_ACCOUNT_TOKEN || '' + }, + repository: { timeoutAfterCreation: Number(process.env.GITLAB_REPOSITORY_CREATION_TIMEOUT || 5000) - }, group : { - root: Number(process.env.GITLAB_GROUP_ROOT_ID || 0), templates: Number(process.env.GITLAB_GROUP_TEMPLATES_ID || 0), assignments: Number(process.env.GITLAB_GROUP_ASSIGNMENTS_ID || 0), exercises: Number(process.env.GITLAB_GROUP_EXERCISES_ID || 0) - }, badges : { + }, + group : { + root : Number(process.env.GITLAB_GROUP_ROOT_ID || 0), + templates : Number(process.env.GITLAB_GROUP_TEMPLATES_ID || 0), + assignments: Number(process.env.GITLAB_GROUP_ASSIGNMENTS_ID || 0), + exercises : Number(process.env.GITLAB_GROUP_EXERCISES_ID || 0) + }, + badges : { pipeline: { - link: process.env.GITLAB_BADGE_PIPELINE_LINK || '', imageUrl: process.env.GITLAB_BADGE_PIPELINE_IMAGE_URL || '' + link : process.env.GITLAB_BADGE_PIPELINE_LINK || '', + imageUrl: process.env.GITLAB_BADGE_PIPELINE_IMAGE_URL || '' } } }; this.assignment = { - default : { - description: process.env.ASSIGNMENT_DEFAULT_DESCRIPTION?.convertWithEnvVars() ?? '', initReadme: process.env.ASSIGNMENT_DEFAULT_INIT_README?.toBoolean() ?? false, sharedRunnersEnabled: process.env.ASSIGNMENT_DEFAULT_SHARED_RUNNERS_ENABLED?.toBoolean() ?? true, visibility: process.env.ASSIGNMENT_DEFAULT_VISIBILITY || GitlabVisibility.PRIVATE, wikiEnabled: process.env.ASSIGNMENT_DEFAULT_WIKI_ENABLED?.toBoolean() ?? false, template: process.env.ASSIGNMENT_DEFAULT_TEMPLATE?.replace('{{USERNAME}}', this.gitlab.account.username).replace('{{TOKEN}}', this.gitlab.account.token) ?? '' - }, baseFiles: JSON5.parse(process.env.ASSIGNMENT_BASE_FILES || '[]'), filename: process.env.ASSIGNMENT_FILENAME || '' + default : { + description : process.env.ASSIGNMENT_DEFAULT_DESCRIPTION?.convertWithEnvVars() ?? '', + initReadme : process.env.ASSIGNMENT_DEFAULT_INIT_README?.toBoolean() ?? false, + sharedRunnersEnabled: process.env.ASSIGNMENT_DEFAULT_SHARED_RUNNERS_ENABLED?.toBoolean() ?? true, + visibility : process.env.ASSIGNMENT_DEFAULT_VISIBILITY || GitlabVisibility.PRIVATE, + wikiEnabled : process.env.ASSIGNMENT_DEFAULT_WIKI_ENABLED?.toBoolean() ?? false, + template : process.env.ASSIGNMENT_DEFAULT_TEMPLATE?.replace('{{USERNAME}}', this.gitlab.account.username).replace('{{TOKEN}}', this.gitlab.account.token) ?? '' + }, + baseFiles: JSON5.parse(process.env.ASSIGNMENT_BASE_FILES || '[]'), + filename : process.env.ASSIGNMENT_FILENAME || '' }; this.exercise = { - maxSameName: Number(process.env.EXERCISE_MAX_SAME_NAME || 0), resultsFolder: process.env.EXERCISE_RESULTS_FOLDER?.convertWithEnvVars() ?? '', pipelineResultsFolder: process.env.EXERCISE_PIPELINE_RESULTS_FOLDER ?? '', //Do not use convertWithEnvVars() because it is used in the exercise creation and muste be interpreted at exercise runtime - default : { - description: process.env.EXERCISE_DEFAULT_DESCRIPTION?.convertWithEnvVars() ?? '', visibility: process.env.EXERCISE_DEFAULT_VISIBILITY || GitlabVisibility.PRIVATE + maxSameName : Number(process.env.EXERCISE_MAX_SAME_NAME || 0), + resultsFolder : process.env.EXERCISE_RESULTS_FOLDER?.convertWithEnvVars() ?? '', + pipelineResultsFolder: process.env.EXERCISE_PIPELINE_RESULTS_FOLDER ?? '', //Do not use convertWithEnvVars() because it is used in the exercise creation and muste be interpreted at exercise runtime + default : { + description: process.env.EXERCISE_DEFAULT_DESCRIPTION?.convertWithEnvVars() ?? '', + visibility : process.env.EXERCISE_DEFAULT_VISIBILITY || GitlabVisibility.PRIVATE } }; }