diff --git a/src/sysinfo.js b/src/sysinfo.js index 20576e41d..6f35d71af 100644 --- a/src/sysinfo.js +++ b/src/sysinfo.js @@ -1,8 +1,6 @@ 'use strict'; exports = module.exports = { - SysInfoError: SysInfoError, - getPublicIp: getPublicIp, hasIPv6: hasIPv6, @@ -15,34 +13,10 @@ var assert = require('assert'), generic = require('./sysinfo/generic.js'), paths = require('./paths.js'), scaleway = require('./sysinfo/scaleway.js'), - safe = require('safetydance'), - util = require('util'); - -function SysInfoError(reason, errorOrMessage) { - assert.strictEqual(typeof reason, 'string'); - assert(errorOrMessage instanceof Error || typeof errorOrMessage === 'string' || typeof errorOrMessage === 'undefined'); - - Error.call(this); - Error.captureStackTrace(this, this.constructor); - - this.name = this.constructor.name; - this.reason = reason; - if (typeof errorOrMessage === 'undefined') { - this.message = reason; - } else if (typeof errorOrMessage === 'string') { - this.message = errorOrMessage; - } else { - this.message = 'Internal error'; - this.nestedError = errorOrMessage; - } -} -util.inherits(SysInfoError, Error); -SysInfoError.INTERNAL_ERROR = 'Internal Error'; -SysInfoError.EXTERNAL_ERROR = 'External Error'; + safe = require('safetydance'); let gProvider = null; - function provider() { if (gProvider) return gProvider; diff --git a/src/sysinfo/ec2.js b/src/sysinfo/ec2.js index 256c775ef..2343093ba 100644 --- a/src/sysinfo/ec2.js +++ b/src/sysinfo/ec2.js @@ -5,16 +5,16 @@ exports = module.exports = { }; var assert = require('assert'), + BoxError = require('../boxerror.js'), superagent = require('superagent'), - SysInfoError = require('../sysinfo.js').SysInfoError, util = require('util'); 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 SysInfoError(SysInfoError.INTERNAL_ERROR, error.status ? 'Request failed: ' + error.status : 'Network failure')); - if (result.statusCode !== 200) return callback(new SysInfoError(SysInfoError.EXTERNAL_ERROR, util.format('%s %j', result.status, result.body))); + if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error.status ? 'Request failed: ' + error.status : 'Network failure')); + if (result.statusCode !== 200) return callback(new BoxError(BoxError.EXTERNAL_ERROR, util.format('%s %j', result.status, result.body))); callback(null, result.text); }); diff --git a/src/sysinfo/generic.js b/src/sysinfo/generic.js index 0376a7c6b..034a72a1b 100644 --- a/src/sysinfo/generic.js +++ b/src/sysinfo/generic.js @@ -6,8 +6,8 @@ exports = module.exports = { var assert = require('assert'), async = require('async'), - superagent = require('superagent'), - SysInfoError = require('../sysinfo.js').SysInfoError; + BoxError = require('../boxerror.js'), + superagent = require('superagent'); function getPublicIp(callback) { assert.strictEqual(typeof callback, 'function'); @@ -18,11 +18,11 @@ function getPublicIp(callback) { superagent.get('https://api.cloudron.io/api/v1/helper/public_ip').timeout(30 * 1000).end(function (error, result) { if (error || result.statusCode !== 200) { console.error('Error getting IP', error); - return callback(new SysInfoError(SysInfoError.EXTERNAL_ERROR, 'Unable to detect IP. API server unreachable')); + return callback(new BoxError(BoxError.EXTERNAL_ERROR, 'Unable to detect IP. API server unreachable')); } if (!result.body && !result.body.ip) { console.error('Unexpected answer. No "ip" found in response body.', result.body); - return callback(new SysInfoError(SysInfoError.EXTERNAL_ERROR, 'Unable to detect IP. No IP found in response')); + return callback(new BoxError(BoxError.EXTERNAL_ERROR, 'Unable to detect IP. No IP found in response')); } callback(null, result.body.ip); diff --git a/src/sysinfo/scaleway.js b/src/sysinfo/scaleway.js index f12b655e2..6de2c065c 100644 --- a/src/sysinfo/scaleway.js +++ b/src/sysinfo/scaleway.js @@ -5,19 +5,19 @@ exports = module.exports = { }; var assert = require('assert'), + BoxError = require('../boxerror.js'), superagent = require('superagent'), - SysInfoError = require('../sysinfo.js').SysInfoError, util = require('util'); function getPublicIp(callback) { assert.strictEqual(typeof callback, 'function'); superagent.get('http://169.254.42.42/conf').timeout(30 * 1000).end(function (error, result) { - if (error) return callback(new SysInfoError(SysInfoError.EXTERNAL_ERROR, error.status ? 'Request failed: ' + error.status : 'Network failure')); - if (result.statusCode !== 200) return callback(new SysInfoError(SysInfoError.EXTERNAL_ERROR, util.format('%s %j', result.status, result.body))); + if (error) return callback(new BoxError(BoxError.EXTERNAL_ERROR, error.status ? 'Request failed: ' + error.status : 'Network failure')); + if (result.statusCode !== 200) return callback(new BoxError(BoxError.EXTERNAL_ERROR, util.format('%s %j', result.status, result.body))); var kv = result.text.split('\n').filter(function (line) { return line.startsWith('PUBLIC_IP_ADDRESS='); }); - if (kv.length !== 1) return callback(new SysInfoError(SysInfoError.EXTERNAL_ERROR, util.format('%s %j', result.status, result.body))); + if (kv.length !== 1) return callback(new BoxError(BoxError.EXTERNAL_ERROR, util.format('%s %j', result.status, result.body))); callback(null, kv[0].split('=')[1]); });