Start moving db code to use BoxError as well

This commit is contained in:
Girish Ramakrishnan
2019-10-24 11:13:48 -07:00
parent ec216d9828
commit a017af41c5
30 changed files with 396 additions and 447 deletions

View File

@@ -28,7 +28,6 @@ exports = module.exports = {
var assert = require('assert'), var assert = require('assert'),
BoxError = require('./boxerror.js'), BoxError = require('./boxerror.js'),
DatabaseError = require('./databaseerror.js'),
debug = require('debug')('box:accesscontrol'), debug = require('debug')('box:accesscontrol'),
tokendb = require('./tokendb.js'), tokendb = require('./tokendb.js'),
users = require('./users.js'), users = require('./users.js'),
@@ -122,7 +121,7 @@ function validateToken(accessToken, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
tokendb.getByAccessToken(accessToken, function (error, token) { tokendb.getByAccessToken(accessToken, function (error, token) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, null /* user */, 'Invalid Token'); // will end up as a 401 if (error && error.reason === BoxError.NOT_FOUND) return callback(null, null /* user */, 'Invalid Token'); // will end up as a 401
if (error) return callback(error); // this triggers 'internal error' in passport if (error) return callback(error); // this triggers 'internal error' in passport
users.get(token.identifier, function (error, user) { users.get(token.identifier, function (error, user) {

View File

@@ -904,7 +904,7 @@ function setupSendMail(app, options, callback) {
debugApp(app, 'Setting up SendMail'); debugApp(app, 'Setting up SendMail');
appdb.getAddonConfigByName(app.id, 'sendmail', '%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); if (error && error.reason !== BoxError.NOT_FOUND) return callback(error);
var password = error ? hat(4 * 48) : existingPassword; // see box#565 for password length var password = error ? hat(4 * 48) : existingPassword; // see box#565 for password length
@@ -1038,7 +1038,7 @@ function setupMySql(app, options, callback) {
debugApp(app, 'Setting up mysql'); debugApp(app, 'Setting up mysql');
appdb.getAddonConfigByName(app.id, 'mysql', '%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); if (error && error.reason !== BoxError.NOT_FOUND) return callback(error);
const tmp = mysqlDatabaseName(app.id); const tmp = mysqlDatabaseName(app.id);
@@ -1254,7 +1254,7 @@ function setupPostgreSql(app, options, callback) {
const { database, username } = postgreSqlNames(app.id); const { database, username } = postgreSqlNames(app.id);
appdb.getAddonConfigByName(app.id, 'postgresql', '%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); if (error && error.reason !== BoxError.NOT_FOUND) return callback(error);
const data = { const data = {
database: database, database: database,
@@ -1429,7 +1429,7 @@ function setupMongoDb(app, options, callback) {
debugApp(app, 'Setting up mongodb'); debugApp(app, 'Setting up mongodb');
appdb.getAddonConfigByName(app.id, 'mongodb', '%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); if (error && error.reason !== BoxError.NOT_FOUND) return callback(error);
const data = { const data = {
database: app.id, database: app.id,
@@ -1567,7 +1567,7 @@ function setupRedis(app, options, callback) {
const redisName = 'redis-' + app.id; const redisName = 'redis-' + app.id;
appdb.getAddonConfigByName(app.id, 'redis', '%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); if (error && error.reason !== BoxError.NOT_FOUND) return callback(error);
const redisPassword = error ? hat(4 * 48) : existingPassword; // see box#362 for password length const redisPassword = error ? hat(4 * 48) : existingPassword; // see box#362 for password length
const redisServiceToken = hat(4 * 48); const redisServiceToken = hat(4 * 48);

View File

@@ -33,8 +33,8 @@ exports = module.exports = {
var assert = require('assert'), var assert = require('assert'),
async = require('async'), async = require('async'),
BoxError = require('./boxerror.js'),
database = require('./database.js'), database = require('./database.js'),
DatabaseError = require('./databaseerror'),
safe = require('safetydance'), safe = require('safetydance'),
util = require('util'); util = require('util');
@@ -126,11 +126,11 @@ function get(id, callback) {
+ ' LEFT OUTER JOIN appEnvVars ON apps.id = appEnvVars.appId' + ' LEFT OUTER JOIN appEnvVars ON apps.id = appEnvVars.appId'
+ ' LEFT OUTER JOIN subdomains ON apps.id = subdomains.appId AND subdomains.type = ?' + ' LEFT OUTER JOIN subdomains ON apps.id = subdomains.appId AND subdomains.type = ?'
+ ' WHERE apps.id = ? GROUP BY apps.id', [ exports.SUBDOMAIN_TYPE_PRIMARY, id ], function (error, result) { + ' WHERE apps.id = ? GROUP BY apps.id', [ exports.SUBDOMAIN_TYPE_PRIMARY, id ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
database.query('SELECT ' + SUBDOMAIN_FIELDS + ' FROM subdomains WHERE appId = ? AND type = ?', [ id, exports.SUBDOMAIN_TYPE_REDIRECT ], function (error, alternateDomains) { database.query('SELECT ' + SUBDOMAIN_FIELDS + ' FROM subdomains WHERE appId = ? AND type = ?', [ id, exports.SUBDOMAIN_TYPE_REDIRECT ], function (error, alternateDomains) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
result[0].alternateDomains = alternateDomains; result[0].alternateDomains = alternateDomains;
@@ -153,11 +153,11 @@ function getByHttpPort(httpPort, callback) {
+ ' LEFT OUTER JOIN appEnvVars ON apps.id = appEnvVars.appId' + ' LEFT OUTER JOIN appEnvVars ON apps.id = appEnvVars.appId'
+ ' LEFT OUTER JOIN subdomains ON apps.id = subdomains.appId AND subdomains.type = ?' + ' LEFT OUTER JOIN subdomains ON apps.id = subdomains.appId AND subdomains.type = ?'
+ ' WHERE httpPort = ? GROUP BY apps.id', [ exports.SUBDOMAIN_TYPE_PRIMARY, httpPort ], function (error, result) { + ' WHERE httpPort = ? GROUP BY apps.id', [ exports.SUBDOMAIN_TYPE_PRIMARY, httpPort ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
database.query('SELECT ' + SUBDOMAIN_FIELDS + ' FROM subdomains WHERE appId = ? AND type = ?', [ result[0].id, exports.SUBDOMAIN_TYPE_REDIRECT ], function (error, alternateDomains) { database.query('SELECT ' + SUBDOMAIN_FIELDS + ' FROM subdomains WHERE appId = ? AND type = ?', [ result[0].id, exports.SUBDOMAIN_TYPE_REDIRECT ], function (error, alternateDomains) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
result[0].alternateDomains = alternateDomains; result[0].alternateDomains = alternateDomains;
postProcess(result[0]); postProcess(result[0]);
@@ -179,11 +179,11 @@ function getByContainerId(containerId, callback) {
+ ' LEFT OUTER JOIN appEnvVars ON apps.id = appEnvVars.appId' + ' LEFT OUTER JOIN appEnvVars ON apps.id = appEnvVars.appId'
+ ' LEFT OUTER JOIN subdomains ON apps.id = subdomains.appId AND subdomains.type = ?' + ' LEFT OUTER JOIN subdomains ON apps.id = subdomains.appId AND subdomains.type = ?'
+ ' WHERE containerId = ? GROUP BY apps.id', [ exports.SUBDOMAIN_TYPE_PRIMARY, containerId ], function (error, result) { + ' WHERE containerId = ? GROUP BY apps.id', [ exports.SUBDOMAIN_TYPE_PRIMARY, containerId ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
database.query('SELECT ' + SUBDOMAIN_FIELDS + ' FROM subdomains WHERE appId = ? AND type = ?', [ result[0].id, exports.SUBDOMAIN_TYPE_REDIRECT ], function (error, alternateDomains) { database.query('SELECT ' + SUBDOMAIN_FIELDS + ' FROM subdomains WHERE appId = ? AND type = ?', [ result[0].id, exports.SUBDOMAIN_TYPE_REDIRECT ], function (error, alternateDomains) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
result[0].alternateDomains = alternateDomains; result[0].alternateDomains = alternateDomains;
postProcess(result[0]); postProcess(result[0]);
@@ -204,10 +204,10 @@ function getAll(callback) {
+ ' LEFT OUTER JOIN appEnvVars ON apps.id = appEnvVars.appId' + ' LEFT OUTER JOIN appEnvVars ON apps.id = appEnvVars.appId'
+ ' LEFT OUTER JOIN subdomains ON apps.id = subdomains.appId AND subdomains.type = ?' + ' LEFT OUTER JOIN subdomains ON apps.id = subdomains.appId AND subdomains.type = ?'
+ ' GROUP BY apps.id ORDER BY apps.id', [ exports.SUBDOMAIN_TYPE_PRIMARY ], function (error, results) { + ' GROUP BY apps.id ORDER BY apps.id', [ exports.SUBDOMAIN_TYPE_PRIMARY ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
database.query('SELECT ' + SUBDOMAIN_FIELDS + ' FROM subdomains WHERE type = ?', [ exports.SUBDOMAIN_TYPE_REDIRECT ], function (error, alternateDomains) { database.query('SELECT ' + SUBDOMAIN_FIELDS + ' FROM subdomains WHERE type = ?', [ exports.SUBDOMAIN_TYPE_REDIRECT ], function (error, alternateDomains) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
alternateDomains.forEach(function (d) { alternateDomains.forEach(function (d) {
var domain = results.find(function (a) { return d.appId === a.id; }); var domain = results.find(function (a) { return d.appId === a.id; });
@@ -290,9 +290,9 @@ function add(id, appStoreId, manifest, location, domain, portBindings, data, cal
} }
database.transaction(queries, function (error) { database.transaction(queries, function (error) {
if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS, error.message)); if (error && error.code === 'ER_DUP_ENTRY') return callback(new BoxError(BoxError.ALREADY_EXISTS, error.message));
if (error && error.code === 'ER_NO_REFERENCED_ROW_2') return callback(new DatabaseError(DatabaseError.NOT_FOUND, 'no such domain')); if (error && error.code === 'ER_NO_REFERENCED_ROW_2') return callback(new BoxError(BoxError.NOT_FOUND, 'no such domain'));
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -303,7 +303,7 @@ function exists(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT 1 FROM apps WHERE id=?', [ id ], function (error, result) { database.query('SELECT 1 FROM apps WHERE id=?', [ id ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null, result.length !== 0); return callback(null, result.length !== 0);
}); });
@@ -314,7 +314,7 @@ function getPortBindings(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + PORT_BINDINGS_FIELDS + ' FROM appPortBindings WHERE appId = ?', [ id ], function (error, results) { database.query('SELECT ' + PORT_BINDINGS_FIELDS + ' FROM appPortBindings WHERE appId = ?', [ id ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
var portBindings = { }; var portBindings = { };
for (var i = 0; i < results.length; i++) { for (var i = 0; i < results.length; i++) {
@@ -331,8 +331,8 @@ function delPortBinding(hostPort, type, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM appPortBindings WHERE hostPort=? AND type=?', [ hostPort, type ], function (error, result) { database.query('DELETE FROM appPortBindings WHERE hostPort=? AND type=?', [ hostPort, type ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null); callback(null);
}); });
@@ -350,8 +350,8 @@ function del(id, callback) {
]; ];
database.transaction(queries, function (error, results) { database.transaction(queries, function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (results[3].affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (results[3].affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null); callback(null);
}); });
@@ -367,7 +367,7 @@ function clear(callback) {
database.query.bind(null, 'DELETE FROM appEnvVars'), database.query.bind(null, 'DELETE FROM appEnvVars'),
database.query.bind(null, 'DELETE FROM apps') database.query.bind(null, 'DELETE FROM apps')
], function (error) { ], function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null); return callback(null);
}); });
} }
@@ -438,9 +438,9 @@ function updateWithConstraints(id, app, constraints, callback) {
} }
database.transaction(queries, function (error, results) { database.transaction(queries, function (error, results) {
if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS, error.message)); if (error && error.code === 'ER_DUP_ENTRY') return callback(new BoxError(BoxError.ALREADY_EXISTS, error.message));
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (results[results.length - 1].affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (results[results.length - 1].affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
return callback(null); return callback(null);
}); });
@@ -476,7 +476,7 @@ function getAppStoreIds(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT id, appStoreId FROM apps', function (error, results) { database.query('SELECT id, appStoreId FROM apps', function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, results); callback(null, results);
}); });
@@ -501,7 +501,7 @@ function setAddonConfig(appId, addonId, env, callback) {
} }
database.query(query + queryArgs.join(','), args, function (error) { database.query(query + queryArgs.join(','), args, function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null); return callback(null);
}); });
@@ -514,7 +514,7 @@ function unsetAddonConfig(appId, addonId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM appAddonConfigs WHERE appId = ? AND addonId = ?', [ appId, addonId ], function (error) { database.query('DELETE FROM appAddonConfigs WHERE appId = ? AND addonId = ?', [ appId, addonId ], function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -525,7 +525,7 @@ function unsetAddonConfigByAppId(appId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM appAddonConfigs WHERE appId = ?', [ appId ], function (error) { database.query('DELETE FROM appAddonConfigs WHERE appId = ?', [ appId ], function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -537,7 +537,7 @@ function getAddonConfig(appId, addonId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT name, value FROM appAddonConfigs WHERE appId = ? AND addonId = ?', [ appId, addonId ], function (error, results) { database.query('SELECT name, value FROM appAddonConfigs WHERE appId = ? AND addonId = ?', [ appId, addonId ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, results); callback(null, results);
}); });
@@ -548,7 +548,7 @@ function getAddonConfigByAppId(appId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT name, value FROM appAddonConfigs WHERE appId = ?', [ appId ], function (error, results) { database.query('SELECT name, value FROM appAddonConfigs WHERE appId = ?', [ appId ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, results); callback(null, results);
}); });
@@ -561,8 +561,8 @@ function getAppIdByAddonConfigValue(addonId, namePattern, value, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT appId FROM appAddonConfigs WHERE addonId = ? AND name LIKE ? AND value = ?', [ addonId, namePattern, value ], function (error, results) { database.query('SELECT appId FROM appAddonConfigs WHERE addonId = ? AND name LIKE ? AND value = ?', [ addonId, namePattern, value ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (results.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (results.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null, results[0].appId); callback(null, results[0].appId);
}); });
@@ -575,8 +575,8 @@ function getAddonConfigByName(appId, addonId, namePattern, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT value FROM appAddonConfigs WHERE appId = ? AND addonId = ? AND name LIKE ?', [ appId, addonId, namePattern ], 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 (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (results.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (results.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null, results[0].value); callback(null, results[0].value);
}); });

View File

@@ -5,7 +5,7 @@ var appdb = require('./appdb.js'),
assert = require('assert'), assert = require('assert'),
async = require('async'), async = require('async'),
auditSource = require('./auditsource.js'), auditSource = require('./auditsource.js'),
DatabaseError = require('./databaseerror.js'), BoxError = require('./boxerror.js'),
debug = require('debug')('box:apphealthmonitor'), debug = require('debug')('box:apphealthmonitor'),
docker = require('./docker.js'), docker = require('./docker.js'),
eventlog = require('./eventlog.js'), eventlog = require('./eventlog.js'),
@@ -57,7 +57,7 @@ function setHealth(app, health, callback) {
} }
appdb.setHealth(app.id, health, healthTime, function (error) { appdb.setHealth(app.id, health, healthTime, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null); // app uninstalled? if (error && error.reason === BoxError.NOT_FOUND) return callback(null); // app uninstalled?
if (error) return callback(error); if (error) return callback(error);
app.health = health; app.health = health;

View File

@@ -108,7 +108,6 @@ var appdb = require('./appdb.js'),
backups = require('./backups.js'), backups = require('./backups.js'),
BoxError = require('./boxerror.js'), BoxError = require('./boxerror.js'),
constants = require('./constants.js'), constants = require('./constants.js'),
DatabaseError = require('./databaseerror.js'),
debug = require('debug')('box:apps'), debug = require('debug')('box:apps'),
docker = require('./docker.js'), docker = require('./docker.js'),
domaindb = require('./domaindb.js'), domaindb = require('./domaindb.js'),
@@ -475,8 +474,8 @@ function get(appId, callback) {
if (error) return callback(error); if (error) return callback(error);
appdb.get(appId, function (error, app) { appdb.get(appId, function (error, app) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such app')); if (error && error.reason === BoxError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such app'));
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
postProcess(app, domainObjectMap); postProcess(app, domainObjectMap);
@@ -493,8 +492,8 @@ function getByContainerId(containerId, callback) {
if (error) return callback(error); if (error) return callback(error);
appdb.getByContainerId(containerId, function (error, app) { appdb.getByContainerId(containerId, function (error, app) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such app')); if (error && error.reason === BoxError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such app'));
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
postProcess(app, domainObjectMap); postProcess(app, domainObjectMap);
@@ -546,7 +545,7 @@ function getAll(callback) {
if (error) return callback(error); if (error) return callback(error);
appdb.getAll(function (error, apps) { appdb.getAll(function (error, apps) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
apps.forEach((app) => postProcess(app, domainObjectMap)); apps.forEach((app) => postProcess(app, domainObjectMap));
@@ -631,9 +630,8 @@ function addTask(appId, installationState, task, callback) {
if (error) return callback(error); if (error) return callback(error);
appdb.setTask(appId, _.extend({ installationState, taskId, error: null }, values), { requiredState, requireNullTaskId }, function (error) { appdb.setTask(appId, _.extend({ installationState, taskId, error: null }, values), { requiredState, requireNullTaskId }, function (error) {
if (error && error.reason === DatabaseError.ALREADY_EXISTS) return callback(new BoxError(BoxError.ALREADY_EXISTS, error.message)); if (error && error.reason === BoxError.NOT_FOUND) return callback(new BoxError(BoxError.BAD_STATE, 'Another task is scheduled for this app')); // could be because app went away OR a taskId exists
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.BAD_STATE, 'Another task is scheduled for this app')); // could be because app went away OR a taskId exists if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (scheduleNow) scheduleTask(appId, installationState, taskId, NOOP_CALLBACK); if (scheduleNow) scheduleTask(appId, installationState, taskId, NOOP_CALLBACK);
@@ -779,9 +777,8 @@ function install(data, user, auditSource, callback) {
}; };
appdb.add(appId, appStoreId, manifest, location, domain, translatePortBindings(portBindings, manifest), data, function (error) { appdb.add(appId, appStoreId, manifest, location, domain, translatePortBindings(portBindings, manifest), data, function (error) {
if (error && error.reason === DatabaseError.ALREADY_EXISTS) return callback(getDuplicateErrorDetails(error.message, locations, domainObjectMap, portBindings)); if (error && error.reason === BoxError.ALREADY_EXISTS) return callback(getDuplicateErrorDetails(error.message, locations, domainObjectMap, portBindings));
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, error.message)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
purchaseApp({ appId: appId, appstoreId: appStoreId, manifestId: manifest.id }, function (error) { purchaseApp({ appId: appId, appstoreId: appStoreId, manifestId: manifest.id }, function (error) {
if (error) return callback(error); if (error) return callback(error);
@@ -828,8 +825,7 @@ function setAccessRestriction(appId, accessRestriction, auditSource, callback) {
if (error) return callback(error); if (error) return callback(error);
appdb.update(appId, { accessRestriction: accessRestriction }, function (error) { appdb.update(appId, { accessRestriction: accessRestriction }, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such app')); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
eventlog.add(eventlog.ACTION_APP_CONFIGURE, auditSource, { appId: appId, app: app, accessRestriction: accessRestriction }); eventlog.add(eventlog.ACTION_APP_CONFIGURE, auditSource, { appId: appId, app: app, accessRestriction: accessRestriction });
@@ -851,8 +847,7 @@ function setLabel(appId, label, auditSource, callback) {
if (error) return callback(error); if (error) return callback(error);
appdb.update(appId, { label: label }, function (error) { appdb.update(appId, { label: label }, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such app')); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
eventlog.add(eventlog.ACTION_APP_CONFIGURE, auditSource, { appId: appId, app: app, label: label }); eventlog.add(eventlog.ACTION_APP_CONFIGURE, auditSource, { appId: appId, app: app, label: label });
@@ -874,8 +869,7 @@ function setTags(appId, tags, auditSource, callback) {
if (error) return callback(error); if (error) return callback(error);
appdb.update(appId, { tags: tags }, function (error) { appdb.update(appId, { tags: tags }, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such app')); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
eventlog.add(eventlog.ACTION_APP_CONFIGURE, auditSource, { appId: appId, app: app, tags: tags }); eventlog.add(eventlog.ACTION_APP_CONFIGURE, auditSource, { appId: appId, app: app, tags: tags });
@@ -1039,8 +1033,7 @@ function setAutomaticBackup(appId, enable, auditSource, callback) {
if (error) return callback(error); if (error) return callback(error);
appdb.update(appId, { enableBackup: enable }, function (error) { appdb.update(appId, { enableBackup: enable }, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such app')); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
eventlog.add(eventlog.ACTION_APP_CONFIGURE, auditSource, { appId: appId, app: app, enableBackup: enable }); eventlog.add(eventlog.ACTION_APP_CONFIGURE, auditSource, { appId: appId, app: app, enableBackup: enable });
@@ -1059,8 +1052,7 @@ function setAutomaticUpdate(appId, enable, auditSource, callback) {
if (error) return callback(error); if (error) return callback(error);
appdb.update(appId, { enableAutomaticUpdate: enable }, function (error) { appdb.update(appId, { enableAutomaticUpdate: enable }, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such app')); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
eventlog.add(eventlog.ACTION_APP_CONFIGURE, auditSource, { appId: appId, app: app, enableAutomaticUpdate: enable }); eventlog.add(eventlog.ACTION_APP_CONFIGURE, auditSource, { appId: appId, app: app, enableAutomaticUpdate: enable });
@@ -1090,8 +1082,7 @@ function setReverseProxyConfig(appId, reverseProxyConfig, auditSource, callback)
if (error) return callback(error); if (error) return callback(error);
appdb.update(appId, { reverseProxyConfig }, function (error) { appdb.update(appId, { reverseProxyConfig }, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such app')); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
eventlog.add(eventlog.ACTION_APP_CONFIGURE, auditSource, { appId, app, reverseProxyConfig }); eventlog.add(eventlog.ACTION_APP_CONFIGURE, auditSource, { appId, app, reverseProxyConfig });
@@ -1575,8 +1566,8 @@ function clone(appId, data, user, auditSource, callback) {
}; };
appdb.add(newAppId, appStoreId, manifest, location, domain, translatePortBindings(portBindings, manifest), data, function (error) { appdb.add(newAppId, appStoreId, manifest, location, domain, translatePortBindings(portBindings, manifest), data, function (error) {
if (error && error.reason === DatabaseError.ALREADY_EXISTS) return callback(getDuplicateErrorDetails(error.message, locations, domainObjectMap, portBindings)); if (error && error.reason === BoxError.ALREADY_EXISTS) return callback(getDuplicateErrorDetails(error.message, locations, domainObjectMap, portBindings));
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
purchaseApp({ appId: newAppId, appstoreId: app.appStoreId, manifestId: manifest.id }, function (error) { purchaseApp({ appId: newAppId, appstoreId: app.appStoreId, manifestId: manifest.id }, function (error) {
if (error) return callback(error); if (error) return callback(error);
@@ -1622,7 +1613,7 @@ function uninstall(appId, auditSource, callback) {
if (error && error.reason === AppstoreError.INVALID_TOKEN) return callback(new BoxError(BoxError.EXTERNAL_ERROR, error.message)); if (error && error.reason === AppstoreError.INVALID_TOKEN) return callback(new BoxError(BoxError.EXTERNAL_ERROR, error.message));
if (error && error.reason === AppstoreError.LICENSE_ERROR) return callback(new BoxError(BoxError.EXTERNAL_ERROR, error.message)); if (error && error.reason === AppstoreError.LICENSE_ERROR) return callback(new BoxError(BoxError.EXTERNAL_ERROR, error.message));
if (error && error.reason === AppstoreError.EXTERNAL_ERROR) return callback(new BoxError(BoxError.EXTERNAL_ERROR, error.message)); if (error && error.reason === AppstoreError.EXTERNAL_ERROR) return callback(new BoxError(BoxError.EXTERNAL_ERROR, error.message));
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
const task = { const task = {
args: {}, args: {},

View File

@@ -28,7 +28,6 @@ var addons = require('./addons.js'),
backups = require('./backups.js'), backups = require('./backups.js'),
BoxError = require('./boxerror.js'), BoxError = require('./boxerror.js'),
constants = require('./constants.js'), constants = require('./constants.js'),
DatabaseError = require('./databaseerror.js'),
debug = require('debug')('box:apptask'), debug = require('debug')('box:apptask'),
df = require('@sindresorhus/df'), df = require('@sindresorhus/df'),
docker = require('./docker.js'), docker = require('./docker.js'),
@@ -904,7 +903,7 @@ function update(app, args, progressCallback, callback) {
if (newTcpPorts[portName] || newUdpPorts[portName]) return callback(null); // port still in use if (newTcpPorts[portName] || newUdpPorts[portName]) return callback(null); // port still in use
appdb.delPortBinding(currentPorts[portName], apps.PORT_TYPE_TCP, function (error) { appdb.delPortBinding(currentPorts[portName], apps.PORT_TYPE_TCP, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) console.error('Portbinding does not exist in database.'); if (error && error.reason === BoxError.NOT_FOUND) console.error('Portbinding does not exist in database.');
else if (error) return next(error); else if (error) return next(error);
// also delete from app object for further processing (the db is updated in the next step) // also delete from app object for further processing (the db is updated in the next step)

View File

@@ -12,8 +12,8 @@ exports = module.exports = {
}; };
var assert = require('assert'), var assert = require('assert'),
database = require('./database.js'), BoxError = require('./boxerror.js'),
DatabaseError = require('./databaseerror'); database = require('./database.js');
var AUTHCODES_FIELDS = [ 'authCode', 'userId', 'clientId', 'expiresAt' ].join(','); var AUTHCODES_FIELDS = [ 'authCode', 'userId', 'clientId', 'expiresAt' ].join(',');
@@ -22,8 +22,8 @@ function get(authCode, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + AUTHCODES_FIELDS + ' FROM authcodes WHERE authCode = ? AND expiresAt > ?', [ authCode, Date.now() ], function (error, result) { database.query('SELECT ' + AUTHCODES_FIELDS + ' FROM authcodes WHERE authCode = ? AND expiresAt > ?', [ authCode, Date.now() ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null, result[0]); callback(null, result[0]);
}); });
@@ -37,12 +37,12 @@ function add(authCode, clientId, userId, expiresAt, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('INSERT INTO authcodes (authCode, clientId, userId, expiresAt) VALUES (?, ?, ?, ?)', database.query('INSERT INTO authcodes (authCode, clientId, userId, expiresAt) VALUES (?, ?, ?, ?)',
[ authCode, clientId, userId, expiresAt ], function (error, result) { [ authCode, clientId, userId, expiresAt ], function (error, result) {
if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS)); if (error && error.code === 'ER_DUP_ENTRY') return callback(new BoxError(BoxError.ALREADY_EXISTS));
if (error || result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error || result.affectedRows !== 1) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
} }
function del(authCode, callback) { function del(authCode, callback) {
@@ -50,8 +50,8 @@ function del(authCode, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM authcodes WHERE authCode = ?', [ authCode ], function (error, result) { database.query('DELETE FROM authcodes WHERE authCode = ?', [ authCode ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null); callback(null);
}); });
@@ -61,7 +61,7 @@ function delExpired(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM authcodes WHERE expiresAt <= ?', [ Date.now() ], function (error, result) { database.query('DELETE FROM authcodes WHERE expiresAt <= ?', [ Date.now() ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null, result.affectedRows); return callback(null, result.affectedRows);
}); });
} }
@@ -70,7 +70,7 @@ function clear(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM authcodes', function (error) { database.query('DELETE FROM authcodes', function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });

View File

@@ -1,8 +1,8 @@
'use strict'; 'use strict';
var assert = require('assert'), var assert = require('assert'),
BoxError = require('./boxerror.js'),
database = require('./database.js'), database = require('./database.js'),
DatabaseError = require('./databaseerror.js'),
safe = require('safetydance'), safe = require('safetydance'),
util = require('util'); util = require('util');
@@ -47,7 +47,7 @@ function getByTypeAndStatePaged(type, state, page, perPage, callback) {
database.query('SELECT ' + BACKUPS_FIELDS + ' FROM backups WHERE type = ? AND state = ? ORDER BY creationTime DESC LIMIT ?,?', database.query('SELECT ' + BACKUPS_FIELDS + ' FROM backups WHERE type = ? AND state = ? ORDER BY creationTime DESC LIMIT ?,?',
[ type, state, (page-1)*perPage, perPage ], function (error, results) { [ type, state, (page-1)*perPage, perPage ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
results.forEach(function (result) { postProcess(result); }); results.forEach(function (result) { postProcess(result); });
@@ -63,7 +63,7 @@ function getByTypePaged(type, page, perPage, callback) {
database.query('SELECT ' + BACKUPS_FIELDS + ' FROM backups WHERE type = ? ORDER BY creationTime DESC LIMIT ?,?', database.query('SELECT ' + BACKUPS_FIELDS + ' FROM backups WHERE type = ? ORDER BY creationTime DESC LIMIT ?,?',
[ type, (page-1)*perPage, perPage ], function (error, results) { [ type, (page-1)*perPage, perPage ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
results.forEach(function (result) { postProcess(result); }); results.forEach(function (result) { postProcess(result); });
@@ -80,7 +80,7 @@ function getByAppIdPaged(page, perPage, appId, callback) {
// box versions (0.93.x and below) used to use appbackup_ prefix // box versions (0.93.x and below) used to use appbackup_ prefix
database.query('SELECT ' + BACKUPS_FIELDS + ' FROM backups WHERE type = ? AND state = ? AND id LIKE ? ORDER BY creationTime DESC LIMIT ?,?', database.query('SELECT ' + BACKUPS_FIELDS + ' FROM backups WHERE type = ? AND state = ? AND id LIKE ? ORDER BY creationTime DESC LIMIT ?,?',
[ exports.BACKUP_TYPE_APP, exports.BACKUP_STATE_NORMAL, '%app%\\_' + appId + '\\_%', (page-1)*perPage, perPage ], function (error, results) { [ exports.BACKUP_TYPE_APP, exports.BACKUP_STATE_NORMAL, '%app%\\_' + appId + '\\_%', (page-1)*perPage, perPage ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
results.forEach(function (result) { postProcess(result); }); results.forEach(function (result) { postProcess(result); });
@@ -94,8 +94,8 @@ function get(id, callback) {
database.query('SELECT ' + BACKUPS_FIELDS + ' FROM backups WHERE id = ? ORDER BY creationTime DESC', database.query('SELECT ' + BACKUPS_FIELDS + ' FROM backups WHERE id = ? ORDER BY creationTime DESC',
[ id ], function (error, result) { [ id ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
postProcess(result[0]); postProcess(result[0]);
@@ -119,8 +119,8 @@ function add(id, data, callback) {
database.query('INSERT INTO backups (id, version, type, creationTime, state, dependsOn, manifestJson, format) VALUES (?, ?, ?, ?, ?, ?, ?, ?)', database.query('INSERT INTO backups (id, version, type, creationTime, state, dependsOn, manifestJson, format) VALUES (?, ?, ?, ?, ?, ?, ?, ?)',
[ id, data.version, data.type, creationTime, exports.BACKUP_STATE_NORMAL, data.dependsOn.join(','), manifestJson, data.format ], [ id, data.version, data.type, creationTime, exports.BACKUP_STATE_NORMAL, data.dependsOn.join(','), manifestJson, data.format ],
function (error) { function (error) {
if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS)); if (error && error.code === 'ER_DUP_ENTRY') return callback(new BoxError(BoxError.ALREADY_EXISTS));
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -139,8 +139,8 @@ function update(id, backup, callback) {
values.push(id); values.push(id);
database.query('UPDATE backups SET ' + fields.join(', ') + ' WHERE id = ?', values, function (error) { database.query('UPDATE backups SET ' + fields.join(', ') + ' WHERE id = ?', values, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (error && error.reason === BoxError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND));
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -150,7 +150,7 @@ function clear(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('TRUNCATE TABLE backups', [], function (error) { database.query('TRUNCATE TABLE backups', [], function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
} }
@@ -160,7 +160,7 @@ function del(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM backups WHERE id=?', [ id ], function (error) { database.query('DELETE FROM backups WHERE id=?', [ id ], function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
} }

View File

@@ -46,7 +46,6 @@ var addons = require('./addons.js'),
constants = require('./constants.js'), constants = require('./constants.js'),
crypto = require('crypto'), crypto = require('crypto'),
database = require('./database.js'), database = require('./database.js'),
DatabaseError = require('./databaseerror.js'),
DataLayout = require('./datalayout.js'), DataLayout = require('./datalayout.js'),
debug = require('debug')('box:backups'), debug = require('debug')('box:backups'),
df = require('@sindresorhus/df'), df = require('@sindresorhus/df'),
@@ -126,7 +125,7 @@ function getByStatePaged(state, page, perPage, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
backupdb.getByTypeAndStatePaged(backupdb.BACKUP_TYPE_BOX, state, page, perPage, function (error, results) { backupdb.getByTypeAndStatePaged(backupdb.BACKUP_TYPE_BOX, state, page, perPage, function (error, results) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, results); callback(null, results);
}); });
@@ -139,7 +138,7 @@ function getByAppIdPaged(page, perPage, appId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
backupdb.getByAppIdPaged(page, perPage, appId, function (error, results) { backupdb.getByAppIdPaged(page, perPage, appId, function (error, results) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, results); callback(null, results);
}); });
@@ -150,8 +149,7 @@ function get(backupId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
backupdb.get(backupId, function (error, result) { backupdb.get(backupId, function (error, result) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, result); callback(null, result);
}); });
@@ -782,7 +780,7 @@ function rotateBoxBackup(backupConfig, tag, appBackupIds, progressCallback, call
debug(`Rotating box backup to id ${backupId}`); debug(`Rotating box backup to id ${backupId}`);
backupdb.add(backupId, { version: constants.VERSION, type: backupdb.BACKUP_TYPE_BOX, dependsOn: appBackupIds, manifest: null, format: format }, function (error) { backupdb.add(backupId, { version: constants.VERSION, type: backupdb.BACKUP_TYPE_BOX, dependsOn: appBackupIds, manifest: null, format: format }, function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
var copy = api(backupConfig.provider).copy(backupConfig, getBackupFilePath(backupConfig, 'snapshot/box', format), getBackupFilePath(backupConfig, backupId, format)); var copy = api(backupConfig.provider).copy(backupConfig, getBackupFilePath(backupConfig, 'snapshot/box', format), getBackupFilePath(backupConfig, backupId, format));
copy.on('progress', (message) => progressCallback({ message })); copy.on('progress', (message) => progressCallback({ message }));
@@ -791,7 +789,7 @@ function rotateBoxBackup(backupConfig, tag, appBackupIds, progressCallback, call
backupdb.update(backupId, { state: state }, function (error) { backupdb.update(backupId, { state: state }, function (error) {
if (copyBackupError) return callback(copyBackupError); if (copyBackupError) return callback(copyBackupError);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
debug(`Rotated box backup successfully as id ${backupId}`); debug(`Rotated box backup successfully as id ${backupId}`);
@@ -873,7 +871,7 @@ function rotateAppBackup(backupConfig, app, tag, options, progressCallback, call
backupdb.update(backupId, { preserveSecs: options.preserveSecs || 0, state: state }, function (error) { backupdb.update(backupId, { preserveSecs: options.preserveSecs || 0, state: state }, function (error) {
if (copyBackupError) return callback(copyBackupError); if (copyBackupError) return callback(copyBackupError);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
debug(`Rotated app backup of ${app.id} successfully to id ${backupId}`); debug(`Rotated app backup of ${app.id} successfully to id ${backupId}`);
@@ -1081,7 +1079,7 @@ function cleanupAppBackups(backupConfig, referencedAppBackups, callback) {
// we clean app backups of any state because the ones to keep are determined by the box cleanup code // we clean app backups of any state because the ones to keep are determined by the box cleanup code
backupdb.getByTypePaged(backupdb.BACKUP_TYPE_APP, 1, 1000, function (error, appBackups) { backupdb.getByTypePaged(backupdb.BACKUP_TYPE_APP, 1, 1000, function (error, appBackups) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
async.eachSeries(appBackups, function iterator(appBackup, iteratorDone) { async.eachSeries(appBackups, function iterator(appBackup, iteratorDone) {
if (referencedAppBackups.indexOf(appBackup.id) !== -1) return iteratorDone(); if (referencedAppBackups.indexOf(appBackup.id) !== -1) return iteratorDone();

View File

@@ -21,8 +21,8 @@ exports = module.exports = {
var assert = require('assert'), var assert = require('assert'),
async = require('async'), async = require('async'),
database = require('./database.js'), BoxError = require('./boxerror.js'),
DatabaseError = require('./databaseerror.js'); database = require('./database.js');
var CLIENTS_FIELDS = [ 'id', 'appId', 'type', 'clientSecret', 'redirectURI', 'scope' ].join(','); var CLIENTS_FIELDS = [ 'id', 'appId', 'type', 'clientSecret', 'redirectURI', 'scope' ].join(',');
var CLIENTS_FIELDS_PREFIXED = [ 'clients.id', 'clients.appId', 'clients.type', 'clients.clientSecret', 'clients.redirectURI', 'clients.scope' ].join(','); var CLIENTS_FIELDS_PREFIXED = [ 'clients.id', 'clients.appId', 'clients.type', 'clients.clientSecret', 'clients.redirectURI', 'clients.scope' ].join(',');
@@ -32,8 +32,8 @@ function get(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + CLIENTS_FIELDS + ' FROM clients WHERE id = ?', [ id ], function (error, result) { database.query('SELECT ' + CLIENTS_FIELDS + ' FROM clients WHERE id = ?', [ id ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null, result[0]); callback(null, result[0]);
}); });
@@ -43,7 +43,7 @@ function getAll(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + CLIENTS_FIELDS + ' FROM clients ORDER BY appId', function (error, results) { database.query('SELECT ' + CLIENTS_FIELDS + ' FROM clients ORDER BY appId', function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, results); callback(null, results);
}); });
@@ -53,7 +53,7 @@ function getAllWithTokenCount(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + CLIENTS_FIELDS_PREFIXED + ',COUNT(tokens.clientId) AS tokenCount FROM clients LEFT OUTER JOIN tokens ON clients.id=tokens.clientId GROUP BY clients.id', [], function (error, results) { database.query('SELECT ' + CLIENTS_FIELDS_PREFIXED + ',COUNT(tokens.clientId) AS tokenCount FROM clients LEFT OUTER JOIN tokens ON clients.id=tokens.clientId GROUP BY clients.id', [], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, results); callback(null, results);
}); });
@@ -64,7 +64,7 @@ function getAllWithTokenCountByIdentifier(identifier, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + CLIENTS_FIELDS_PREFIXED + ',COUNT(tokens.clientId) AS tokenCount FROM clients LEFT OUTER JOIN tokens ON clients.id=tokens.clientId WHERE tokens.identifier=? GROUP BY clients.id', [ identifier ], function (error, results) { database.query('SELECT ' + CLIENTS_FIELDS_PREFIXED + ',COUNT(tokens.clientId) AS tokenCount FROM clients LEFT OUTER JOIN tokens ON clients.id=tokens.clientId WHERE tokens.identifier=? GROUP BY clients.id', [ identifier ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, results); callback(null, results);
}); });
@@ -75,8 +75,8 @@ function getByAppId(appId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + CLIENTS_FIELDS + ' FROM clients WHERE appId = ? LIMIT 1', [ appId ], function (error, result) { database.query('SELECT ' + CLIENTS_FIELDS + ' FROM clients WHERE appId = ? LIMIT 1', [ appId ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null, result[0]); callback(null, result[0]);
}); });
@@ -88,8 +88,8 @@ function getByAppIdAndType(appId, type, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + CLIENTS_FIELDS + ' FROM clients WHERE appId = ? AND type = ? LIMIT 1', [ appId, type ], function (error, result) { database.query('SELECT ' + CLIENTS_FIELDS + ' FROM clients WHERE appId = ? AND type = ? LIMIT 1', [ appId, type ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null, result[0]); callback(null, result[0]);
}); });
@@ -107,8 +107,8 @@ function add(id, appId, type, clientSecret, redirectURI, scope, callback) {
var data = [ id, appId, type, clientSecret, redirectURI, scope ]; var data = [ id, appId, type, clientSecret, redirectURI, scope ];
database.query('INSERT INTO clients (id, appId, type, clientSecret, redirectURI, scope) VALUES (?, ?, ?, ?, ?, ?)', data, function (error, result) { database.query('INSERT INTO clients (id, appId, type, clientSecret, redirectURI, scope) VALUES (?, ?, ?, ?, ?, ?)', data, function (error, result) {
if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS)); if (error && error.code === 'ER_DUP_ENTRY') return callback(new BoxError(BoxError.ALREADY_EXISTS));
if (error || result.affectedRows === 0) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error || result.affectedRows === 0) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -126,8 +126,8 @@ function upsert(id, appId, type, clientSecret, redirectURI, scope, callback) {
var data = [ id, appId, type, clientSecret, redirectURI, scope ]; var data = [ id, appId, type, clientSecret, redirectURI, scope ];
database.query('REPLACE INTO clients (id, appId, type, clientSecret, redirectURI, scope) VALUES (?, ?, ?, ?, ?, ?)', data, function (error, result) { database.query('REPLACE INTO clients (id, appId, type, clientSecret, redirectURI, scope) VALUES (?, ?, ?, ?, ?, ?)', data, function (error, result) {
if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS)); if (error && error.code === 'ER_DUP_ENTRY') return callback(new BoxError(BoxError.ALREADY_EXISTS));
if (error || result.affectedRows === 0) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error || result.affectedRows === 0) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -138,8 +138,8 @@ function del(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM clients WHERE id = ?', [ id ], function (error, result) { database.query('DELETE FROM clients WHERE id = ?', [ id ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null); callback(null);
}); });
@@ -150,8 +150,8 @@ function delByAppId(appId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM clients WHERE appId=?', [ appId ], function (error, result) { database.query('DELETE FROM clients WHERE appId=?', [ appId ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null); callback(null);
}); });
@@ -163,8 +163,8 @@ function delByAppIdAndType(appId, type, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM clients WHERE appId=? AND type=?', [ appId, type ], function (error, result) { database.query('DELETE FROM clients WHERE appId=? AND type=?', [ appId, type ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null); callback(null);
}); });
@@ -174,7 +174,7 @@ function clear(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM clients WHERE id!="cid-webadmin" AND id!="cid-sdk" AND id!="cid-cli"', function (error) { database.query('DELETE FROM clients WHERE id!="cid-webadmin" AND id!="cid-sdk" AND id!="cid-cli"', function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });

View File

@@ -31,7 +31,6 @@ var apps = require('./apps.js'),
BoxError = require('./boxerror.js'), BoxError = require('./boxerror.js'),
clientdb = require('./clientdb.js'), clientdb = require('./clientdb.js'),
constants = require('./constants.js'), constants = require('./constants.js'),
DatabaseError = require('./databaseerror.js'),
debug = require('debug')('box:clients'), debug = require('debug')('box:clients'),
eventlog = require('./eventlog.js'), eventlog = require('./eventlog.js'),
hat = require('./hat.js'), hat = require('./hat.js'),
@@ -98,8 +97,7 @@ function get(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
clientdb.get(id, function (error, result) { clientdb.get(id, function (error, result) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such client')); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, result); callback(null, result);
}); });
@@ -110,8 +108,7 @@ function del(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
clientdb.del(id, function (error, result) { clientdb.del(id, function (error, result) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such client')); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, result); callback(null, result);
}); });
@@ -121,8 +118,8 @@ function getAll(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
clientdb.getAll(function (error, results) { clientdb.getAll(function (error, results) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, []); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, []);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
var tmp = []; var tmp = [];
async.each(results, function (record, callback) { async.each(results, function (record, callback) {
@@ -163,8 +160,7 @@ function getByAppIdAndType(appId, type, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
clientdb.getByAppIdAndType(appId, type, function (error, result) { clientdb.getByAppIdAndType(appId, type, function (error, result) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such client')); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, result); callback(null, result);
}); });
@@ -176,7 +172,7 @@ function getTokensByUserId(clientId, userId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
tokendb.getByIdentifierAndClientId(userId, clientId, function (error, result) { tokendb.getByIdentifierAndClientId(userId, clientId, function (error, result) {
if (error && error.reason === DatabaseError.NOT_FOUND) { if (error && error.reason === BoxError.NOT_FOUND) {
// this can mean either that there are no tokens or the clientId is actually unknown // this can mean either that there are no tokens or the clientId is actually unknown
get(clientId, function (error/*, result*/) { get(clientId, function (error/*, result*/) {
if (error) return callback(error); if (error) return callback(error);
@@ -195,7 +191,7 @@ function delTokensByUserId(clientId, userId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
tokendb.delByIdentifierAndClientId(userId, clientId, function (error) { tokendb.delByIdentifierAndClientId(userId, clientId, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) { if (error && error.reason === BoxError.NOT_FOUND) {
// this can mean either that there are no tokens or the clientId is actually unknown // this can mean either that there are no tokens or the clientId is actually unknown
get(clientId, function (error/*, result*/) { get(clientId, function (error/*, result*/) {
if (error) return callback(error); if (error) return callback(error);
@@ -217,10 +213,9 @@ function delByAppIdAndType(appId, type, callback) {
if (error) return callback(error); if (error) return callback(error);
tokendb.delByClientId(result.id, function (error) { tokendb.delByClientId(result.id, function (error) {
if (error && error.reason !== DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error && error.reason !== BoxError.NOT_FOUND) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
clientdb.delByAppIdAndType(appId, type, function (error) { clientdb.delByAppIdAndType(appId, type, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such client'));
if (error) return callback(error); if (error) return callback(error);
callback(null); callback(null);
@@ -264,7 +259,7 @@ function addTokenByUserId(clientId, userId, expiresAt, options, callback) {
}; };
tokendb.add(token, function (error) { tokendb.add(token, function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, { callback(null, {
accessToken: token.accessToken, accessToken: token.accessToken,
@@ -305,8 +300,7 @@ function delToken(clientId, tokenId, callback) {
if (error) return callback(error); if (error) return callback(error);
tokendb.del(tokenId, function (error) { tokendb.del(tokenId, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'Invalid token')); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });

View File

@@ -12,8 +12,8 @@ exports = module.exports = {
}; };
var assert = require('assert'), var assert = require('assert'),
BoxError = require('./boxerror.js'),
database = require('./database.js'), database = require('./database.js'),
DatabaseError = require('./databaseerror'),
safe = require('safetydance'); safe = require('safetydance');
var DOMAINS_FIELDS = [ 'domain', 'zoneName', 'provider', 'configJson', 'tlsConfigJson', 'locked' ].join(','); var DOMAINS_FIELDS = [ 'domain', 'zoneName', 'provider', 'configJson', 'tlsConfigJson', 'locked' ].join(',');
@@ -34,8 +34,8 @@ function get(domain, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query(`SELECT ${DOMAINS_FIELDS} FROM domains WHERE domain=?`, [ domain ], function (error, result) { database.query(`SELECT ${DOMAINS_FIELDS} FROM domains WHERE domain=?`, [ domain ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
postProcess(result[0]); postProcess(result[0]);
@@ -45,7 +45,7 @@ function get(domain, callback) {
function getAll(callback) { function getAll(callback) {
database.query(`SELECT ${DOMAINS_FIELDS} FROM domains ORDER BY domain`, function (error, results) { database.query(`SELECT ${DOMAINS_FIELDS} FROM domains ORDER BY domain`, function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
results.forEach(postProcess); results.forEach(postProcess);
@@ -63,8 +63,8 @@ function add(name, domain, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('INSERT INTO domains (domain, zoneName, provider, configJson, tlsConfigJson) VALUES (?, ?, ?, ?, ?)', [ name, domain.zoneName, domain.provider, JSON.stringify(domain.config), JSON.stringify(domain.tlsConfig) ], function (error) { database.query('INSERT INTO domains (domain, zoneName, provider, configJson, tlsConfigJson) VALUES (?, ?, ?, ?, ?)', [ name, domain.zoneName, domain.provider, JSON.stringify(domain.config), JSON.stringify(domain.tlsConfig) ], function (error) {
if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS, error)); if (error && error.code === 'ER_DUP_ENTRY') return callback(new BoxError(BoxError.ALREADY_EXISTS, error));
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -91,8 +91,8 @@ function update(name, domain, callback) {
args.push(name); args.push(name);
database.query('UPDATE domains SET ' + fields.join(', ') + ' WHERE domain=?', args, function (error) { database.query('UPDATE domains SET ' + fields.join(', ') + ' WHERE domain=?', args, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (error && error.reason === BoxError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND));
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -103,9 +103,9 @@ function del(domain, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM domains WHERE domain=?', [ domain ], function (error, result) { database.query('DELETE FROM domains WHERE domain=?', [ domain ], function (error, result) {
if (error && error.code === 'ER_ROW_IS_REFERENCED_2') return callback(new DatabaseError(DatabaseError.IN_USE)); if (error && error.code === 'ER_ROW_IS_REFERENCED_2') return callback(new BoxError(BoxError.CONFLICT));
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows === 0) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null); callback(null);
}); });
@@ -113,7 +113,7 @@ function del(domain, callback) {
function clear(callback) { function clear(callback) {
database.query('DELETE FROM domains', function (error) { database.query('DELETE FROM domains', function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(error); callback(error);
}); });

View File

@@ -37,7 +37,6 @@ var assert = require('assert'),
async = require('async'), async = require('async'),
BoxError = require('./boxerror.js'), BoxError = require('./boxerror.js'),
constants = require('./constants.js'), constants = require('./constants.js'),
DatabaseError = require('./databaseerror.js'),
debug = require('debug')('box:domains'), debug = require('debug')('box:domains'),
domaindb = require('./domaindb.js'), domaindb = require('./domaindb.js'),
eventlog = require('./eventlog.js'), eventlog = require('./eventlog.js'),
@@ -198,8 +197,7 @@ function add(domain, data, auditSource, callback) {
if (error) return callback(error); if (error) return callback(error);
domaindb.add(domain, { zoneName: zoneName, provider: provider, config: sanitizedConfig, tlsConfig: tlsConfig }, function (error) { domaindb.add(domain, { zoneName: zoneName, provider: provider, config: sanitizedConfig, tlsConfig: tlsConfig }, function (error) {
if (error && error.reason === DatabaseError.ALREADY_EXISTS) return callback(new BoxError(BoxError.ALREADY_EXISTS)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
reverseProxy.setFallbackCertificate(domain, fallbackCertificate, function (error) { reverseProxy.setFallbackCertificate(domain, fallbackCertificate, function (error) {
if (error) return callback(error); if (error) return callback(error);
@@ -218,8 +216,7 @@ function get(domain, callback) {
domaindb.get(domain, function (error, result) { domaindb.get(domain, function (error, result) {
// TODO try to find subdomain entries maybe based on zoneNames or so // TODO try to find subdomain entries maybe based on zoneNames or so
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
reverseProxy.getFallbackCertificate(domain, function (_, bundle) { // never returns an error reverseProxy.getFallbackCertificate(domain, function (_, bundle) { // never returns an error
var cert = safe.fs.readFileSync(bundle.certFilePath, 'utf-8'); var cert = safe.fs.readFileSync(bundle.certFilePath, 'utf-8');
@@ -238,7 +235,7 @@ function getAll(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
domaindb.getAll(function (error, result) { domaindb.getAll(function (error, result) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
return callback(null, result); return callback(null, result);
}); });
@@ -257,8 +254,7 @@ function update(domain, data, auditSource, callback) {
let { zoneName, provider, config, fallbackCertificate, tlsConfig } = data; let { zoneName, provider, config, fallbackCertificate, tlsConfig } = data;
domaindb.get(domain, function (error, domainObject) { domaindb.get(domain, function (error, domainObject) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (zoneName) { if (zoneName) {
if (!tld.isValid(zoneName)) return callback(new BoxError(BoxError.BAD_FIELD, 'Invalid zoneName', { field: 'zoneName' })); if (!tld.isValid(zoneName)) return callback(new BoxError(BoxError.BAD_FIELD, 'Invalid zoneName', { field: 'zoneName' }));
@@ -287,8 +283,7 @@ function update(domain, data, auditSource, callback) {
}; };
domaindb.update(domain, newData, function (error) { domaindb.update(domain, newData, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (!fallbackCertificate) return callback(); if (!fallbackCertificate) return callback();
@@ -312,9 +307,7 @@ function del(domain, auditSource, callback) {
if (domain === settings.adminDomain()) return callback(new BoxError(BoxError.CONFLICT, 'Cannot remove admin domain')); if (domain === settings.adminDomain()) return callback(new BoxError(BoxError.CONFLICT, 'Cannot remove admin domain'));
domaindb.del(domain, function (error) { domaindb.del(domain, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error && error.reason === DatabaseError.IN_USE) return callback(new BoxError(BoxError.CONFLICT, 'Domain is still in use. Remove all apps and mailboxes using this domain'));
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
eventlog.add(eventlog.ACTION_DOMAIN_REMOVE, auditSource, { domain }); eventlog.add(eventlog.ACTION_DOMAIN_REMOVE, auditSource, { domain });
@@ -326,7 +319,7 @@ function clear(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
domaindb.clear(function (error) { domaindb.clear(function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
return callback(null); return callback(null);
}); });

View File

@@ -62,7 +62,6 @@ exports = module.exports = {
var assert = require('assert'), var assert = require('assert'),
BoxError = require('./boxerror.js'), BoxError = require('./boxerror.js'),
DatabaseError = require('./databaseerror.js'),
debug = require('debug')('box:eventlog'), debug = require('debug')('box:eventlog'),
eventlogdb = require('./eventlogdb.js'), eventlogdb = require('./eventlogdb.js'),
notifications = require('./notifications.js'), notifications = require('./notifications.js'),
@@ -97,8 +96,7 @@ function get(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
eventlogdb.get(id, function (error, result) { eventlogdb.get(id, function (error, result) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'No such event')); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, result); callback(null, result);
}); });
@@ -112,7 +110,7 @@ function getAllPaged(actions, search, page, perPage, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
eventlogdb.getAllPaged(actions, search, page, perPage, function (error, events) { eventlogdb.getAllPaged(actions, search, page, perPage, function (error, events) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, events); callback(null, events);
}); });
@@ -123,7 +121,7 @@ function getByCreationTime(creationTime, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
eventlogdb.getByCreationTime(creationTime, function (error, events) { eventlogdb.getByCreationTime(creationTime, function (error, events) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, events); callback(null, events);
}); });
@@ -136,7 +134,7 @@ function cleanup(callback) {
d.setDate(d.getDate() - 10); // 10 days ago d.setDate(d.getDate() - 10); // 10 days ago
eventlogdb.delByCreationTime(d, function (error) { eventlogdb.delByCreationTime(d, function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null); callback(null);
}); });

View File

@@ -14,8 +14,8 @@ exports = module.exports = {
var assert = require('assert'), var assert = require('assert'),
async = require('async'), async = require('async'),
BoxError = require('./boxerror.js'),
database = require('./database.js'), database = require('./database.js'),
DatabaseError = require('./databaseerror'),
mysql = require('mysql'), mysql = require('mysql'),
safe = require('safetydance'), safe = require('safetydance'),
util = require('util'); util = require('util');
@@ -35,8 +35,8 @@ function get(eventId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + EVENTLOG_FIELDS + ' FROM eventlog WHERE id = ?', [ eventId ], function (error, result) { database.query('SELECT ' + EVENTLOG_FIELDS + ' FROM eventlog WHERE id = ?', [ eventId ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null, postProcess(result[0])); callback(null, postProcess(result[0]));
}); });
@@ -68,7 +68,7 @@ function getAllPaged(actions, search, page, perPage, callback) {
data.push(perPage); data.push(perPage);
database.query(query, data, function (error, results) { database.query(query, data, function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
results.forEach(postProcess); results.forEach(postProcess);
@@ -82,7 +82,7 @@ function getByCreationTime(creationTime, callback) {
var query = 'SELECT ' + EVENTLOG_FIELDS + ' FROM eventlog WHERE creationTime >= ? ORDER BY creationTime DESC'; var query = 'SELECT ' + EVENTLOG_FIELDS + ' FROM eventlog WHERE creationTime >= ? ORDER BY creationTime DESC';
database.query(query, [ creationTime ], function (error, results) { database.query(query, [ creationTime ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
results.forEach(postProcess); results.forEach(postProcess);
@@ -98,8 +98,8 @@ function add(id, action, source, data, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('INSERT INTO eventlog (id, action, source, data) VALUES (?, ?, ?, ?)', [ id, action, JSON.stringify(source), JSON.stringify(data) ], function (error, result) { database.query('INSERT INTO eventlog (id, action, source, data) VALUES (?, ?, ?, ?)', [ id, action, JSON.stringify(source), JSON.stringify(data) ], function (error, result) {
if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS, error)); if (error && error.code === 'ER_DUP_ENTRY') return callback(new BoxError(BoxError.ALREADY_EXISTS, error));
if (error || result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error || result.affectedRows !== 1) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, id); callback(null, id);
}); });
@@ -123,7 +123,7 @@ function upsert(id, action, source, data, callback) {
}]; }];
database.transaction(queries, function (error, result) { database.transaction(queries, function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result[0].affectedRows >= 1) return callback(null, result[1][0].id); if (result[0].affectedRows >= 1) return callback(null, result[1][0].id);
// no existing eventlog found, create one // no existing eventlog found, create one
@@ -135,7 +135,7 @@ function count(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT COUNT(*) AS total FROM eventlog', function (error, result) { database.query('SELECT COUNT(*) AS total FROM eventlog', function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null, result[0].total); return callback(null, result[0].total);
}); });
@@ -143,7 +143,7 @@ function count(callback) {
function clear(callback) { function clear(callback) {
database.query('DELETE FROM eventlog', function (error) { database.query('DELETE FROM eventlog', function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -155,7 +155,7 @@ function delByCreationTime(creationTime, callback) {
// remove notifications that reference the events as well // remove notifications that reference the events as well
database.query('SELECT * FROM eventlog WHERE creationTime <= ?', [ creationTime ], function (error, result) { database.query('SELECT * FROM eventlog WHERE creationTime <= ?', [ creationTime ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
async.eachSeries(result, function (item, iteratorCallback) { async.eachSeries(result, function (item, iteratorCallback) {
async.series([ async.series([
@@ -163,7 +163,7 @@ function delByCreationTime(creationTime, callback) {
database.query.bind(null, 'DELETE FROM eventlog WHERE id=?', [ item.id ]) database.query.bind(null, 'DELETE FROM eventlog WHERE id=?', [ item.id ])
], iteratorCallback); ], iteratorCallback);
}, function (error) { }, function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });

View File

@@ -25,8 +25,8 @@ exports = module.exports = {
}; };
var assert = require('assert'), var assert = require('assert'),
database = require('./database.js'), BoxError = require('./boxerror.js'),
DatabaseError = require('./databaseerror'); database = require('./database.js');
var GROUPS_FIELDS = [ 'id', 'name' ].join(','); var GROUPS_FIELDS = [ 'id', 'name' ].join(',');
@@ -35,8 +35,8 @@ function get(groupId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + GROUPS_FIELDS + ' FROM userGroups WHERE id = ? ORDER BY name', [ groupId ], function (error, result) { database.query('SELECT ' + GROUPS_FIELDS + ' FROM userGroups WHERE id = ? ORDER BY name', [ groupId ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null, result[0]); callback(null, result[0]);
}); });
@@ -50,8 +50,8 @@ function getWithMembers(groupId, callback) {
' FROM userGroups LEFT OUTER JOIN groupMembers ON userGroups.id = groupMembers.groupId ' + ' FROM userGroups LEFT OUTER JOIN groupMembers ON userGroups.id = groupMembers.groupId ' +
' WHERE userGroups.id = ? ' + ' WHERE userGroups.id = ? ' +
' GROUP BY userGroups.id', [ groupId ], function (error, results) { ' GROUP BY userGroups.id', [ groupId ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (results.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (results.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
var result = results[0]; var result = results[0];
result.userIds = result.userIds ? result.userIds.split(',') : [ ]; result.userIds = result.userIds ? result.userIds.split(',') : [ ];
@@ -64,7 +64,7 @@ function getAll(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + GROUPS_FIELDS + ' FROM userGroups', function (error, results) { database.query('SELECT ' + GROUPS_FIELDS + ' FROM userGroups', function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, results); callback(null, results);
}); });
@@ -74,8 +74,8 @@ function getAllWithMembers(callback) {
database.query('SELECT ' + GROUPS_FIELDS + ',GROUP_CONCAT(groupMembers.userId) AS userIds ' + database.query('SELECT ' + GROUPS_FIELDS + ',GROUP_CONCAT(groupMembers.userId) AS userIds ' +
' FROM userGroups LEFT OUTER JOIN groupMembers ON userGroups.id = groupMembers.groupId ' + ' FROM userGroups LEFT OUTER JOIN groupMembers ON userGroups.id = groupMembers.groupId ' +
' GROUP BY userGroups.id', function (error, results) { ' GROUP BY userGroups.id', function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (results.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (results.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
results.forEach(function (result) { result.userIds = result.userIds ? result.userIds.split(',') : [ ]; }); results.forEach(function (result) { result.userIds = result.userIds ? result.userIds.split(',') : [ ]; });
@@ -89,8 +89,8 @@ function add(id, name, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('INSERT INTO userGroups (id, name) VALUES (?, ?)', [ id, name ], function (error, result) { database.query('INSERT INTO userGroups (id, name) VALUES (?, ?)', [ id, name ], function (error, result) {
if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS, error)); if (error && error.code === 'ER_DUP_ENTRY') return callback(new BoxError(BoxError.ALREADY_EXISTS, error));
if (error || result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error || result.affectedRows !== 1) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -113,9 +113,9 @@ function update(id, data, callback) {
args.push(id); args.push(id);
database.query('UPDATE userGroups SET ' + fields.join(', ') + ' WHERE id = ?', args, function (error, result) { database.query('UPDATE userGroups SET ' + fields.join(', ') + ' WHERE id = ?', args, function (error, result) {
if (error && error.code === 'ER_DUP_ENTRY' && error.sqlMessage.indexOf('userGroups_name') !== -1) return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS, 'name already exists')); if (error && error.code === 'ER_DUP_ENTRY' && error.sqlMessage.indexOf('userGroups_name') !== -1) return callback(new BoxError(BoxError.ALREADY_EXISTS, 'name already exists'));
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
return callback(null); return callback(null);
}); });
@@ -131,8 +131,8 @@ function del(id, callback) {
queries.push({ query: 'DELETE FROM userGroups WHERE id = ?', args: [ id ] }); queries.push({ query: 'DELETE FROM userGroups WHERE id = ?', args: [ id ] });
database.transaction(queries, function (error, result) { database.transaction(queries, function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result[1].affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result[1].affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
callback(error); callback(error);
}); });
@@ -142,7 +142,7 @@ function count(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT COUNT(*) AS total FROM userGroups', function (error, result) { database.query('SELECT COUNT(*) AS total FROM userGroups', function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null, result[0].total); return callback(null, result[0].total);
}); });
@@ -150,10 +150,10 @@ function count(callback) {
function clear(callback) { function clear(callback) {
database.query('DELETE FROM groupMembers', function (error) { database.query('DELETE FROM groupMembers', function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
database.query('DELETE FROM userGroups', function (error) { database.query('DELETE FROM userGroups', function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(error); callback(error);
}); });
@@ -165,8 +165,8 @@ function getMembers(groupId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT userId FROM groupMembers WHERE groupId=?', [ groupId ], function (error, result) { database.query('SELECT userId FROM groupMembers WHERE groupId=?', [ groupId ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
// if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); // need to differentiate group with no members and invalid groupId // if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND)); // need to differentiate group with no members and invalid groupId
callback(error, result.map(function (r) { return r.userId; })); callback(error, result.map(function (r) { return r.userId; }));
}); });
@@ -184,8 +184,8 @@ function setMembers(groupId, userIds, callback) {
} }
database.transaction(queries, function (error) { database.transaction(queries, function (error) {
if (error && error.code === 'ER_NO_REFERENCED_ROW_2') return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (error && error.code === 'ER_NO_REFERENCED_ROW_2') return callback(new BoxError(BoxError.NOT_FOUND));
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(error); callback(error);
}); });
@@ -196,8 +196,8 @@ function getMembership(userId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT groupId FROM groupMembers WHERE userId=? ORDER BY groupId', [ userId ], function (error, result) { database.query('SELECT groupId FROM groupMembers WHERE userId=? ORDER BY groupId', [ userId ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
// if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); // need to differentiate group with no members and invalid groupId // if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND)); // need to differentiate group with no members and invalid groupId
callback(error, result.map(function (r) { return r.groupId; })); callback(error, result.map(function (r) { return r.groupId; }));
}); });
@@ -215,8 +215,8 @@ function setMembership(userId, groupIds, callback) {
}); });
database.transaction(queries, function (error) { database.transaction(queries, function (error) {
if (error && error.code === 'ER_NO_REFERENCED_ROW_2') return callback(new DatabaseError(DatabaseError.NOT_FOUND, error.message)); if (error && error.code === 'ER_NO_REFERENCED_ROW_2') return callback(new BoxError(BoxError.NOT_FOUND, error.message));
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -228,9 +228,9 @@ function addMember(groupId, userId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('INSERT INTO groupMembers (groupId, userId) VALUES (?, ?)', [ groupId, userId ], function (error, result) { database.query('INSERT INTO groupMembers (groupId, userId) VALUES (?, ?)', [ groupId, userId ], function (error, result) {
if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS, error)); if (error && error.code === 'ER_DUP_ENTRY') return callback(new BoxError(BoxError.ALREADY_EXISTS, error));
if (error && error.code === 'ER_NO_REFERENCED_ROW_2') return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (error && error.code === 'ER_NO_REFERENCED_ROW_2') return callback(new BoxError(BoxError.NOT_FOUND));
if (error || result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error || result.affectedRows !== 1) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -242,8 +242,8 @@ function removeMember(groupId, userId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM groupMembers WHERE groupId = ? AND userId = ?', [ groupId, userId ], function (error, result) { database.query('DELETE FROM groupMembers WHERE groupId = ? AND userId = ?', [ groupId, userId ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null); callback(null);
}); });
@@ -255,7 +255,7 @@ function isMember(groupId, userId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT 1 FROM groupMembers WHERE groupId=? AND userId=?', [ groupId, userId ], function (error, result) { database.query('SELECT 1 FROM groupMembers WHERE groupId=? AND userId=?', [ groupId, userId ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, result.length !== 0); callback(null, result.length !== 0);
}); });
@@ -267,7 +267,7 @@ function getGroups(userId, callback) {
database.query('SELECT ' + GROUPS_FIELDS + ' ' + database.query('SELECT ' + GROUPS_FIELDS + ' ' +
' FROM userGroups INNER JOIN groupMembers ON userGroups.id = groupMembers.groupId AND groupMembers.userId = ?', [ userId ], function (error, results) { ' FROM userGroups INNER JOIN groupMembers ON userGroups.id = groupMembers.groupId AND groupMembers.userId = ?', [ userId ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, results); callback(null, results);
}); });

View File

@@ -26,7 +26,6 @@ exports = module.exports = {
var assert = require('assert'), var assert = require('assert'),
BoxError = require('./boxerror.js'), BoxError = require('./boxerror.js'),
constants = require('./constants.js'), constants = require('./constants.js'),
DatabaseError = require('./databaseerror.js'),
groupdb = require('./groupdb.js'), groupdb = require('./groupdb.js'),
uuid = require('uuid'), uuid = require('uuid'),
_ = require('underscore'); _ = require('underscore');
@@ -58,8 +57,7 @@ function create(name, callback) {
var id = 'gid-' + uuid.v4(); var id = 'gid-' + uuid.v4();
groupdb.add(id, name, function (error) { groupdb.add(id, name, function (error) {
if (error && error.reason === DatabaseError.ALREADY_EXISTS) return callback(new BoxError(BoxError.ALREADY_EXISTS)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, { id: id, name: name }); callback(null, { id: id, name: name });
}); });
@@ -70,8 +68,7 @@ function remove(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
groupdb.del(id, function (error) { groupdb.del(id, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -82,8 +79,7 @@ function get(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
groupdb.get(id, function (error, result) { groupdb.get(id, function (error, result) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null, result); return callback(null, result);
}); });
@@ -94,8 +90,7 @@ function getWithMembers(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
groupdb.getWithMembers(id, function (error, result) { groupdb.getWithMembers(id, function (error, result) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null, result); return callback(null, result);
}); });
@@ -105,7 +100,7 @@ function getAll(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
groupdb.getAll(function (error, result) { groupdb.getAll(function (error, result) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
return callback(null, result); return callback(null, result);
}); });
@@ -115,7 +110,7 @@ function getAllWithMembers(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
groupdb.getAllWithMembers(function (error, result) { groupdb.getAllWithMembers(function (error, result) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
return callback(null, result); return callback(null, result);
}); });
@@ -126,8 +121,7 @@ function getMembers(groupId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
groupdb.getMembers(groupId, function (error, result) { groupdb.getMembers(groupId, function (error, result) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null, result); return callback(null, result);
}); });
@@ -138,8 +132,7 @@ function getMembership(userId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
groupdb.getMembership(userId, function (error, result) { groupdb.getMembership(userId, function (error, result) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null, result); return callback(null, result);
}); });
@@ -151,8 +144,7 @@ function setMembership(userId, groupIds, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
groupdb.setMembership(userId, groupIds, function (error) { groupdb.setMembership(userId, groupIds, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null); return callback(null);
}); });
@@ -164,8 +156,7 @@ function addMember(groupId, userId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
groupdb.addMember(groupId, userId, function (error) { groupdb.addMember(groupId, userId, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null); return callback(null);
}); });
@@ -177,8 +168,7 @@ function setMembers(groupId, userIds, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
groupdb.setMembers(groupId, userIds, function (error) { groupdb.setMembers(groupId, userIds, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, 'Invalid group or user id')); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null); return callback(null);
}); });
@@ -190,8 +180,7 @@ function removeMember(groupId, userId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
groupdb.removeMember(groupId, userId, function (error) { groupdb.removeMember(groupId, userId, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null); return callback(null);
}); });
@@ -203,8 +192,7 @@ function isMember(groupId, userId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
groupdb.isMember(groupId, userId, function (error, result) { groupdb.isMember(groupId, userId, function (error, result) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null, result); return callback(null, result);
}); });
@@ -223,8 +211,7 @@ function update(groupId, data, callback) {
} }
groupdb.update(groupId, _.pick(data, 'name'), function (error) { groupdb.update(groupId, _.pick(data, 'name'), function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -235,7 +222,7 @@ function getGroups(userId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
groupdb.getGroups(userId, function (error, results) { groupdb.getGroups(userId, function (error, results) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, results); callback(null, results);
}); });
@@ -245,7 +232,7 @@ function count(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
groupdb.count(function (error, count) { groupdb.count(function (error, count) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, count); callback(null, count);
}); });

View File

@@ -10,6 +10,7 @@ var assert = require('assert'),
apps = require('./apps.js'), apps = require('./apps.js'),
async = require('async'), async = require('async'),
constants = require('./constants.js'), constants = require('./constants.js'),
BoxError = require('./boxerror.js'),
DatabaseError = require('./databaseerror.js'), DatabaseError = require('./databaseerror.js'),
debug = require('debug')('box:ldap'), debug = require('debug')('box:ldap'),
eventlog = require('./eventlog.js'), eventlog = require('./eventlog.js'),
@@ -567,7 +568,7 @@ function authenticateMailAddon(req, res, next) {
// note: with sendmail addon, apps can send mail without a mailbox (unlike users) // note: with sendmail addon, apps can send mail without a mailbox (unlike users)
appdb.getAppIdByAddonConfigValue(addonId, namePattern, req.credentials || '', function (error, appId) { appdb.getAppIdByAddonConfigValue(addonId, namePattern, req.credentials || '', function (error, appId) {
if (error && error.reason !== DatabaseError.NOT_FOUND) return next(new ldap.OperationsError(error.message)); if (error && error.reason !== BoxError.NOT_FOUND) return next(new ldap.OperationsError(error.message));
if (appId) { // matched app password if (appId) { // matched app password
eventlog.add(eventlog.ACTION_APP_LOGIN, { authType: 'ldap', mailboxId: email }, { appId: appId, addonId: addonId }); eventlog.add(eventlog.ACTION_APP_LOGIN, { authType: 'ldap', mailboxId: email }, { appId: appId, addonId: addonId });
return res.end(); return res.end();

View File

@@ -13,8 +13,8 @@ exports = module.exports = {
}; };
let assert = require('assert'), let assert = require('assert'),
database = require('./database.js'), BoxError = require('./boxerror.js'),
DatabaseError = require('./databaseerror'); database = require('./database.js');
const NOTIFICATION_FIELDS = [ 'id', 'userId', 'eventId', 'title', 'message', 'creationTime', 'acknowledged' ]; const NOTIFICATION_FIELDS = [ 'id', 'userId', 'eventId', 'title', 'message', 'creationTime', 'acknowledged' ];
@@ -34,8 +34,8 @@ function add(notification, callback) {
const args = [ notification.userId, notification.eventId, notification.title, notification.message, notification.acknowledged ]; const args = [ notification.userId, notification.eventId, notification.title, notification.message, notification.acknowledged ];
database.query(query, args, function (error, result) { database.query(query, args, function (error, result) {
if (error && error.code === 'ER_NO_REFERENCED_ROW_2') return callback(new DatabaseError(DatabaseError.NOT_FOUND, 'no such eventlog entry')); if (error && error.code === 'ER_NO_REFERENCED_ROW_2') return callback(new BoxError(BoxError.NOT_FOUND, 'no such eventlog entry'));
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, String(result.insertId)); callback(null, String(result.insertId));
}); });
@@ -47,8 +47,8 @@ function getByUserIdAndTitle(userId, title, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + NOTIFICATION_FIELDS + ' from notifications WHERE userId = ? AND title = ? ORDER BY creationTime LIMIT 1', [ userId, title ], function (error, results) { database.query('SELECT ' + NOTIFICATION_FIELDS + ' from notifications WHERE userId = ? AND title = ? ORDER BY creationTime LIMIT 1', [ userId, title ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (results.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (results.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
postProcess(results[0]); postProcess(results[0]);
@@ -70,8 +70,8 @@ function update(id, data, callback) {
args.push(id); args.push(id);
database.query('UPDATE notifications SET ' + fields.join(', ') + ' WHERE id = ?', args, function (error, result) { database.query('UPDATE notifications SET ' + fields.join(', ') + ' WHERE id = ?', args, function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null); callback(null);
}); });
@@ -82,8 +82,8 @@ function get(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + NOTIFICATION_FIELDS + ' FROM notifications WHERE id = ?', [ id ], function (error, result) { database.query('SELECT ' + NOTIFICATION_FIELDS + ' FROM notifications WHERE id = ?', [ id ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
postProcess(result[0]); postProcess(result[0]);
@@ -96,8 +96,8 @@ function del(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM notifications WHERE id = ?', [ id ], function (error, result) { database.query('DELETE FROM notifications WHERE id = ?', [ id ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null); callback(null);
}); });
@@ -118,7 +118,7 @@ function listByUserIdPaged(userId, page, perPage, callback) {
data.push(perPage); data.push(perPage);
database.query(query, data, function (error, results) { database.query(query, data, function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
results.forEach(postProcess); results.forEach(postProcess);
@@ -130,7 +130,7 @@ function clear(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM notifications', function (error) { database.query('DELETE FROM notifications', function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });

View File

@@ -26,7 +26,6 @@ let assert = require('assert'),
BoxError = require('./boxerror.js'), BoxError = require('./boxerror.js'),
changelog = require('./changelog.js'), changelog = require('./changelog.js'),
custom = require('./custom.js'), custom = require('./custom.js'),
DatabaseError = require('./databaseerror.js'),
debug = require('debug')('box:notifications'), debug = require('debug')('box:notifications'),
eventlog = require('./eventlog.js'), eventlog = require('./eventlog.js'),
mailer = require('./mailer.js'), mailer = require('./mailer.js'),
@@ -50,8 +49,7 @@ function add(userId, eventId, title, message, callback) {
message: message, message: message,
acknowledged: false acknowledged: false
}, function (error, result) { }, function (error, result) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, error.message)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, { id: result }); callback(null, { id: result });
}); });
@@ -62,8 +60,7 @@ function get(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
notificationdb.get(id, function (error, result) { notificationdb.get(id, function (error, result) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, result); callback(null, result);
}); });
@@ -74,8 +71,7 @@ function ack(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
notificationdb.update(id, { acknowledged: true }, function (error) { notificationdb.update(id, { acknowledged: true }, function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -310,15 +306,14 @@ function alert(id, title, message, callback) {
}; };
notificationdb.getByUserIdAndTitle(admin.id, title, function (error, result) { notificationdb.getByUserIdAndTitle(admin.id, title, function (error, result) {
if (error && error.reason !== DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error && error.reason !== BoxError.NOT_FOUND) return callback(error);
if (!result && acknowledged) return callback(); // do not add acked alerts if (!result && acknowledged) return callback(); // do not add acked alerts
let updateFunc = !result ? notificationdb.add.bind(null, data) : notificationdb.update.bind(null, result.id, data); let updateFunc = !result ? notificationdb.add.bind(null, data) : notificationdb.update.bind(null, result.id, data);
updateFunc(function (error) { updateFunc(function (error) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND, error.message)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });

View File

@@ -25,7 +25,6 @@ var apps = require('../apps.js'),
BoxError = require('../boxerror.js'), BoxError = require('../boxerror.js'),
clients = require('../clients'), clients = require('../clients'),
constants = require('../constants.js'), constants = require('../constants.js'),
DatabaseError = require('../databaseerror.js'),
debug = require('debug')('box:routes/oauth2'), debug = require('debug')('box:routes/oauth2'),
eventlog = require('../eventlog.js'), eventlog = require('../eventlog.js'),
hat = require('../hat.js'), hat = require('../hat.js'),
@@ -89,7 +88,7 @@ function initialize() {
// exchange authorization codes for access tokens. this is used by external oauth clients // exchange authorization codes for access tokens. this is used by external oauth clients
gServer.exchange(oauth2orize.exchange.code(function (client, code, redirectURI, callback) { gServer.exchange(oauth2orize.exchange.code(function (client, code, redirectURI, callback) {
authcodedb.get(code, function (error, authCode) { authcodedb.get(code, function (error, authCode) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, false); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, false);
if (error) return callback(error); if (error) return callback(error);
if (client.id !== authCode.clientId) return callback(null, false); if (client.id !== authCode.clientId) return callback(null, false);

View File

@@ -99,7 +99,6 @@ var addons = require('./addons.js'),
constants = require('./constants.js'), constants = require('./constants.js'),
cron = require('./cron.js'), cron = require('./cron.js'),
CronJob = require('cron').CronJob, CronJob = require('cron').CronJob,
DatabaseError = require('./databaseerror.js'),
debug = require('debug')('box:settings'), debug = require('debug')('box:settings'),
docker = require('./docker.js'), docker = require('./docker.js'),
externalldap = require('./externalldap.js'), externalldap = require('./externalldap.js'),
@@ -172,8 +171,8 @@ function getAppAutoupdatePattern(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.APP_AUTOUPDATE_PATTERN_KEY, function (error, pattern) { settingsdb.get(exports.APP_AUTOUPDATE_PATTERN_KEY, function (error, pattern) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.APP_AUTOUPDATE_PATTERN_KEY]); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.APP_AUTOUPDATE_PATTERN_KEY]);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, pattern); callback(null, pattern);
}); });
@@ -189,7 +188,7 @@ function setBoxAutoupdatePattern(pattern, callback) {
} }
settingsdb.set(exports.BOX_AUTOUPDATE_PATTERN_KEY, pattern, function (error) { settingsdb.set(exports.BOX_AUTOUPDATE_PATTERN_KEY, pattern, function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
notifyChange(exports.BOX_AUTOUPDATE_PATTERN_KEY, pattern); notifyChange(exports.BOX_AUTOUPDATE_PATTERN_KEY, pattern);
@@ -201,8 +200,8 @@ function getBoxAutoupdatePattern(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.BOX_AUTOUPDATE_PATTERN_KEY, function (error, pattern) { settingsdb.get(exports.BOX_AUTOUPDATE_PATTERN_KEY, function (error, pattern) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.BOX_AUTOUPDATE_PATTERN_KEY]); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.BOX_AUTOUPDATE_PATTERN_KEY]);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, pattern); callback(null, pattern);
}); });
@@ -215,7 +214,7 @@ function setTimeZone(tz, callback) {
if (moment.tz.names().indexOf(tz) === -1) return callback(new BoxError(BoxError.BAD_FIELD, 'Bad timeZone', { field: 'timezone' })); if (moment.tz.names().indexOf(tz) === -1) return callback(new BoxError(BoxError.BAD_FIELD, 'Bad timeZone', { field: 'timezone' }));
settingsdb.set(exports.TIME_ZONE_KEY, tz, function (error) { settingsdb.set(exports.TIME_ZONE_KEY, tz, function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
notifyChange(exports.TIME_ZONE_KEY, tz); notifyChange(exports.TIME_ZONE_KEY, tz);
@@ -227,8 +226,8 @@ function getTimeZone(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.TIME_ZONE_KEY, function (error, tz) { settingsdb.get(exports.TIME_ZONE_KEY, function (error, tz) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.TIME_ZONE_KEY]); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.TIME_ZONE_KEY]);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, tz); callback(null, tz);
}); });
@@ -238,8 +237,9 @@ function getCloudronName(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.CLOUDRON_NAME_KEY, function (error, name) { settingsdb.get(exports.CLOUDRON_NAME_KEY, function (error, name) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.CLOUDRON_NAME_KEY]); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.CLOUDRON_NAME_KEY]);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, name); callback(null, name);
}); });
} }
@@ -254,7 +254,7 @@ function setCloudronName(name, callback) {
if (name.length > 32) return callback(new BoxError(BoxError.BAD_FIELD, 'name cannot exceed 32 characters', { field: 'name' })); if (name.length > 32) return callback(new BoxError(BoxError.BAD_FIELD, 'name cannot exceed 32 characters', { field: 'name' }));
settingsdb.set(exports.CLOUDRON_NAME_KEY, name, function (error) { settingsdb.set(exports.CLOUDRON_NAME_KEY, name, function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
notifyChange(exports.CLOUDRON_NAME_KEY, name); notifyChange(exports.CLOUDRON_NAME_KEY, name);
@@ -272,7 +272,7 @@ function getCloudronAvatar(callback) {
avatar = safe.fs.readFileSync(paths.CLOUDRON_DEFAULT_AVATAR_FILE); avatar = safe.fs.readFileSync(paths.CLOUDRON_DEFAULT_AVATAR_FILE);
if (avatar) return callback(null, avatar); if (avatar) return callback(null, avatar);
callback(new BoxError(BoxError.DATABASE_ERROR, safe.error)); callback(new BoxError(BoxError.FS_ERROR, safe.error));
} }
function setCloudronAvatar(avatar, callback) { function setCloudronAvatar(avatar, callback) {
@@ -280,7 +280,7 @@ function setCloudronAvatar(avatar, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
if (!safe.fs.writeFileSync(paths.CLOUDRON_AVATAR_FILE, avatar)) { if (!safe.fs.writeFileSync(paths.CLOUDRON_AVATAR_FILE, avatar)) {
return callback(new BoxError(BoxError.DATABASE_ERROR, safe.error)); return callback(new BoxError(BoxError.FS_ERROR, safe.error));
} }
return callback(null); return callback(null);
@@ -290,8 +290,8 @@ function getDynamicDnsConfig(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.DYNAMIC_DNS_KEY, function (error, enabled) { settingsdb.get(exports.DYNAMIC_DNS_KEY, function (error, enabled) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.DYNAMIC_DNS_KEY]); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.DYNAMIC_DNS_KEY]);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, !!enabled); // settingsdb holds string values only callback(null, !!enabled); // settingsdb holds string values only
}); });
@@ -303,7 +303,7 @@ function setDynamicDnsConfig(enabled, callback) {
// settingsdb takes string values only // settingsdb takes string values only
settingsdb.set(exports.DYNAMIC_DNS_KEY, enabled ? 'enabled' : '', function (error) { settingsdb.set(exports.DYNAMIC_DNS_KEY, enabled ? 'enabled' : '', function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
notifyChange(exports.DYNAMIC_DNS_KEY, enabled); notifyChange(exports.DYNAMIC_DNS_KEY, enabled);
@@ -315,8 +315,8 @@ function getUnstableAppsConfig(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.UNSTABLE_APPS_KEY, function (error, enabled) { settingsdb.get(exports.UNSTABLE_APPS_KEY, function (error, enabled) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.UNSTABLE_APPS_KEY]); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.UNSTABLE_APPS_KEY]);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, !!enabled); // settingsdb holds string values only callback(null, !!enabled); // settingsdb holds string values only
}); });
@@ -328,7 +328,7 @@ function setUnstableAppsConfig(enabled, callback) {
// settingsdb takes string values only // settingsdb takes string values only
settingsdb.set(exports.UNSTABLE_APPS_KEY, enabled ? 'enabled' : '', function (error) { settingsdb.set(exports.UNSTABLE_APPS_KEY, enabled ? 'enabled' : '', function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
notifyChange(exports.UNSTABLE_APPS_KEY, enabled); notifyChange(exports.UNSTABLE_APPS_KEY, enabled);
@@ -340,8 +340,8 @@ function getBackupConfig(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.BACKUP_CONFIG_KEY, function (error, value) { settingsdb.get(exports.BACKUP_CONFIG_KEY, function (error, value) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.BACKUP_CONFIG_KEY]); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.BACKUP_CONFIG_KEY]);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, JSON.parse(value)); // provider, token, key, region, prefix, bucket callback(null, JSON.parse(value)); // provider, token, key, region, prefix, bucket
}); });
@@ -362,7 +362,7 @@ function setBackupConfig(backupConfig, callback) {
backups.cleanupCacheFilesSync(); backups.cleanupCacheFilesSync();
settingsdb.set(exports.BACKUP_CONFIG_KEY, JSON.stringify(backupConfig), function (error) { settingsdb.set(exports.BACKUP_CONFIG_KEY, JSON.stringify(backupConfig), function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
notifyChange(exports.BACKUP_CONFIG_KEY, backupConfig); notifyChange(exports.BACKUP_CONFIG_KEY, backupConfig);
@@ -376,8 +376,8 @@ function getPlatformConfig(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.PLATFORM_CONFIG_KEY, function (error, value) { settingsdb.get(exports.PLATFORM_CONFIG_KEY, function (error, value) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.PLATFORM_CONFIG_KEY]); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.PLATFORM_CONFIG_KEY]);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, JSON.parse(value)); callback(null, JSON.parse(value));
}); });
@@ -392,7 +392,7 @@ function setPlatformConfig(platformConfig, callback) {
} }
settingsdb.set(exports.PLATFORM_CONFIG_KEY, JSON.stringify(platformConfig), function (error) { settingsdb.set(exports.PLATFORM_CONFIG_KEY, JSON.stringify(platformConfig), function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
addons.updateServiceConfig(platformConfig, callback); addons.updateServiceConfig(platformConfig, callback);
}); });
@@ -402,8 +402,8 @@ function getExternalLdapConfig(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.EXTERNAL_LDAP_KEY, function (error, value) { settingsdb.get(exports.EXTERNAL_LDAP_KEY, function (error, value) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.EXTERNAL_LDAP_KEY]); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.EXTERNAL_LDAP_KEY]);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, JSON.parse(value)); callback(null, JSON.parse(value));
}); });
@@ -420,7 +420,7 @@ function setExternalLdapConfig(externalLdapConfig, callback) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
settingsdb.set(exports.EXTERNAL_LDAP_KEY, JSON.stringify(externalLdapConfig), function (error) { settingsdb.set(exports.EXTERNAL_LDAP_KEY, JSON.stringify(externalLdapConfig), function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
notifyChange(exports.EXTERNAL_LDAP_KEY, externalLdapConfig); notifyChange(exports.EXTERNAL_LDAP_KEY, externalLdapConfig);
@@ -433,8 +433,8 @@ function getRegistryConfig(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.REGISTRY_CONFIG_KEY, function (error, value) { settingsdb.get(exports.REGISTRY_CONFIG_KEY, function (error, value) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.REGISTRY_CONFIG_KEY]); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.REGISTRY_CONFIG_KEY]);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, JSON.parse(value)); callback(null, JSON.parse(value));
}); });
@@ -453,7 +453,7 @@ function setRegistryConfig(registryConfig, callback) {
if (error) return callback(error); if (error) return callback(error);
settingsdb.set(exports.REGISTRY_CONFIG_KEY, JSON.stringify(registryConfig), function (error) { settingsdb.set(exports.REGISTRY_CONFIG_KEY, JSON.stringify(registryConfig), function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
notifyChange(exports.REGISTRY_CONFIG_KEY, registryConfig); notifyChange(exports.REGISTRY_CONFIG_KEY, registryConfig);
@@ -467,8 +467,8 @@ function getLicenseKey(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.LICENSE_KEY, function (error, value) { settingsdb.get(exports.LICENSE_KEY, function (error, value) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.LICENSE_KEY]); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.LICENSE_KEY]);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, value); callback(null, value);
}); });
@@ -479,7 +479,7 @@ function setLicenseKey(licenseKey, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.set(exports.LICENSE_KEY, licenseKey, function (error) { settingsdb.set(exports.LICENSE_KEY, licenseKey, function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
notifyChange(exports.LICENSE_KEY, licenseKey); notifyChange(exports.LICENSE_KEY, licenseKey);
@@ -491,8 +491,8 @@ function getCloudronId(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.CLOUDRON_ID_KEY, function (error, value) { settingsdb.get(exports.CLOUDRON_ID_KEY, function (error, value) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.CLOUDRON_ID_KEY]); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.CLOUDRON_ID_KEY]);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, value); callback(null, value);
}); });
@@ -503,7 +503,7 @@ function setCloudronId(cid, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.set(exports.CLOUDRON_ID_KEY, cid, function (error) { settingsdb.set(exports.CLOUDRON_ID_KEY, cid, function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
notifyChange(exports.CLOUDRON_ID_KEY, cid); notifyChange(exports.CLOUDRON_ID_KEY, cid);
@@ -515,8 +515,8 @@ function getCloudronToken(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.CLOUDRON_TOKEN_KEY, function (error, value) { settingsdb.get(exports.CLOUDRON_TOKEN_KEY, function (error, value) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.CLOUDRON_TOKEN_KEY]); if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.CLOUDRON_TOKEN_KEY]);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, value); callback(null, value);
}); });
@@ -527,7 +527,7 @@ function setCloudronToken(token, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.set(exports.CLOUDRON_TOKEN_KEY, token, function (error) { settingsdb.set(exports.CLOUDRON_TOKEN_KEY, token, function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
notifyChange(exports.CLOUDRON_TOKEN_KEY, token); notifyChange(exports.CLOUDRON_TOKEN_KEY, token);
@@ -539,7 +539,7 @@ function getAll(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.getAll(function (error, settings) { settingsdb.getAll(function (error, settings) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
var result = _.extend({ }, gDefaults); var result = _.extend({ }, gDefaults);
settings.forEach(function (setting) { result[setting.name] = setting.value; }); settings.forEach(function (setting) { result[setting.name] = setting.value; });
@@ -583,10 +583,10 @@ function setAdmin(adminDomain, adminFqdn, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.set(exports.ADMIN_DOMAIN_KEY, adminDomain, function (error) { settingsdb.set(exports.ADMIN_DOMAIN_KEY, adminDomain, function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
settingsdb.set(exports.ADMIN_FQDN_KEY, adminFqdn, function (error) { settingsdb.set(exports.ADMIN_FQDN_KEY, adminFqdn, function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
gCache.adminDomain = adminDomain; gCache.adminDomain = adminDomain;
gCache.adminFqdn = adminFqdn; gCache.adminFqdn = adminFqdn;
@@ -601,7 +601,7 @@ function setApiServerOrigin(origin, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
settingsdb.set(exports.API_SERVER_ORIGIN_KEY, origin, function (error) { settingsdb.set(exports.API_SERVER_ORIGIN_KEY, origin, function (error) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
gCache.apiServerOrigin = origin; gCache.apiServerOrigin = origin;
notifyChange(exports.API_SERVER_ORIGIN_KEY, origin); notifyChange(exports.API_SERVER_ORIGIN_KEY, origin);

View File

@@ -10,8 +10,8 @@ exports = module.exports = {
}; };
var assert = require('assert'), var assert = require('assert'),
database = require('./database.js'), BoxError = require('./boxerror.js'),
DatabaseError = require('./databaseerror'); database = require('./database.js');
const SETTINGS_FIELDS = [ 'name', 'value' ].join(','); const SETTINGS_FIELDS = [ 'name', 'value' ].join(',');
@@ -20,8 +20,8 @@ function get(key, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query(`SELECT ${SETTINGS_FIELDS} FROM settings WHERE name = ?`, [ key ], function (error, result) { database.query(`SELECT ${SETTINGS_FIELDS} FROM settings WHERE name = ?`, [ key ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null, result[0].value); callback(null, result[0].value);
}); });
@@ -29,7 +29,7 @@ function get(key, callback) {
function getAll(callback) { function getAll(callback) {
database.query(`SELECT ${SETTINGS_FIELDS} FROM settings ORDER BY name`, function (error, results) { database.query(`SELECT ${SETTINGS_FIELDS} FROM settings ORDER BY name`, function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, results); callback(null, results);
}); });
@@ -41,7 +41,7 @@ function set(key, value, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('INSERT INTO settings (name, value) VALUES (?, ?) ON DUPLICATE KEY UPDATE value=VALUES(value)', [ key, value ], function (error) { database.query('INSERT INTO settings (name, value) VALUES (?, ?) ON DUPLICATE KEY UPDATE value=VALUES(value)', [ key, value ], function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); // don't rely on affectedRows here since it gives 2 if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); // don't rely on affectedRows here since it gives 2
callback(null); callback(null);
}); });
@@ -49,7 +49,7 @@ function set(key, value, callback) {
function clear(callback) { function clear(callback) {
database.query('DELETE FROM settings', function (error) { database.query('DELETE FROM settings', function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(error); callback(error);
}); });

View File

@@ -9,8 +9,8 @@ exports = module.exports = {
}; };
let assert = require('assert'), let assert = require('assert'),
BoxError = require('./boxerror.js'),
database = require('./database.js'), database = require('./database.js'),
DatabaseError = require('./databaseerror'),
safe = require('safetydance'); safe = require('safetydance');
const TASKS_FIELDS = [ 'id', 'type', 'argsJson', 'percent', 'message', 'errorJson', 'creationTime', 'resultJson', 'ts' ]; const TASKS_FIELDS = [ 'id', 'type', 'argsJson', 'percent', 'message', 'errorJson', 'creationTime', 'resultJson', 'ts' ];
@@ -39,7 +39,7 @@ function add(task, callback) {
const args = [ task.type, JSON.stringify(task.args), task.percent, task.message ]; const args = [ task.type, JSON.stringify(task.args), task.percent, task.message ];
database.query(query, args, function (error, result) { database.query(query, args, function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, String(result.insertId)); callback(null, String(result.insertId));
}); });
@@ -64,8 +64,8 @@ function update(id, data, callback) {
args.push(id); args.push(id);
database.query('UPDATE tasks SET ' + fields.join(', ') + ' WHERE id = ?', args, function (error, result) { database.query('UPDATE tasks SET ' + fields.join(', ') + ' WHERE id = ?', args, function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
return callback(null); return callback(null);
}); });
@@ -76,8 +76,8 @@ function get(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + TASKS_FIELDS + ' FROM tasks WHERE id = ?', [ id ], function (error, result) { database.query('SELECT ' + TASKS_FIELDS + ' FROM tasks WHERE id = ?', [ id ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
postProcess(result[0]); postProcess(result[0]);
@@ -90,8 +90,8 @@ function del(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM tasks WHERE id = ?', [ id ], function (error, result) { database.query('DELETE FROM tasks WHERE id = ?', [ id ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null); callback(null);
}); });
@@ -117,7 +117,7 @@ function listByTypePaged(type, page, perPage, callback) {
data.push(perPage); data.push(perPage);
database.query(query, data, function (error, results) { database.query(query, data, function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
results.forEach(postProcess); results.forEach(postProcess);

View File

@@ -72,8 +72,7 @@ function get(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
taskdb.get(id, function (error, task) { taskdb.get(id, function (error, task) {
if (error && error.reason == DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
postProcess(task); postProcess(task);
@@ -89,8 +88,7 @@ function update(id, task, callback) {
debug(`${id}: ${JSON.stringify(task)}`); debug(`${id}: ${JSON.stringify(task)}`);
taskdb.update(id, task, function (error) { taskdb.update(id, task, function (error) {
if (error && error.reason == DatabaseError.NOT_FOUND) return callback(new BoxError(BoxError.NOT_FOUND)); if (error) return callback(error);
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(); callback();
}); });
@@ -129,7 +127,7 @@ function add(type, args, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
taskdb.add({ type: type, percent: 0, message: 'Starting ...', args: args }, function (error, taskId) { taskdb.add({ type: type, percent: 0, message: 'Starting ...', args: args }, function (error, taskId) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
callback(null, taskId); callback(null, taskId);
}); });
@@ -217,7 +215,7 @@ function listByTypePaged(type, page, perPage, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
taskdb.listByTypePaged(type, page, perPage, function (error, tasks) { taskdb.listByTypePaged(type, page, perPage, function (error, tasks) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); if (error) return callback(error);
tasks.forEach(postProcess); tasks.forEach(postProcess);

View File

@@ -12,7 +12,6 @@ var async = require('async'),
BoxError = require('../boxerror.js'), BoxError = require('../boxerror.js'),
createTree = require('./common.js').createTree, createTree = require('./common.js').createTree,
database = require('../database'), database = require('../database'),
DatabaseError = require('../databaseerror.js'),
DataLayout = require('../datalayout.js'), DataLayout = require('../datalayout.js'),
expect = require('expect.js'), expect = require('expect.js'),
fs = require('fs'), fs = require('fs'),
@@ -171,8 +170,8 @@ describe('backups', function () {
// check that app backups are gone as well // check that app backups are gone as well
backupdb.get(BACKUP_0_APP_0.id, function (error) { backupdb.get(BACKUP_0_APP_0.id, function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(DatabaseError.NOT_FOUND); expect(error.reason).to.equal(BoxError.NOT_FOUND);
done(); done();
}); });

View File

@@ -10,6 +10,7 @@ var appdb = require('../appdb.js'),
async = require('async'), async = require('async'),
authcodedb = require('../authcodedb.js'), authcodedb = require('../authcodedb.js'),
backupdb = require('../backupdb.js'), backupdb = require('../backupdb.js'),
BoxError = require('../boxerror.js'),
clientdb = require('../clientdb.js'), clientdb = require('../clientdb.js'),
database = require('../database'), database = require('../database'),
DatabaseError = require('../databaseerror.js'), DatabaseError = require('../databaseerror.js'),
@@ -216,8 +217,8 @@ describe('database', function () {
it('cannot get by non-existing id', function (done) { it('cannot get by non-existing id', function (done) {
notificationdb.get('nopenothere', function (error, result) { notificationdb.get('nopenothere', function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(DatabaseError.NOT_FOUND); expect(error.reason).to.equal(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -238,8 +239,8 @@ describe('database', function () {
it('cannot update non-existing notification', function (done) { it('cannot update non-existing notification', function (done) {
notificationdb.update('isnotthere', { acknowledged: true }, function (error) { notificationdb.update('isnotthere', { acknowledged: true }, function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(DatabaseError.NOT_FOUND); expect(error.reason).to.equal(BoxError.NOT_FOUND);
done(); done();
}); });
}); });
@@ -265,8 +266,8 @@ describe('database', function () {
expect(error).to.equal(null); expect(error).to.equal(null);
notificationdb.get(NOTIFICATION_0.id, function (error, result) { notificationdb.get(NOTIFICATION_0.id, function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(DatabaseError.NOT_FOUND); expect(error.reason).to.equal(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
@@ -276,8 +277,8 @@ describe('database', function () {
it('deletion for non-existing notification fails', function (done) { it('deletion for non-existing notification fails', function (done) {
notificationdb.del('doesnotexts', function (error) { notificationdb.del('doesnotexts', function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(DatabaseError.NOT_FOUND); expect(error.reason).to.equal(BoxError.NOT_FOUND);
done(); done();
}); });
@@ -316,7 +317,7 @@ describe('database', function () {
it('cannot add same domain twice', function (done) { it('cannot add same domain twice', function (done) {
domaindb.add(DOMAIN_0.domain, { zoneName: DOMAIN_0.zoneName, provider: DOMAIN_0.provider, config: DOMAIN_0.config, tlsConfig: DOMAIN_0.tlsConfig }, function (error) { domaindb.add(DOMAIN_0.domain, { zoneName: DOMAIN_0.zoneName, provider: DOMAIN_0.provider, config: DOMAIN_0.config, tlsConfig: DOMAIN_0.tlsConfig }, function (error) {
expect(error).to.be.ok(); expect(error).to.be.ok();
expect(error.reason).to.be(DatabaseError.ALREADY_EXISTS); expect(error.reason).to.be(BoxError.ALREADY_EXISTS);
done(); done();
}); });
}); });
@@ -382,8 +383,8 @@ describe('database', function () {
it('cannot delete non-existing domain', function (done) { it('cannot delete non-existing domain', function (done) {
domaindb.del('not.exists', function (error) { domaindb.del('not.exists', function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(DatabaseError.NOT_FOUND); expect(error.reason).to.equal(BoxError.NOT_FOUND);
done(); done();
}); });
@@ -423,8 +424,8 @@ describe('database', function () {
expect(error).to.be(null); expect(error).to.be(null);
domaindb.del(DOMAIN_0.domain, function (error) { domaindb.del(DOMAIN_0.domain, function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(DatabaseError.IN_USE); expect(error.reason).to.equal(BoxError.CONFLICT);
appdb.del(APP_0.id, done); appdb.del(APP_0.id, done);
}); });
@@ -436,8 +437,8 @@ describe('database', function () {
expect(error).to.be(null); expect(error).to.be(null);
domaindb.get(DOMAIN_0.domain, function (error) { domaindb.get(DOMAIN_0.domain, function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(DatabaseError.NOT_FOUND); expect(error.reason).to.equal(BoxError.NOT_FOUND);
done(); done();
}); });
@@ -711,8 +712,8 @@ describe('database', function () {
it('add of same authcode fails', function (done) { it('add of same authcode fails', function (done) {
authcodedb.add(AUTHCODE_0.authCode, AUTHCODE_0.clientId, AUTHCODE_0.userId, AUTHCODE_0.expiresAt, function (error) { authcodedb.add(AUTHCODE_0.authCode, AUTHCODE_0.clientId, AUTHCODE_0.userId, AUTHCODE_0.expiresAt, function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.ALREADY_EXISTS); expect(error.reason).to.be(BoxError.ALREADY_EXISTS);
done(); done();
}); });
}); });
@@ -728,8 +729,8 @@ describe('database', function () {
it('get of nonexisting code fails', function (done) { it('get of nonexisting code fails', function (done) {
authcodedb.get(AUTHCODE_1.authCode, function (error, result) { authcodedb.get(AUTHCODE_1.authCode, function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -740,8 +741,8 @@ describe('database', function () {
expect(error).to.be(null); expect(error).to.be(null);
authcodedb.get(AUTHCODE_2.authCode, function (error, result) { authcodedb.get(AUTHCODE_2.authCode, function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -754,8 +755,8 @@ describe('database', function () {
expect(result).to.eql(1); expect(result).to.eql(1);
authcodedb.get(AUTHCODE_2.authCode, function (error, result) { authcodedb.get(AUTHCODE_2.authCode, function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -771,8 +772,8 @@ describe('database', function () {
it('cannot delete previously delete record', function (done) { it('cannot delete previously delete record', function (done) {
authcodedb.del(AUTHCODE_0.authCode, function (error) { authcodedb.del(AUTHCODE_0.authCode, function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
done(); done();
}); });
}); });
@@ -816,8 +817,8 @@ describe('database', function () {
it('add of same token fails', function (done) { it('add of same token fails', function (done) {
tokendb.add(TOKEN_0, function (error) { tokendb.add(TOKEN_0, function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.ALREADY_EXISTS); expect(error.reason).to.be(BoxError.ALREADY_EXISTS);
done(); done();
}); });
}); });
@@ -842,8 +843,8 @@ describe('database', function () {
it('get of nonexisting token fails', function (done) { it('get of nonexisting token fails', function (done) {
tokendb.getByAccessToken(TOKEN_1.accessToken, function (error, result) { tokendb.getByAccessToken(TOKEN_1.accessToken, function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -862,8 +863,8 @@ describe('database', function () {
it('delete fails', function (done) { it('delete fails', function (done) {
tokendb.del(TOKEN_0.id + 'x', function (error) { tokendb.del(TOKEN_0.id + 'x', function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
done(); done();
}); });
}); });
@@ -897,8 +898,8 @@ describe('database', function () {
it('cannot delete previously delete record', function (done) { it('cannot delete previously delete record', function (done) {
tokendb.del(TOKEN_0.id, function (error) { tokendb.del(TOKEN_0.id, function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
done(); done();
}); });
}); });
@@ -926,8 +927,8 @@ describe('database', function () {
expect(result).to.eql(1); expect(result).to.eql(1);
tokendb.getByAccessToken(TOKEN_2.accessToken, function (error, result) { tokendb.getByAccessToken(TOKEN_2.accessToken, function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -940,8 +941,8 @@ describe('database', function () {
expect(error).to.be(null); expect(error).to.be(null);
tokendb.getByAccessToken(TOKEN_0.accessToken, function (error, result) { tokendb.getByAccessToken(TOKEN_0.accessToken, function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -956,8 +957,8 @@ describe('database', function () {
expect(error).to.not.be.ok(); expect(error).to.not.be.ok();
tokendb.getByAccessToken(TOKEN_0.accessToken, function (error, result) { tokendb.getByAccessToken(TOKEN_0.accessToken, function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -1024,8 +1025,7 @@ describe('database', function () {
dataDir: null, dataDir: null,
tags: [], tags: [],
label: null, label: null,
taskId: null, taskId: null
reverseProxyConfig: {}
}; };
before(function (done) { before(function (done) {
@@ -1078,8 +1078,8 @@ describe('database', function () {
it('add of same app fails', function (done) { it('add of same app fails', function (done) {
appdb.add(APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.domain, [], APP_0, function (error) { appdb.add(APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.domain, [], APP_0, function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.ALREADY_EXISTS); expect(error.reason).to.be(BoxError.ALREADY_EXISTS);
done(); done();
}); });
}); });
@@ -1095,8 +1095,8 @@ describe('database', function () {
it('get of nonexisting code fails', function (done) { it('get of nonexisting code fails', function (done) {
appdb.get(APP_1.id, function (error, result) { appdb.get(APP_1.id, function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -1143,8 +1143,8 @@ describe('database', function () {
it('update of nonexisting app fails', function (done) { it('update of nonexisting app fails', function (done) {
appdb.update(APP_1.id, { installationState: APP_1.installationState, location: APP_1.location }, function (error) { appdb.update(APP_1.id, { installationState: APP_1.installationState, location: APP_1.location }, function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
done(); done();
}); });
}); });
@@ -1196,8 +1196,8 @@ describe('database', function () {
it('cannot delete previously delete record', function (done) { it('cannot delete previously delete record', function (done) {
appdb.del(APP_0.id, function (error) { appdb.del(APP_0.id, function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
done(); done();
}); });
}); });
@@ -1264,7 +1264,7 @@ describe('database', function () {
it('getAddonConfigByName of unknown value succeeds', function (done) { it('getAddonConfigByName of unknown value succeeds', function (done) {
appdb.getAddonConfigByName(APP_1.id, 'addonid1', 'NOPE', function (error) { appdb.getAddonConfigByName(APP_1.id, 'addonid1', 'NOPE', function (error) {
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
done(); done();
}); });
}); });
@@ -1369,7 +1369,7 @@ describe('database', function () {
taskdb.del(taskId, function (error) { taskdb.del(taskId, function (error) {
expect(error).to.be(null); expect(error).to.be(null);
taskdb.get(taskId, function (error) { taskdb.get(taskId, function (error) {
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
done(); done();
}); });
}); });
@@ -1408,8 +1408,8 @@ describe('database', function () {
it('add same client id fails', function (done) { it('add same client id fails', function (done) {
clientdb.add(CLIENT_0.id, CLIENT_0.appId, CLIENT_0.type, CLIENT_0.clientSecret, CLIENT_0.redirectURI, CLIENT_0.scope, function (error) { clientdb.add(CLIENT_0.id, CLIENT_0.appId, CLIENT_0.type, CLIENT_0.clientSecret, CLIENT_0.redirectURI, CLIENT_0.scope, function (error) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(DatabaseError.ALREADY_EXISTS); expect(error.reason).to.equal(BoxError.ALREADY_EXISTS);
done(); done();
}); });
}); });
@@ -1440,8 +1440,8 @@ describe('database', function () {
it('getByAppId fails for unknown client id', function (done) { it('getByAppId fails for unknown client id', function (done) {
clientdb.getByAppId(CLIENT_0.appId + CLIENT_0.appId, function (error, result) { clientdb.getByAppId(CLIENT_0.appId + CLIENT_0.appId, function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(DatabaseError.NOT_FOUND); expect(error.reason).to.equal(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -1463,8 +1463,8 @@ describe('database', function () {
expect(error).to.be(null); expect(error).to.be(null);
clientdb.getByAppIdAndType(CLIENT_1.appId, CLIENT_1.type, function (error, result) { clientdb.getByAppIdAndType(CLIENT_1.appId, CLIENT_1.type, function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(DatabaseError.NOT_FOUND); expect(error.reason).to.equal(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -1476,8 +1476,8 @@ describe('database', function () {
expect(error).to.be(null); expect(error).to.be(null);
clientdb.getByAppId(CLIENT_0.appId, function (error, result) { clientdb.getByAppId(CLIENT_0.appId, function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(DatabaseError.NOT_FOUND); expect(error.reason).to.equal(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -1557,8 +1557,8 @@ describe('database', function () {
it('get of unknown id fails', function (done) { it('get of unknown id fails', function (done) {
backupdb.get('somerandom', function (error, result) { backupdb.get('somerandom', function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -1585,8 +1585,8 @@ describe('database', function () {
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
backupdb.get('backup-box', function (error, result) { backupdb.get('backup-box', function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(DatabaseError.NOT_FOUND); expect(error.reason).to.equal(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -1642,8 +1642,8 @@ describe('database', function () {
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
backupdb.get('app_appid_123', function (error, result) { backupdb.get('app_appid_123', function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(DatabaseError.NOT_FOUND); expect(error.reason).to.equal(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -1678,8 +1678,8 @@ describe('database', function () {
it('get of unknown id fails', function (done) { it('get of unknown id fails', function (done) {
eventlogdb.get('notfoundid', function (error, result) { eventlogdb.get('notfoundid', function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -1868,7 +1868,7 @@ describe('database', function () {
it('cannot add invalid user to group', function (done) { it('cannot add invalid user to group', function (done) {
groupdb.addMember(GROUP_ID_1, 'random', function (error) { groupdb.addMember(GROUP_ID_1, 'random', function (error) {
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
done(); done();
}); });
}); });
@@ -1890,7 +1890,7 @@ describe('database', function () {
it('cannot delete non-existent member', function (done) { it('cannot delete non-existent member', function (done) {
groupdb.removeMember(GROUP_ID_1, 'random', function (error) { groupdb.removeMember(GROUP_ID_1, 'random', function (error) {
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
done(); done();
}); });
}); });

View File

@@ -9,7 +9,6 @@
var async = require('async'), var async = require('async'),
BoxError = require('../boxerror.js'), BoxError = require('../boxerror.js'),
database = require('../database.js'), database = require('../database.js'),
DatabaseError = require('../databaseerror.js'),
expect = require('expect.js'), expect = require('expect.js'),
groups = require('../groups.js'), groups = require('../groups.js'),
hat = require('../hat.js'), hat = require('../hat.js'),
@@ -166,7 +165,7 @@ describe('Groups', function () {
it('did delete mailbox', function (done) { it('did delete mailbox', function (done) {
mailboxdb.getList(GROUP0_NAME.toLowerCase(), DOMAIN_0.domain, function (error) { mailboxdb.getList(GROUP0_NAME.toLowerCase(), DOMAIN_0.domain, function (error) {
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
done(); done();
}); });
}); });

View File

@@ -8,8 +8,8 @@
var async = require('async'), var async = require('async'),
authcodedb = require('../authcodedb.js'), authcodedb = require('../authcodedb.js'),
BoxError = require('../boxerror.js'),
database = require('../database'), database = require('../database'),
DatabaseError = require('../databaseerror.js'),
expect = require('expect.js'), expect = require('expect.js'),
hat = require('../hat.js'), hat = require('../hat.js'),
janitor = require('../janitor.js'), janitor = require('../janitor.js'),
@@ -80,8 +80,8 @@ describe('janitor', function () {
it('did remove expired authcode', function (done) { it('did remove expired authcode', function (done) {
authcodedb.get(AUTHCODE_1.authCode, function (error, result) { authcodedb.get(AUTHCODE_1.authCode, function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });
@@ -97,8 +97,8 @@ describe('janitor', function () {
it('did remove the non-expired token', function (done) { it('did remove the non-expired token', function (done) {
tokendb.getByAccessToken(TOKEN_1.accessToken, function (error, result) { tokendb.getByAccessToken(TOKEN_1.accessToken, function (error, result) {
expect(error).to.be.a(DatabaseError); expect(error).to.be.a(BoxError);
expect(error.reason).to.be(DatabaseError.NOT_FOUND); expect(error.reason).to.be(BoxError.NOT_FOUND);
expect(result).to.not.be.ok(); expect(result).to.not.be.ok();
done(); done();
}); });

View File

@@ -18,8 +18,8 @@ exports = module.exports = {
}; };
var assert = require('assert'), var assert = require('assert'),
database = require('./database.js'), BoxError = require('./boxerror.js'),
DatabaseError = require('./databaseerror'); database = require('./database.js');
var TOKENS_FIELDS = [ 'id', 'accessToken', 'identifier', 'clientId', 'scope', 'expires', 'name' ].join(','); var TOKENS_FIELDS = [ 'id', 'accessToken', 'identifier', 'clientId', 'scope', 'expires', 'name' ].join(',');
@@ -28,8 +28,8 @@ function getByAccessToken(accessToken, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + TOKENS_FIELDS + ' FROM tokens WHERE accessToken = ? AND expires > ?', [ accessToken, Date.now() ], function (error, result) { database.query('SELECT ' + TOKENS_FIELDS + ' FROM tokens WHERE accessToken = ? AND expires > ?', [ accessToken, Date.now() ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null, result[0]); callback(null, result[0]);
}); });
@@ -40,8 +40,8 @@ function get(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + TOKENS_FIELDS + ' FROM tokens WHERE id = ?', [ id ], function (error, result) { database.query('SELECT ' + TOKENS_FIELDS + ' FROM tokens WHERE id = ?', [ id ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null, result[0]); callback(null, result[0]);
}); });
@@ -63,8 +63,8 @@ function add(token, callback) {
database.query('INSERT INTO tokens (id, accessToken, identifier, clientId, expires, scope, name) VALUES (?, ?, ?, ?, ?, ?, ?)', database.query('INSERT INTO tokens (id, accessToken, identifier, clientId, expires, scope, name) VALUES (?, ?, ?, ?, ?, ?, ?)',
[ id, accessToken, identifier, clientId, expires, scope, name ], function (error, result) { [ id, accessToken, identifier, clientId, expires, scope, name ], function (error, result) {
if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS)); if (error && error.code === 'ER_DUP_ENTRY') return callback(new BoxError(BoxError.ALREADY_EXISTS));
if (error || result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error || result.affectedRows !== 1) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null); callback(null);
}); });
@@ -75,8 +75,8 @@ function del(id, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM tokens WHERE id = ?', [ id ], function (error, result) { database.query('DELETE FROM tokens WHERE id = ?', [ id ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
callback(error); callback(error);
}); });
@@ -87,8 +87,8 @@ function delByClientId(clientId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM tokens WHERE clientId = ?', [ clientId ], function (error, result) { database.query('DELETE FROM tokens WHERE clientId = ?', [ clientId ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
return callback(null); return callback(null);
}); });
@@ -99,7 +99,7 @@ function getByIdentifier(identifier, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + TOKENS_FIELDS + ' FROM tokens WHERE identifier = ?', [ identifier ], function (error, results) { database.query('SELECT ' + TOKENS_FIELDS + ' FROM tokens WHERE identifier = ?', [ identifier ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
callback(null, results); callback(null, results);
}); });
@@ -110,8 +110,8 @@ function delByIdentifier(identifier, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM tokens WHERE identifier = ?', [ identifier ], function (error, result) { database.query('DELETE FROM tokens WHERE identifier = ?', [ identifier ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
return callback(null); return callback(null);
}); });
@@ -123,8 +123,8 @@ function getByIdentifierAndClientId(identifier, clientId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + TOKENS_FIELDS + ' FROM tokens WHERE identifier=? AND clientId=?', [ identifier, clientId ], function (error, results) { database.query('SELECT ' + TOKENS_FIELDS + ' FROM tokens WHERE identifier=? AND clientId=?', [ identifier, clientId ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (results.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (results.length === 0) return callback(new BoxError(BoxError.NOT_FOUND));
callback(null, results); callback(null, results);
}); });
@@ -136,8 +136,8 @@ function delByIdentifierAndClientId(identifier, clientId, callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM tokens WHERE identifier = ? AND clientId = ?', [ identifier, clientId ], function (error, result) { database.query('DELETE FROM tokens WHERE identifier = ? AND clientId = ?', [ identifier, clientId ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); if (result.affectedRows !== 1) return callback(new BoxError(BoxError.NOT_FOUND));
return callback(null); return callback(null);
}); });
@@ -147,7 +147,7 @@ function delExpired(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM tokens WHERE expires <= ?', [ Date.now() ], function (error, result) { database.query('DELETE FROM tokens WHERE expires <= ?', [ Date.now() ], function (error, result) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null, result.affectedRows); return callback(null, result.affectedRows);
}); });
} }
@@ -156,9 +156,8 @@ function clear(callback) {
assert.strictEqual(typeof callback, 'function'); assert.strictEqual(typeof callback, 'function');
database.query('DELETE FROM tokens', function (error) { database.query('DELETE FROM tokens', function (error) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
return callback(null); return callback(null);
}); });
} }