diff --git a/src/addons.js b/src/addons.js index ca61ea260..1c23859dd 100644 --- a/src/addons.js +++ b/src/addons.js @@ -1666,39 +1666,41 @@ function setupMongoDb(app, options, callback) { appdb.getAddonConfigByName(app.id, 'mongodb', '%MONGODB_PASSWORD', function (error, existingPassword) { if (error && error.reason !== BoxError.NOT_FOUND) return callback(error); - const database = hat(8 * 8); // 16 bytes. keep this short, so as to not overflow the 127 byte index length in MongoDB < 4.4 + appdb.getAddonConfigByName(app.id, 'mongodb', '%MONGODB_DATABASE', function (error, database) { + database = database || hat(8 * 8); // 16 bytes. keep this short, so as to not overflow the 127 byte index length in MongoDB < 4.4 - const data = { - database: database, - username: app.id, - password: error ? hat(4 * 128) : existingPassword, - oplog: !!options.oplog - }; + const data = { + database: database, + username: app.id, + password: error ? hat(4 * 128) : existingPassword, + oplog: !!options.oplog + }; - getContainerDetails('mongodb', 'CLOUDRON_MONGODB_TOKEN', function (error, result) { - if (error) return callback(error); + getContainerDetails('mongodb', 'CLOUDRON_MONGODB_TOKEN', function (error, result) { + if (error) return callback(error); - request.post(`https://${result.ip}:3000/databases?access_token=${result.token}`, { rejectUnauthorized: false, json: data }, function (error, response) { - if (error) return callback(new BoxError(BoxError.ADDONS_ERROR, `Network error setting up mongodb: ${error.message}`)); - if (response.statusCode !== 201) return callback(new BoxError(BoxError.ADDONS_ERROR, `Error setting up mongodb. Status code: ${response.statusCode} message: ${response.body.message}`)); + request.post(`https://${result.ip}:3000/databases?access_token=${result.token}`, { rejectUnauthorized: false, json: data }, function (error, response) { + if (error) return callback(new BoxError(BoxError.ADDONS_ERROR, `Network error setting up mongodb: ${error.message}`)); + if (response.statusCode !== 201) return callback(new BoxError(BoxError.ADDONS_ERROR, `Error setting up mongodb. Status code: ${response.statusCode} message: ${response.body.message}`)); - const envPrefix = app.manifest.manifestVersion <= 1 ? '' : 'CLOUDRON_'; + const envPrefix = app.manifest.manifestVersion <= 1 ? '' : 'CLOUDRON_'; - var env = [ - { name: `${envPrefix}MONGODB_URL`, value : `mongodb://${data.username}:${data.password}@mongodb:27017/${data.database}` }, - { name: `${envPrefix}MONGODB_USERNAME`, value : data.username }, - { name: `${envPrefix}MONGODB_PASSWORD`, value: data.password }, - { name: `${envPrefix}MONGODB_HOST`, value : 'mongodb' }, - { name: `${envPrefix}MONGODB_PORT`, value : '27017' }, - { name: `${envPrefix}MONGODB_DATABASE`, value : data.database } - ]; + var env = [ + { name: `${envPrefix}MONGODB_URL`, value : `mongodb://${data.username}:${data.password}@mongodb:27017/${data.database}` }, + { name: `${envPrefix}MONGODB_USERNAME`, value : data.username }, + { name: `${envPrefix}MONGODB_PASSWORD`, value: data.password }, + { name: `${envPrefix}MONGODB_HOST`, value : 'mongodb' }, + { name: `${envPrefix}MONGODB_PORT`, value : '27017' }, + { name: `${envPrefix}MONGODB_DATABASE`, value : data.database } + ]; - if (options.oplog) { - env.push({ name: `${envPrefix}MONGODB_OPLOG_URL`, value : `mongodb://${data.username}:${data.password}@mongodb:27017/local?authSource=${data.database}` }); - } + if (options.oplog) { + env.push({ name: `${envPrefix}MONGODB_OPLOG_URL`, value : `mongodb://${data.username}:${data.password}@mongodb:27017/local?authSource=${data.database}` }); + } - debugApp(app, 'Setting mongodb addon config to %j', env); - appdb.setAddonConfig(app.id, 'mongodb', env, callback); + debugApp(app, 'Setting mongodb addon config to %j', env); + appdb.setAddonConfig(app.id, 'mongodb', env, callback); + }); }); }); });