diff --git a/src/addons.js b/src/addons.js index 5d1632180..6f90e40c9 100644 --- a/src/addons.js +++ b/src/addons.js @@ -1776,7 +1776,7 @@ function statusSftp(callback) { docker.inspect('sftp', function (error, container) { if (error && error.reason === BoxError.NOT_FOUND) return callback(null, { status: exports.SERVICE_STATUS_STOPPED }); - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) return callback(error); docker.memoryUsage('sftp', function (error, result) { if (error) return callback(error); diff --git a/src/apps.js b/src/apps.js index 112aa1888..a5f312bf5 100644 --- a/src/apps.js +++ b/src/apps.js @@ -346,7 +346,7 @@ function getDuplicateErrorDetails(errorMessage, locations, domainObjectMap, port var match = errorMessage.match(/ER_DUP_ENTRY: Duplicate entry '(.*)' for key '(.*)'/); if (!match) { debug('Unexpected SQL error message.', errorMessage); - return new BoxError(BoxError.INTERNAL_ERROR, new Error(errorMessage)); + return new BoxError(BoxError.DATABASE_ERROR, errorMessage); } // check if a location conflicts diff --git a/src/backups.js b/src/backups.js index d2d606735..9b02be7be 100644 --- a/src/backups.js +++ b/src/backups.js @@ -771,7 +771,6 @@ function rotateBoxBackup(backupConfig, tag, appBackupIds, progressCallback, call assert.strictEqual(typeof callback, 'function'); var snapshotInfo = getSnapshotInfo('box'); - if (!snapshotInfo) return callback(new BoxError(BoxError.INTERNAL_ERROR, 'Snapshot info missing or corrupt')); const snapshotTime = snapshotInfo.timestamp.replace(/[T.]/g, '-').replace(/[:Z]/g,''); // add this to filename to make it unique, so it's easy to download them const backupId = util.format('%s/box_%s_v%s', tag, snapshotTime, constants.VERSION); @@ -852,7 +851,6 @@ function rotateAppBackup(backupConfig, app, tag, options, progressCallback, call assert.strictEqual(typeof callback, 'function'); var snapshotInfo = getSnapshotInfo(app.id); - if (!snapshotInfo) return callback(new BoxError(BoxError.INTERNAL_ERROR, 'Snapshot info missing or corrupt')); var manifest = snapshotInfo.restoreConfig ? snapshotInfo.restoreConfig.manifest : snapshotInfo.manifest; // compat const snapshotTime = snapshotInfo.timestamp.replace(/[T.]/g, '-').replace(/[:Z]/g,''); // add this for unique filename which helps when downloading them @@ -951,7 +949,7 @@ function backupBoxAndApps(progressCallback, callback) { const tag = (new Date()).toISOString().replace(/[T.]/g, '-').replace(/[:Z]/g,''); apps.getAll(function (error, allApps) { - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) return callback(error); let percent = 1; let step = 100/(allApps.length+2); @@ -993,7 +991,7 @@ function startBackupTask(auditSource, callback) { if (error) return callback(new BoxError(BoxError.BAD_STATE, `Cannot backup now: ${error.message}`)); tasks.add(tasks.TASK_BACKUP, [ ], function (error, taskId) { - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) return callback(error); eventlog.add(eventlog.ACTION_BACKUP_START, auditSource, { taskId }); diff --git a/src/cloudron.js b/src/cloudron.js index 0e58973f0..77f69759a 100644 --- a/src/cloudron.js +++ b/src/cloudron.js @@ -260,13 +260,13 @@ function prepareDashboardDomain(domain, auditSource, callback) { const fqdn = domains.fqdn(constants.ADMIN_LOCATION, domainObject); apps.getAll(function (error, result) { - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) return callback(error); const conflict = result.filter(app => app.fqdn === fqdn); if (conflict.length) return callback(new BoxError(BoxError.BAD_STATE, 'Dashboard location conflicts with an existing app')); tasks.add(tasks.TASK_PREPARE_DASHBOARD_DOMAIN, [ domain, auditSource ], function (error, taskId) { - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) return callback(error); tasks.startTask(taskId, {}, NOOP_CALLBACK); @@ -288,7 +288,7 @@ function setDashboardDomain(domain, auditSource, callback) { if (error) return callback(error); reverseProxy.writeAdminConfig(domain, function (error) { - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) return callback(error); const fqdn = domains.fqdn(constants.ADMIN_LOCATION, domainObject); @@ -296,7 +296,7 @@ function setDashboardDomain(domain, auditSource, callback) { (done) => settings.setAdmin(domain, fqdn, done), (done) => clients.addDefaultClients(settings.adminOrigin(), done) ], function (error) { - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) return callback(error); eventlog.add(eventlog.ACTION_DASHBOARD_DOMAIN_UPDATE, auditSource, { domain: domain, fqdn: fqdn }); @@ -340,7 +340,7 @@ function renewCerts(options, auditSource, callback) { assert.strictEqual(typeof callback, 'function'); tasks.add(tasks.TASK_RENEW_CERTS, [ options, auditSource ], function (error, taskId) { - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) return callback(error); tasks.startTask(taskId, {}, NOOP_CALLBACK); diff --git a/src/disks.js b/src/disks.js index c8d40a2ad..590f87e15 100644 --- a/src/disks.js +++ b/src/disks.js @@ -46,7 +46,7 @@ function getDisks(callback) { }; apps.getAll(function (error, allApps) { - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) return callback(error); async.eachSeries(allApps, function (app, iteratorDone) { if (!app.dataDir) { @@ -59,7 +59,7 @@ function getDisks(callback) { iteratorDone(); }); }, function (error) { - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) return callback(error); callback(null, disks); }); diff --git a/src/externalldap.js b/src/externalldap.js index c7d8b84eb..2bc02e77b 100644 --- a/src/externalldap.js +++ b/src/externalldap.js @@ -80,7 +80,7 @@ function verifyPassword(user, password, callback) { assert.strictEqual(typeof callback, 'function'); settings.getExternalLdapConfig(function (error, externalLdapConfig) { - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) return callback(error); if (!externalLdapConfig.enabled) return callback(new BoxError(BoxError.BAD_STATE, 'not enabled')); getClient(externalLdapConfig, function (error, client) { @@ -102,11 +102,11 @@ function startSyncer(callback) { assert.strictEqual(typeof callback, 'function'); settings.getExternalLdapConfig(function (error, externalLdapConfig) { - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) return callback(error); if (!externalLdapConfig.enabled) return callback(new BoxError(BoxError.BAD_STATE, 'not enabled')); tasks.add(tasks.TASK_SYNC_EXTERNAL_LDAP, [], function (error, taskId) { - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) return callback(error); tasks.startTask(taskId, {}, function (error, result) { debug('sync: done', error, result); @@ -124,7 +124,7 @@ function sync(progressCallback, callback) { debug('Start user syncing ...'); settings.getExternalLdapConfig(function (error, externalLdapConfig) { - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) return callback(error); if (!externalLdapConfig.enabled) return callback(new BoxError(BoxError.BAD_STATE, 'not enabled')); getClient(externalLdapConfig, function (error, client) { diff --git a/src/routes/test/apps-test.js b/src/routes/test/apps-test.js index 49345a6e5..8a040da5d 100644 --- a/src/routes/test/apps-test.js +++ b/src/routes/test/apps-test.js @@ -432,7 +432,7 @@ describe('App API', function () { .query({ access_token: token }) .send({ appStoreId: APP_STORE_ID, location: APP_LOCATION, domain: DOMAIN_0.domain, portBindings: null, accessRestriction: null }) .end(function (err, res) { - expect(res.statusCode).to.equal(424); + expect(res.statusCode).to.equal(402); expect(fake1.isDone()).to.be.ok(); done(); }); diff --git a/src/support.js b/src/support.js index 486d5b701..4cc1d2a4e 100644 --- a/src/support.js +++ b/src/support.js @@ -26,7 +26,7 @@ function getRemoteSupport(callback) { let result = ''; let cp = shell.sudo('support', [ AUTHORIZED_KEYS_CMD, 'is-enabled', AUTHORIZED_KEYS_FILEPATH ], {}, function (error) { - if (error) callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) callback(new BoxError(BoxError.FS_ERROR, error)); callback(null, { enabled: result.trim() === 'true' }); }); @@ -37,7 +37,7 @@ function enableRemoteSupport(enable, callback) { assert.strictEqual(typeof callback, 'function'); shell.sudo('support', [ AUTHORIZED_KEYS_CMD, enable ? 'enable' : 'disable', AUTHORIZED_KEYS_FILEPATH, AUTHORIZED_KEYS_USER ], {}, function (error) { - if (error) callback(new BoxError(BoxError.INTERNAL_ERROR, error)); + if (error) callback(new BoxError(BoxError.FS_ERROR, error)); callback(); }); diff --git a/src/sysinfo/ec2.js b/src/sysinfo/ec2.js index 2343093ba..f6116a893 100644 --- a/src/sysinfo/ec2.js +++ b/src/sysinfo/ec2.js @@ -13,7 +13,7 @@ function getPublicIp(callback) { assert.strictEqual(typeof callback, 'function'); superagent.get('http://169.254.169.254/latest/meta-data/public-ipv4').timeout(30 * 1000).end(function (error, result) { - if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error.status ? 'Request failed: ' + error.status : 'Network failure')); + if (error && !error.response) return callback(new BoxError(BoxError.NETWORK_ERROR, error)); if (result.statusCode !== 200) return callback(new BoxError(BoxError.EXTERNAL_ERROR, util.format('%s %j', result.status, result.body))); callback(null, result.text);