default-gateway
Advanced tools
Comparing version 2.2.2 to 2.3.0
@@ -17,3 +17,3 @@ "use strict"; | ||
(stdout || "").trim().split("\n").some(line => { | ||
const results = line.split(/ +/) || []; | ||
const results = line.split(/ +/) || []; | ||
const target = results[0]; | ||
@@ -20,0 +20,0 @@ const gateway = results[1]; |
@@ -17,3 +17,3 @@ "use strict"; | ||
(stdout || "").trim().split("\n").some(line => { | ||
const results = line.split(/ +/) || []; | ||
const results = line.split(/ +/) || []; | ||
const target = results[0]; | ||
@@ -20,0 +20,0 @@ const gateway = results[1]; |
20
linux.js
"use strict"; | ||
const net = require("net"); | ||
const os = require("os"); | ||
const execa = require("execa"); | ||
@@ -16,8 +17,19 @@ | ||
(stdout || "").trim().split("\n").some(line => { | ||
const results = /default via (.+?) dev (.+?)( |$)/.exec(line); | ||
const gateway = results[1]; | ||
const iface = results[2]; | ||
if (gateway && net.isIP(gateway)) { | ||
const results = /default( via .+?)?( dev .+?)( |$)/.exec(line); | ||
const gateway = ((results || [])[1] || "").substring(5); | ||
const iface = ((results || [])[2] || "").substring(5); | ||
if (gateway && net.isIP(gateway)) { // default via 1.2.3.4 dev en0 | ||
result = {gateway: gateway, interface: (iface ? iface : null)}; | ||
return true; | ||
} else if (iface && !gateway) { // default via dev en0 | ||
const interfaces = os.networkInterfaces(); | ||
const addresses = interfaces[iface]; | ||
if (!addresses || !addresses.length) return; | ||
addresses.some(function(addr) { | ||
if (addr.family.substring(2) === family && net.isIP(addr.address)) { | ||
result = {gateway: addr.address, interface: (iface ? iface : null)}; | ||
return true; | ||
} | ||
}); | ||
} | ||
@@ -24,0 +36,0 @@ }); |
{ | ||
"name": "default-gateway", | ||
"version": "2.2.2", | ||
"version": "2.3.0", | ||
"description": "Get the default network gateway, cross-platform.", | ||
@@ -5,0 +5,0 @@ "author": "silverwind <me@silverwind.io>", |
9372
172