diff --git a/src/addons.js b/src/addons.js index 9544b3f18..96b97d5ab 100644 --- a/src/addons.js +++ b/src/addons.js @@ -906,13 +906,13 @@ function setupSendMail(app, options, callback) { debugApp(app, 'Setting up SendMail'); - const envPrefix = app.manifest.manifestVersion <= 1 ? '' : 'CLOUDRON_'; - - appdb.getAddonConfigByName(app.id, 'sendmail', `${envPrefix}MAIL_SMTP_PASSWORD`, function (error, existingPassword) { + appdb.getAddonConfigByName(app.id, 'sendmail', '%MAIL_SMTP_PASSWORD', function (error, existingPassword) { if (error && error.reason !== DatabaseError.NOT_FOUND) return callback(error); var password = error ? hat(4 * 48) : existingPassword; // see box#565 for password length + const envPrefix = app.manifest.manifestVersion <= 1 ? '' : 'CLOUDRON_'; + var env = [ { name: `${envPrefix}MAIL_SMTP_SERVER`, value: 'mail' }, { name: `${envPrefix}MAIL_SMTP_PORT`, value: '2525' }, @@ -944,13 +944,13 @@ function setupRecvMail(app, options, callback) { debugApp(app, 'Setting up recvmail'); - const envPrefix = app.manifest.manifestVersion <= 1 ? '' : 'CLOUDRON_'; - - appdb.getAddonConfigByName(app.id, 'recvmail', `${envPrefix}MAIL_IMAP_PASSWORD`, function (error, existingPassword) { + appdb.getAddonConfigByName(app.id, 'recvmail', '%MAIL_IMAP_PASSWORD', function (error, existingPassword) { if (error && error.reason !== DatabaseError.NOT_FOUND) return callback(error); var password = error ? hat(4 * 48) : existingPassword; // see box#565 for password length + const envPrefix = app.manifest.manifestVersion <= 1 ? '' : 'CLOUDRON_'; + var env = [ { name: `${envPrefix}MAIL_IMAP_SERVER`, value: 'mail' }, { name: `${envPrefix}MAIL_IMAP_PORT`, value: '9993' }, @@ -1040,9 +1040,7 @@ function setupMySql(app, options, callback) { debugApp(app, 'Setting up mysql'); - const envPrefix = app.manifest.manifestVersion <= 1 ? '' : 'CLOUDRON_'; - - appdb.getAddonConfigByName(app.id, 'mysql', `${envPrefix}MYSQL_PASSWORD`, function (error, existingPassword) { + appdb.getAddonConfigByName(app.id, 'mysql', '%MYSQL_PASSWORD', function (error, existingPassword) { if (error && error.reason !== DatabaseError.NOT_FOUND) return callback(error); const tmp = mysqlDatabaseName(app.id); @@ -1061,6 +1059,8 @@ function setupMySql(app, options, callback) { if (error) return callback(new Error('Error setting up mysql: ' + error)); if (response.statusCode !== 201) return callback(new Error(`Error setting up mysql. Status code: ${response.statusCode} message: ${response.body.message}`)); + const envPrefix = app.manifest.manifestVersion <= 1 ? '' : 'CLOUDRON_'; + var env = [ { name: `${envPrefix}MYSQL_USERNAME`, value: data.username }, { name: `${envPrefix}MYSQL_PASSWORD`, value: data.password }, @@ -1255,9 +1255,8 @@ function setupPostgreSql(app, options, callback) { debugApp(app, 'Setting up postgresql'); const { database, username } = postgreSqlNames(app.id); - const envPrefix = app.manifest.manifestVersion <= 1 ? '' : 'CLOUDRON_'; - appdb.getAddonConfigByName(app.id, 'postgresql', `${envPrefix}POSTGRESQL_PASSWORD`, function (error, existingPassword) { + appdb.getAddonConfigByName(app.id, 'postgresql', '%POSTGRESQL_PASSWORD', function (error, existingPassword) { if (error && error.reason !== DatabaseError.NOT_FOUND) return callback(error); const data = { @@ -1273,6 +1272,8 @@ function setupPostgreSql(app, options, callback) { if (error) return callback(new Error('Error setting up postgresql: ' + error)); if (response.statusCode !== 201) return callback(new Error(`Error setting up postgresql. Status code: ${response.statusCode} message: ${response.body.message}`)); + const envPrefix = app.manifest.manifestVersion <= 1 ? '' : 'CLOUDRON_'; + var env = [ { name: `${envPrefix}POSTGRESQL_URL`, value: `postgres://${data.username}:${data.password}@postgresql/${data.database}` }, { name: `${envPrefix}POSTGRESQL_USERNAME`, value: data.username }, @@ -1430,9 +1431,7 @@ function setupMongoDb(app, options, callback) { debugApp(app, 'Setting up mongodb'); - const envPrefix = app.manifest.manifestVersion <= 1 ? '' : 'CLOUDRON_'; - - appdb.getAddonConfigByName(app.id, 'mongodb', `${envPrefix}MONGODB_PASSWORD`, function (error, existingPassword) { + appdb.getAddonConfigByName(app.id, 'mongodb', '%MONGODB_PASSWORD', function (error, existingPassword) { if (error && error.reason !== DatabaseError.NOT_FOUND) return callback(error); const data = { @@ -1448,6 +1447,8 @@ function setupMongoDb(app, options, callback) { if (error) return callback(new Error('Error setting up mongodb: ' + error)); if (response.statusCode !== 201) return callback(new Error(`Error setting up mongodb. Status code: ${response.statusCode}`)); + const envPrefix = app.manifest.manifestVersion <= 1 ? '' : 'CLOUDRON_'; + var env = [ { name: `${envPrefix}MONGODB_URL`, value : `mongodb://${data.username}:${data.password}@mongodb/${data.database}` }, { name: `${envPrefix}MONGODB_USERNAME`, value : data.username }, @@ -1569,9 +1570,7 @@ function setupRedis(app, options, callback) { return callback(); } - const envPrefix = app.manifest.manifestVersion <= 1 ? '' : 'CLOUDRON_'; - - appdb.getAddonConfigByName(app.id, 'redis', `${envPrefix}REDIS_PASSWORD`, function (error, existingPassword) { + appdb.getAddonConfigByName(app.id, 'redis', '%REDIS_PASSWORD', function (error, existingPassword) { if (error && error.reason !== DatabaseError.NOT_FOUND) return callback(error); const redisPassword = error ? hat(4 * 48) : existingPassword; // see box#362 for password length @@ -1610,6 +1609,8 @@ function setupRedis(app, options, callback) { --label isCloudronManaged=true \ --read-only -v /tmp -v /run ${tag}`; + const envPrefix = app.manifest.manifestVersion <= 1 ? '' : 'CLOUDRON_'; + var env = [ { name: `${envPrefix}REDIS_URL`, value: 'redis://redisuser:' + redisPassword + '@redis-' + app.id }, { name: `${envPrefix}REDIS_PASSWORD`, value: redisPassword }, diff --git a/src/appdb.js b/src/appdb.js index 2a359cae3..7d0d057bd 100644 --- a/src/appdb.js +++ b/src/appdb.js @@ -635,13 +635,13 @@ function getAppIdByAddonConfigValue(addonId, namePattern, value, callback) { }); } -function getAddonConfigByName(appId, addonId, name, callback) { +function getAddonConfigByName(appId, addonId, namePattern, callback) { assert.strictEqual(typeof appId, 'string'); assert.strictEqual(typeof addonId, 'string'); - assert.strictEqual(typeof name, 'string'); + assert.strictEqual(typeof namePattern, 'string'); assert.strictEqual(typeof callback, 'function'); - database.query('SELECT value FROM appAddonConfigs WHERE appId = ? AND addonId = ? AND name = ?', [ appId, addonId, name ], function (error, results) { + database.query('SELECT value FROM appAddonConfigs WHERE appId = ? AND addonId = ? AND name LIKE ?', [ appId, addonId, namePattern ], function (error, results) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (results.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND));