default-gateway
Advanced tools
Comparing version 5.0.5 to 6.0.0
"use strict"; | ||
const net = require("net"); | ||
const {isIP} = require("net"); | ||
const execa = require("execa"); | ||
@@ -16,3 +16,3 @@ | ||
const [_, gateway, iface] = /default via (.+?) dev (.+?)( |$)/.exec(line) || []; | ||
if (gateway && net.isIP(gateway)) { | ||
if (gateway && isIP(gateway)) { | ||
result = {gateway, interface: (iface ? iface : null)}; | ||
@@ -19,0 +19,0 @@ return true; |
"use strict"; | ||
const net = require("net"); | ||
const os = require("os"); | ||
const {isIP} = require("net"); | ||
const {release} = require("os"); | ||
const execa = require("execa"); | ||
@@ -15,3 +15,3 @@ const dests = ["default", "0.0.0.0", "0.0.0.0/0", "::", "::/0"]; | ||
// previously it was in column 5 | ||
const v4IfaceColumn = parseInt(os.release()) >= 19 ? 3 : 5; | ||
const v4IfaceColumn = parseInt(release()) >= 19 ? 3 : 5; | ||
@@ -26,3 +26,3 @@ const parse = (stdout, family) => { | ||
const iface = results[family === "v4" ? v4IfaceColumn : 3]; | ||
if (dests.includes(target) && gateway && net.isIP(gateway)) { | ||
if (dests.includes(target) && gateway && isIP(gateway)) { | ||
result = {gateway, interface: (iface ? iface : null)}; | ||
@@ -29,0 +29,0 @@ return true; |
"use strict"; | ||
const net = require("net"); | ||
const {isIP} = require("net"); | ||
const execa = require("execa"); | ||
@@ -17,3 +17,3 @@ const dests = ["default", "0.0.0.0", "0.0.0.0/0", "::", "::/0"]; | ||
const [target, gateway, _, iface] = line.split(/ +/) || []; | ||
if (dests.includes(target) && gateway && net.isIP(gateway)) { | ||
if (dests.includes(target) && gateway && isIP(gateway)) { | ||
result = {gateway, interface: (iface ? iface : null)}; | ||
@@ -20,0 +20,0 @@ return true; |
15
index.js
"use strict"; | ||
const os = require("os"); | ||
const platform = os.platform(); | ||
const {platform, type} = require("os"); | ||
if (["aix", "android", "darwin", "freebsd", "linux", "openbsd", "sunos", "win32"].includes(platform)) { | ||
const plat = platform(); | ||
if (["aix", "android", "darwin", "freebsd", "linux", "openbsd", "sunos", "win32"].includes(plat)) { | ||
let file; | ||
if (platform === "aix") { | ||
if (plat === "aix") { | ||
// AIX `netstat` output is compatible with Solaris | ||
file = `${os.type() === "OS400" ? "ibmi" : "sunos"}.js`; | ||
file = `${type() === "OS400" ? "ibmi" : "sunos"}.js`; | ||
} else { | ||
file = `${platform}.js`; | ||
file = `${plat}.js`; | ||
} | ||
@@ -21,3 +22,3 @@ | ||
} else { | ||
const unsupported = () => {throw new Error(`Unsupported Platform: ${platform}`)}; | ||
const unsupported = () => {throw new Error(`Unsupported Platform: ${plat}`)}; | ||
module.exports.v4 = unsupported; | ||
@@ -24,0 +25,0 @@ module.exports.v6 = unsupported; |
10
linux.js
"use strict"; | ||
const net = require("net"); | ||
const os = require("os"); | ||
const {isIP} = require("net"); | ||
const {networkInterfaces} = require("os"); | ||
const execa = require("execa"); | ||
@@ -19,7 +19,7 @@ | ||
const iface = (results[2] || "").substring(5); | ||
if (gateway && net.isIP(gateway)) { // default via 1.2.3.4 dev en0 | ||
if (gateway && isIP(gateway)) { // default via 1.2.3.4 dev en0 | ||
result = {gateway, interface: (iface ? iface : null)}; | ||
return true; | ||
} else if (iface && !gateway) { // default via dev en0 | ||
const interfaces = os.networkInterfaces(); | ||
const interfaces = networkInterfaces(); | ||
const addresses = interfaces[iface]; | ||
@@ -29,3 +29,3 @@ if (!addresses || !addresses.length) return; | ||
addresses.some(addr => { | ||
if (addr.family.substring(2) === family && net.isIP(addr.address)) { | ||
if (addr.family.substring(2) === family && isIP(addr.address)) { | ||
result = {gateway: addr.address, interface: (iface ? iface : null)}; | ||
@@ -32,0 +32,0 @@ return true; |
"use strict"; | ||
const net = require("net"); | ||
const {isIP} = require("net"); | ||
const execa = require("execa"); | ||
@@ -20,3 +20,3 @@ const dests = ["default", "0.0.0.0", "0.0.0.0/0", "::", "::/0"]; | ||
const iface = results[7]; | ||
if (dests.includes(target) && gateway && net.isIP(gateway)) { | ||
if (dests.includes(target) && gateway && isIP(gateway)) { | ||
result = {gateway, interface: (iface ? iface : null)}; | ||
@@ -23,0 +23,0 @@ return true; |
{ | ||
"name": "default-gateway", | ||
"version": "5.0.5", | ||
"version": "6.0.0", | ||
"description": "Get the default network gateway, cross-platform.", | ||
@@ -8,17 +8,9 @@ "author": "silverwind <me@silverwind.io>", | ||
"license": "BSD-2-Clause", | ||
"main": "index.js", | ||
"scripts": { | ||
"test": "eslint *.js && node --pending-deprecation --trace-deprecation --throw-deprecation --trace-warnings test.js" | ||
"test": "make test" | ||
}, | ||
"engines": { | ||
"node": "^8.12.0 || >=9.7.0" | ||
"node": ">= 10" | ||
}, | ||
"dependencies": { | ||
"execa": "^3.3.0" | ||
}, | ||
"devDependencies": { | ||
"eslint": "6.6.0", | ||
"eslint-config-silverwind": "5.0.0", | ||
"updates": "9.0.1", | ||
"ver": "6.0.2" | ||
}, | ||
"files": [ | ||
@@ -35,2 +27,12 @@ "index.js", | ||
], | ||
"dependencies": { | ||
"execa": "^4.0.0" | ||
}, | ||
"devDependencies": { | ||
"eslint": "6.8.0", | ||
"eslint-config-silverwind": "10.0.1", | ||
"jest": "25.1.0", | ||
"updates": "10.2.2", | ||
"versions": "8.2.4" | ||
}, | ||
"keywords": [ | ||
@@ -37,0 +39,0 @@ "default gateway", |
# default-gateway | ||
[![](https://img.shields.io/npm/v/default-gateway.svg?style=flat)](https://www.npmjs.org/package/default-gateway) [![](https://img.shields.io/npm/dm/default-gateway.svg)](https://www.npmjs.org/package/default-gateway) [![](https://api.travis-ci.org/silverwind/default-gateway.svg?style=flat)](https://travis-ci.org/silverwind/default-gateway) | ||
[![](https://img.shields.io/npm/v/default-gateway.svg?style=flat)](https://www.npmjs.org/package/default-gateway) [![](https://img.shields.io/npm/dm/default-gateway.svg)](https://www.npmjs.org/package/default-gateway) | ||
@@ -4,0 +4,0 @@ > Get the default network gateway, cross-platform. |
"use strict"; | ||
const net = require("net"); | ||
const {isIP} = require("net"); | ||
const execa = require("execa"); | ||
@@ -20,3 +20,3 @@ const dests = ["default", "0.0.0.0", "0.0.0.0/0", "::", "::/0"]; | ||
const iface = results[5]; | ||
if (dests.includes(target) && gateway && net.isIP(gateway)) { | ||
if (dests.includes(target) && gateway && isIP(gateway)) { | ||
result = {gateway, interface: (iface ? iface : null)}; | ||
@@ -23,0 +23,0 @@ return true; |
"use strict"; | ||
const {isIP} = require("net"); | ||
const {networkInterfaces} = require("os"); | ||
const execa = require("execa"); | ||
const os = require("os"); | ||
const net = require("net"); | ||
@@ -31,3 +31,3 @@ const gwArgs = "path Win32_NetworkAdapterConfiguration where IPEnabled=true get DefaultIPGateway,GatewayCostMetric,IPConnectionMetric,Index /format:table".split(" "); | ||
for (const [index, gateway] of Object.entries(gateways)) { | ||
if (!gateway || `v${net.isIP(gateway)}` !== family) continue; | ||
if (!gateway || `v${isIP(gateway)}` !== family) continue; | ||
@@ -52,3 +52,3 @@ const metric = parseInt(gatewayCosts[index]) + parseInt(ipMetric); | ||
// https://github.com/silverwind/default-gateway/issues/14 | ||
for (const [osname, addrs] of Object.entries(os.networkInterfaces())) { | ||
for (const [osname, addrs] of Object.entries(networkInterfaces())) { | ||
for (const addr of addrs) { | ||
@@ -55,0 +55,0 @@ if (addr && addr.mac && addr.mac.toLowerCase() === mac) { |
16153
5
+ Addedexeca@4.1.0(transitive)
- Removedexeca@3.4.0(transitive)
- Removedp-finally@2.0.1(transitive)
Updatedexeca@^4.0.0