diff --git a/src/sysinfo.js b/src/sysinfo.js index 66e8a1bd1..ab1efdc68 100644 --- a/src/sysinfo.js +++ b/src/sysinfo.js @@ -10,6 +10,7 @@ var assert = require('assert'), caas = require('./sysinfo/caas.js'), config = require('./config.js'), ec2 = require('./sysinfo/ec2.js'), + eth0 = require('./sysinfo/eth0.js'), util = require('util'); var gCachedIp = null; @@ -43,6 +44,7 @@ function getApi(callback) { case 'caas': return callback(null, caas); case 'digitalocean': return callback(null, caas); case 'ec2': return callback(null, ec2); + case 'eth0': return callback(null, eth0); default: return callback(new Error('Unkown provider ' + config.provider())); } } diff --git a/src/sysinfo/eth0.js b/src/sysinfo/eth0.js new file mode 100644 index 000000000..52b62ff4b --- /dev/null +++ b/src/sysinfo/eth0.js @@ -0,0 +1,21 @@ +'use strict'; + +exports = module.exports = { + getIp: getIp +}; + +var assert = require('assert'), + os = require('os'), + SysInfoError = require('../sysinfo.js').SysInfoError; + +function getIp(callback) { + assert.strictEqual(typeof callback, 'function'); + + try { + var ip = os.networkInterfaces().eth0[0].address; + return callback(null, ip); + } catch (e) + return callback(new SysInfoError(SysInfoError.INTERNAL_ERROR, e)); + } +} +