Files
cloudron-box/src/sysinfo.js
T
2019-10-29 16:12:58 -07:00

44 lines
1.2 KiB
JavaScript

'use strict';
exports = module.exports = {
getServerIp: getServerIp,
hasIPv6: hasIPv6
};
var assert = require('assert'),
fs = require('fs'),
settings = require('./settings.js');
function api(provider) {
assert.strictEqual(typeof provider, 'string');
switch (provider) {
case 'ec2':
case 'lightsail':
case 'ami':
return require('./sysinfo/ec2.js');
case 'scaleway': return require('./sysinfo/scaleway.js');
case 'fixed': return require('./sysinfo/fixed.js');
case 'network-interface': return require('./sysinfo/network-interface.js');
default: return require('./sysinfo/generic.js');
}
}
function getServerIp(callback) {
assert.strictEqual(typeof callback, 'function');
settings.getSysinfoConfig(function (error, config) {
if (error) return callback(error);
api(config.provider).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;
}