UNPKG

pi-ip

Version:

Global nodejs module that upon boot saves the Pi's IP Address to Firebase, to make it easy to find.

57 lines (48 loc) 1.39 kB
var os = require("os"); var dns = require('dns'); var Promise = require("bluebird"); function NetworkInterfaces(config) { config = config || {}; function readInterfaces() { return new Promise(function (resolve, reject) { var allInterfaces = os.networkInterfaces(); var interfacesWithIpAddress = {}; for (var iface in allInterfaces) { if(allInterfaces.hasOwnProperty(iface)) { allInterfaces[iface].forEach(function(address) { if (address.family === 'IPv4' && !address.internal) { interfacesWithIpAddress[iface] = address.address; } }) } } resolve(interfacesWithIpAddress); }); } function canReachInternet(host) { return new Promise(function (resolve, reject) { if(!host) { host = config.host || 'www.google.com'; } dns.resolve(host, function(err) { resolve(!err); }); }); } function discover(){ return new Promise(function (resolve, reject) { Promise.join(canReachInternet(), readInterfaces(), function(isConnected, readInterfaces) { var result = { connected: isConnected, interfaces: readInterfaces }; resolve(result); }); }); } return { canReachInternet: canReachInternet, discover: discover } } module.exports = NetworkInterfaces;