fix: #10334, use the correct env vars for web install

isekai-main
Barış Soner Uşaklı 3 years ago
parent 496e9013d3
commit 6b22d0e15f

@ -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,

@ -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 {

@ -100,8 +100,8 @@
<div class="col-sm-7 col-xs-12 input-field">
<label for="install:database">Database Type</label>
<select id="install:database" class="form-control" name="database">
<option value="redis">Redis</option>
<option value="mongo">MongoDB</option>
<option value="redis">Redis</option>
<option value="postgres">PostgreSQL</option>
</select>
</div>

Loading…
Cancel
Save