'use strict'; exports = module.exports = { getServerIp: getServerIp, hasIPv6: hasIPv6 }; var assert = require('assert'), ec2 = require('./sysinfo/ec2.js'), fs = require('fs'), generic = require('./sysinfo/generic.js'), scaleway = require('./sysinfo/scaleway.js'), settings = require('./settings.js'); function getApi(config, callback) { assert.strictEqual(typeof config, 'object'); assert.strictEqual(typeof callback, 'function'); const provider = config.provider || 'generic'; switch (provider) { case 'ec2': return callback(null, ec2); case 'lightsail': return callback(null, ec2); case 'ami': return callback(null, ec2); case 'scaleway': return callback(null, scaleway); default: return callback(null, generic); } } function getServerIp(callback) { assert.strictEqual(typeof callback, 'function'); settings.getSysinfoConfig(function (error, config) { if (error) return callback(error); getApi(config, function (error, api) { if (error) return callback(error); api.getServerIp(config, callback); }); }); } function hasIPv6() { const IPV6_PROC_FILE = '/proc/net/if_inet6'; // on contabo, /proc/net/if_inet6 is an empty file. so just exists is not enough return fs.existsSync(IPV6_PROC_FILE) && fs.readFileSync(IPV6_PROC_FILE, 'utf8').trim().length !== 0; }