From 6b22d0e15fa2eb8e940c3f4b229f1f5ef1313cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 21 Feb 2022 20:12:45 -0500 Subject: [PATCH] fix: #10334, use the correct env vars for web install --- install/web.js | 39 ++++++++++++++++++------------------- src/install.js | 2 +- src/views/install/index.tpl | 2 +- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/install/web.js b/install/web.js index 68b4ae5a7b..53128b4cf1 100644 --- a/install/web.js +++ b/install/web.js @@ -113,7 +113,7 @@ function ping(req, res) { } function welcome(req, res) { - const dbs = ['redis', 'mongo', 'postgres']; + const dbs = ['mongo', 'redis', 'postgres']; const databases = dbs.map((databaseName) => { const questions = require(`../src/database/${databaseName}`).questions.filter(question => question && !question.hideOnWebInstall); @@ -146,29 +146,28 @@ function install(req, res) { } req.setTimeout(0); installing = true; - const setupEnvVars = nconf.get(); - for (const [key, value] of Object.entries(req.body)) { - if (!process.env.hasOwnProperty(key)) { - setupEnvVars[key.replace(':', '__')] = value; - } - } - // Flatten any objects in setupEnvVars - const pushToRoot = function (parentKey, key) { - setupEnvVars[`${parentKey}__${key}`] = setupEnvVars[parentKey][key]; + const database = nconf.get('database') || req.body.database || 'mongo'; + const setupEnvVars = { + ...process.env, + NODEBB_URL: nconf.get('url') || req.body.url || (`${req.protocol}://${req.get('host')}`), + NODEBB_PORT: nconf.get('port') || 4567, + NODEBB_ADMIN_USERNAME: nconf.get('admin:username') || req.body['admin:username'], + NODEBB_ADMIN_PASSWORD: nconf.get('admin:password') || req.body['admin:password'], + NODEBB_ADMIN_EMAIL: nconf.get('admin:email') || req.body['admin:email'], + NODEBB_DB: database, + NODEBB_DB_HOST: nconf.get(`${database}:host`) || req.body[`${database}:host`], + NODEBB_DB_PORT: nconf.get(`${database}:port`) || req.body[`${database}:port`], + NODEBB_DB_USER: nconf.get(`${database}:username`) || req.body[`${database}:username`], + NODEBB_DB_PASSWORD: nconf.get(`${database}:password`) || req.body[`${database}:password`], + NODEBB_DB_NAME: nconf.get(`${database}:database`) || req.body[`${database}:database`], + NODEBB_DB_SSL: nconf.get(`${database}:ssl`) || req.body[`${database}:ssl`], + defaultPlugins: JSON.stringify(nconf.get('defaultplugins') || nconf.get('defaultPlugins') || []), }; - for (const [parentKey, value] of Object.entries(setupEnvVars)) { - if (typeof value === 'object' && value !== null && !Array.isArray(value)) { - Object.keys(value).forEach(key => pushToRoot(parentKey, key)); - delete setupEnvVars[parentKey]; - } else if (Array.isArray(value)) { - setupEnvVars[parentKey] = JSON.stringify(value); - } - } winston.info('Starting setup process'); - winston.info(setupEnvVars); - launchUrl = setupEnvVars.url; + winston.info(JSON.stringify(setupEnvVars, null, 4)); + launchUrl = setupEnvVars.NODEBB_URL; const child = require('child_process').fork('app', ['--setup'], { env: setupEnvVars, diff --git a/src/install.js b/src/install.js index 9afa1b54f9..97e981d071 100644 --- a/src/install.js +++ b/src/install.js @@ -493,7 +493,7 @@ async function enableDefaultPlugins() { ]; let customDefaults = nconf.get('defaultplugins') || nconf.get('defaultPlugins'); - winston.info('[install/defaultPlugins] customDefaults', customDefaults); + winston.info(`[install/defaultPlugins] customDefaults ${String(customDefaults)}`); if (customDefaults && customDefaults.length) { try { diff --git a/src/views/install/index.tpl b/src/views/install/index.tpl index e022d64639..3b9a9e8ce3 100644 --- a/src/views/install/index.tpl +++ b/src/views/install/index.tpl @@ -100,8 +100,8 @@