diff --git a/index.js b/index.js index 399f853..a865134 100644 --- a/index.js +++ b/index.js @@ -1,63 +1,7 @@ -const os = require('os') -const dns = require('dns') -const util = require('util') - -module.exports = { - - /*---------------------------------------------------------------- - * Network tools - ----------------------------------------------------------------*/ - async dn2ip(host) { - // domain name 2 ip - if (typeof host === 'string' && host) { - var ip = await util - .promisify(dns.resolve)(host, 'A') - .catch(function (err) { - mylog.warn('WARNING : host cannot resolve to ip: ' + host) - return null - }) - if (ip && /^\d+\.\d+\.\d+\.\d+$/.test(ip[0])) { - return ip[0] - } - } - return null - }, - isPrivateIp(addr) { - return ( - /^(::f{4}:)?10\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) || - /^(::f{4}:)?192\.168\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) || - /^(::f{4}:)?172\.(1[6-9]|2\d|30|31)\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) || - /^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) || - /^(::f{4}:)?169\.254\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) || - /^f[cd][0-9a-f]{2}:/i.test(addr) || - /^fe80:/i.test(addr) || - /^::1$/.test(addr) || - /^::$/.test(addr) - ) - }, - getMyIp() { - var publicIp = null - var privateIp = null - var self = this - try { - var ifaces = os.networkInterfaces() - Object.keys(ifaces).forEach(function (ifname) { - ifaces[ifname].forEach(function (iface) { - if ('IPv4' === iface.family && iface.internal === false) { - // console.log('ip='+iface.address) - if (self.isPrivateIp(iface.address)) { - privateIp = iface.address - // console.log('privateIp='+privateIp) - } else { - publicIp = iface.address - // console.log('publicIp='+publicIp) - } - } - }) - }) - } catch (e) { - console.log('ERROR in getMyIP(): ' + e.message) - } - return publicIp || privateIp - }, -} +const tool4net = require('./tool4net.js') +const tool4log = require('./tool4log') + +module.exports = { + tool4net, + tool4log +} diff --git a/package.json b/package.json index 2c8c16f..2276031 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "base.nettool", + "name": "base.tool", "version": "1.0.0", "description": "", "main": "index.js", @@ -8,8 +8,11 @@ }, "repository": { "type": "git", - "url": "https://git.faronear.org/npm/base.nettool" + "url": "https://git.faronear.org/npm/base.tool" }, "author": "", - "license": "ISC" + "license": "ISC", + "dependencies": { + "colors": "^1.4.0" + } } diff --git a/tool4log.js b/tool4log.js new file mode 100644 index 0000000..e70dcc2 --- /dev/null +++ b/tool4log.js @@ -0,0 +1,7 @@ +const colors = require('colors') + +module.exports = { + colog(...args) { + console.log(colors.green({time: new Date().toJSON()}), ...args) + } +} diff --git a/tool4net.js b/tool4net.js new file mode 100644 index 0000000..399f853 --- /dev/null +++ b/tool4net.js @@ -0,0 +1,63 @@ +const os = require('os') +const dns = require('dns') +const util = require('util') + +module.exports = { + + /*---------------------------------------------------------------- + * Network tools + ----------------------------------------------------------------*/ + async dn2ip(host) { + // domain name 2 ip + if (typeof host === 'string' && host) { + var ip = await util + .promisify(dns.resolve)(host, 'A') + .catch(function (err) { + mylog.warn('WARNING : host cannot resolve to ip: ' + host) + return null + }) + if (ip && /^\d+\.\d+\.\d+\.\d+$/.test(ip[0])) { + return ip[0] + } + } + return null + }, + isPrivateIp(addr) { + return ( + /^(::f{4}:)?10\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) || + /^(::f{4}:)?192\.168\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) || + /^(::f{4}:)?172\.(1[6-9]|2\d|30|31)\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) || + /^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) || + /^(::f{4}:)?169\.254\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) || + /^f[cd][0-9a-f]{2}:/i.test(addr) || + /^fe80:/i.test(addr) || + /^::1$/.test(addr) || + /^::$/.test(addr) + ) + }, + getMyIp() { + var publicIp = null + var privateIp = null + var self = this + try { + var ifaces = os.networkInterfaces() + Object.keys(ifaces).forEach(function (ifname) { + ifaces[ifname].forEach(function (iface) { + if ('IPv4' === iface.family && iface.internal === false) { + // console.log('ip='+iface.address) + if (self.isPrivateIp(iface.address)) { + privateIp = iface.address + // console.log('privateIp='+privateIp) + } else { + publicIp = iface.address + // console.log('publicIp='+publicIp) + } + } + }) + }) + } catch (e) { + console.log('ERROR in getMyIP(): ' + e.message) + } + return publicIp || privateIp + }, +}