diff --git a/index.js b/index.js index a865134..399f853 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,63 @@ -const tool4net = require('./tool4net.js') -const tool4log = require('./tool4log') - -module.exports = { - tool4net, - tool4log -} +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 + }, +} diff --git a/package.json b/package.json index 2276031..508fc4b 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,9 @@ { - "name": "base.tool", + "name": "basend-netinfo", "version": "1.0.0", "description": "", "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "https://git.faronear.org/npm/base.tool" - }, "author": "", "license": "ISC", - "dependencies": { - "colors": "^1.4.0" - } + "dependencies": {} } diff --git a/tool4log.js b/tool4log.js deleted file mode 100644 index d378029..0000000 --- a/tool4log.js +++ /dev/null @@ -1,41 +0,0 @@ -const colors = require('colors') - -// HBuilder 内置环境的 console 不支持颜色。为了检查是否支持颜色,可测试 uniCloud 是否存在(不存在说明在自己的server环境里),或 require('supports-color'),相应的返回不同的 ccXXX 函数。 - -module.exports = typeof uniCloud === 'undefined' ? { - cclog(...args) { - console.log({timeiso: new Date().toJSON()}, ...args) - }, - ccinfo(...args) { - console.info({timeiso: new Date().toJSON()}, ...args) - }, - ccerror(...args) { // console.error will appear in pm2's error log - console.error({timeiso: new Date().toJSON()}, ...args) - }, - ccwarn(...args) { // console.warn will appear in pm2's error log - console.warn({timeiso: new Date().toJSON()}, ...args) - }, - ccdebug(...args) { - if ('development'===process.env.NODE_ENV) { // 在server的测试环境下. 注意在 uniCloud 环境下,`process.env.NODE_ENV` 不存在. 如要应用本方法,需要手动设置 `process.env.NODE_ENV` - console.log({timeiso: new Date().toJSON()}, ...args) - } - } -} : { - cclog(...args) { - console.log(colors.blue({timeiso: new Date().toJSON()}), ...args) - }, - ccinfo(...args) { - console.info(colors.green({timeiso: new Date().toJSON()}), ...args) - }, - ccerror(...args) { // console.error will appear in pm2's error log - console.error(colors.red({timeiso: new Date().toJSON()}), ...args) - }, - ccwarn(...args) { // console.warn will appear in pm2's error log - console.warn(colors.yellow({timeiso: new Date().toJSON()}), ...args) - }, - ccdebug(...args) { - if ('development'===process.env.NODE_ENV) { // 在server的测试环境下. 注意在 uniCloud 环境下,`process.env.NODE_ENV` 不存在. 如要应用本方法,需要手动设置 `process.env.NODE_ENV` - console.log(colors.rainbow({timeiso: new Date().toJSON()}), ...args) - } - } -} diff --git a/tool4net.js b/tool4net.js deleted file mode 100644 index 399f853..0000000 --- a/tool4net.js +++ /dev/null @@ -1,63 +0,0 @@ -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 - }, -}