Socket
Socket
Sign inDemoInstall

default-gateway

Package Overview
Dependencies
Maintainers
1
Versions
54
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

default-gateway - npm Package Compare versions

Comparing version 2.5.0 to 2.6.0

48

android.js

@@ -11,25 +11,37 @@ "use strict";

const get = family => {
return execa.stdout("ip", args[family]).then(stdout => {
let result;
const parse = stdout => {
let result;
(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)) {
result = {gateway: gateway, interface: (iface ? iface : null)};
return true;
}
});
if (!result) {
throw new Error("Unable to determine default gateway");
(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)) {
result = {gateway: gateway, interface: (iface ? iface : null)};
return true;
}
});
return result;
if (!result) {
throw new Error("Unable to determine default gateway");
}
return result;
};
const promise = family => {
return execa.stdout("ip", args[family]).then(stdout => {
return parse(stdout);
});
};
module.exports.v4 = () => get("v4");
module.exports.v6 = () => get("v6");
const sync = family => {
const result = execa.sync("ip", args[family]);
return parse(result.stdout);
};
module.exports.v4 = () => promise("v4");
module.exports.v6 = () => promise("v6");
module.exports.v4.sync = () => sync("v4");
module.exports.v6.sync = () => sync("v6");

@@ -12,26 +12,38 @@ "use strict";

const get = family => {
return execa.stdout("netstat", args[family]).then(stdout => {
let result;
const parse = (stdout, family) => {
let result;
(stdout || "").trim().split("\n").some(line => {
const results = line.split(/ +/) || [];
const target = results[0];
const gateway = results[1];
const iface = results[family === "v4" ? 5 : 3];
if (dests.indexOf(target) !== -1 && gateway && net.isIP(gateway)) {
result = {gateway: gateway, interface: (iface ? iface : null)};
return true;
}
});
if (!result) {
throw new Error("Unable to determine default gateway");
(stdout || "").trim().split("\n").some(line => {
const results = line.split(/ +/) || [];
const target = results[0];
const gateway = results[1];
const iface = results[family === "v4" ? 5 : 3];
if (dests.indexOf(target) !== -1 && gateway && net.isIP(gateway)) {
result = {gateway: gateway, interface: (iface ? iface : null)};
return true;
}
});
return result;
if (!result) {
throw new Error("Unable to determine default gateway");
}
return result;
};
const promise = family => {
return execa.stdout("netstat", args[family]).then(stdout => {
return parse(stdout, family);
});
};
module.exports.v4 = () => get("v4");
module.exports.v6 = () => get("v6");
const sync = family => {
const result = execa.sync("netstat", args[family]);
return parse(result.stdout, family);
};
module.exports.v4 = () => promise("v4");
module.exports.v6 = () => promise("v6");
module.exports.v4.sync = () => sync("v4");
module.exports.v6.sync = () => sync("v6");

@@ -12,26 +12,38 @@ "use strict";

const get = family => {
return execa.stdout("netstat", args[family]).then(stdout => {
let result;
const parse = stdout => {
let result;
(stdout || "").trim().split("\n").some(line => {
const results = line.split(/ +/) || [];
const target = results[0];
const gateway = results[1];
const iface = results[3];
if (dests.indexOf(target) !== -1 && gateway && net.isIP(gateway)) {
result = {gateway: gateway, interface: (iface ? iface : null)};
return true;
}
});
if (!result) {
throw new Error("Unable to determine default gateway");
(stdout || "").trim().split("\n").some(line => {
const results = line.split(/ +/) || [];
const target = results[0];
const gateway = results[1];
const iface = results[3];
if (dests.indexOf(target) !== -1 && gateway && net.isIP(gateway)) {
result = {gateway: gateway, interface: (iface ? iface : null)};
return true;
}
});
return result;
if (!result) {
throw new Error("Unable to determine default gateway");
}
return result;
};
const promise = family => {
return execa.stdout("netstat", args[family]).then(stdout => {
return parse(stdout);
});
};
module.exports.v4 = () => get("v4");
module.exports.v6 = () => get("v6");
const sync = family => {
const result = execa.sync("netstat", args[family]);
return parse(result.stdout);
};
module.exports.v4 = () => promise("v4");
module.exports.v6 = () => promise("v6");
module.exports.v4.sync = () => sync("v4");
module.exports.v6.sync = () => sync("v6");

@@ -14,7 +14,13 @@ "use strict";

].indexOf(platform) !== -1) {
module.exports.v4 = () => require(`./${platform}`).v4();
module.exports.v6 = () => require(`./${platform}`).v6();
const families = require(`./${platform}`);
module.exports.v4 = () => families.v4();
module.exports.v6 = () => families.v6();
module.exports.v4.sync = () => families.v4.sync();
module.exports.v6.sync = () => families.v6.sync();
} else {
module.exports.v4 = () => { throw new Error(`Unsupported Platform: ${platform}`); };
module.exports.v6 = () => { throw new Error(`Unsupported Platform: ${platform}`); };
const noop = () => { throw new Error(`Unsupported Platform: ${platform}`); };
module.exports.v4 = noop;
module.exports.v6 = noop;
module.exports.v4.sync = noop;
module.exports.v6.sync = noop;
}

@@ -12,36 +12,48 @@ "use strict";

const get = family => {
return execa.stdout("ip", args[family]).then(stdout => {
let result;
const parse = (stdout, family) => {
let result;
(stdout || "").trim().split("\n").some(line => {
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;
(stdout || "").trim().split("\n").some(line => {
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;
}
});
}
});
if (!result) {
throw new Error("Unable to determine default gateway");
addresses.some(function(addr) {
if (addr.family.substring(2) === family && net.isIP(addr.address)) {
result = {gateway: addr.address, interface: (iface ? iface : null)};
return true;
}
});
}
});
return result;
if (!result) {
throw new Error("Unable to determine default gateway");
}
return result;
};
const promise = family => {
return execa.stdout("ip", args[family]).then(stdout => {
return parse(stdout, family);
});
};
module.exports.v4 = () => get("v4");
module.exports.v6 = () => get("v6");
const sync = family => {
const result = execa.sync("ip", args[family]);
return parse(result.stdout, family);
};
module.exports.v4 = () => promise("v4");
module.exports.v6 = () => promise("v6");
module.exports.v4.sync = () => sync("v4");
module.exports.v6.sync = () => sync("v6");

@@ -12,26 +12,38 @@ "use strict";

const get = family => {
return execa.stdout("netstat", args[family]).then(stdout => {
let result;
const parse = stdout => {
let result;
(stdout || "").trim().split("\n").some(line => {
const results = line.split(/ +/) || [];
const target = results[0];
const gateway = results[1];
const iface = results[7];
if (dests.indexOf(target) !== -1 && gateway && net.isIP(gateway)) {
result = {gateway: gateway, interface: (iface ? iface : null)};
return true;
}
});
if (!result) {
throw new Error("Unable to determine default gateway");
(stdout || "").trim().split("\n").some(line => {
const results = line.split(/ +/) || [];
const target = results[0];
const gateway = results[1];
const iface = results[7];
if (dests.indexOf(target) !== -1 && gateway && net.isIP(gateway)) {
result = {gateway: gateway, interface: (iface ? iface : null)};
return true;
}
});
return result;
if (!result) {
throw new Error("Unable to determine default gateway");
}
return result;
};
const promise = family => {
return execa.stdout("netstat", args[family]).then(stdout => {
return parse(stdout);
});
};
module.exports.v4 = () => get("v4");
module.exports.v6 = () => get("v6");
const sync = family => {
const result = execa.sync("netstat", args[family]);
return parse(result.stdout);
};
module.exports.v4 = () => promise("v4");
module.exports.v6 = () => promise("v6");
module.exports.v4.sync = () => sync("v4");
module.exports.v6.sync = () => sync("v6");
{
"name": "default-gateway",
"version": "2.5.0",
"version": "2.6.0",
"description": "Get the default network gateway, cross-platform.",

@@ -15,5 +15,8 @@ "author": "silverwind <me@silverwind.io>",

"dependencies": {
"execa": "^0.7.0",
"execa": "^0.8.0",
"ip-regex": "^2.1.0"
},
"devDependencies": {
"eslint": "^4.7.2"
},
"os": [

@@ -20,0 +23,0 @@ "android",

@@ -20,19 +20,29 @@ # default-gateway

defaultGateway.v4().then(result => {
//=> {gateway: '1.2.3.4', interface: 'en1'}
// result = {gateway: '1.2.3.4', interface: 'en1'}
});
defaultGateway.v6().then(result => {
//=> {gateway: '2001:db8::1', interface: 'en2'}
// result = {gateway: '2001:db8::1', interface: 'en2'}
});
const result = defaultGateway.v4().sync();
// result = {gateway: '1.2.3.4', interface: 'en1'}
const result = defaultGateway.v6().sync();
// result = {gateway: '2001:db8::1', interface: 'en2'}
```
## API
### defaultGateway.v4()
### defaultGateway.v6()
### defaultGateway.v4().sync()
### defaultGateway.v6().sync()
Returns a promise that resolves to a object containing the IPv4 `gateway` and `interface` properties. If it succeeds, `gateway` will always be defined, while `interface` can be `null` if it cannot be determined. Rejects when the gateway cannot be determined.
Returns: `result` *Object*
- `gateway`: The IP address of the default gateway.
- `interface`: The name of the interface. On Windows, this is the network adapter name.
### defaultGateway.v6()
The `.v{4,6}()` functions return a Promise while the `.v{4,6}().sync()` variants will return the result synchronously.
Returns a promise that resolves to a object containing the IPv6 `gateway` and `interface` properties. If it succeeds, `gateway` will always be defined, while `interface` can be `null` if it cannot be determined. Rejects when the gateway cannot be determined.
The `gateway` property will always be defined on success, while `interface` can be `null` if it cannot be determined. All methods reject/throws when the gateway cannot be determined or the `exec` call failed.

@@ -39,0 +49,0 @@ ## License

@@ -12,26 +12,38 @@ "use strict";

const get = family => {
return execa.stdout("netstat", args[family]).then(stdout => {
let result;
const parse = stdout => {
let result;
(stdout || "").trim().split("\n").some(line => {
const results = line.split(/ +/) || [];
const target = results[0];
const gateway = results[1];
const iface = results[5];
if (dests.indexOf(target) !== -1 && gateway && net.isIP(gateway)) {
result = {gateway: gateway, interface: (iface ? iface : null)};
return true;
}
});
if (!result) {
throw new Error("Unable to determine default gateway");
(stdout || "").trim().split("\n").some(line => {
const results = line.split(/ +/) || [];
const target = results[0];
const gateway = results[1];
const iface = results[5];
if (dests.indexOf(target) !== -1 && gateway && net.isIP(gateway)) {
result = {gateway: gateway, interface: (iface ? iface : null)};
return true;
}
});
return result;
if (!result) {
throw new Error("Unable to determine default gateway");
}
return result;
};
const promise = family => {
return execa.stdout("netstat", args[family]).then(stdout => {
return parse(stdout);
});
};
module.exports.v4 = () => get("v4");
module.exports.v6 = () => get("v6");
const sync = family => {
const result = execa.sync("netstat", args[family]);
return parse(result.stdout);
};
module.exports.v4 = () => promise("v4");
module.exports.v6 = () => promise("v6");
module.exports.v4.sync = () => sync("v4");
module.exports.v6.sync = () => sync("v6");

@@ -9,5 +9,34 @@ "use strict";

function wmic(family) {
const parse = (gwTable, ifTable, family) => {
let gateway, gwid, result;
(gwTable || "").trim().split("\n").splice(1).some(line => {
const results = line.trim().split(/} +/) || [];
const gw = results[0];
const id = results[1];
gateway = (ipRegex[family]().exec((gw || "").trim()) || [])[0];
if (gateway) {
gwid = id;
return true;
}
});
(ifTable || "").trim().split("\n").splice(1).some(line => {
const i = line.indexOf(" ");
const id = line.substr(0, i).trim();
const name = line.substr(i + 1).trim();
if (id === gwid) {
result = {gateway: gateway, interface: name ? name : null};
return true;
}
});
if (!result) {
throw new Error("Unable to determine default gateway");
}
return result;
};
const promise = family => {
return Promise.all([

@@ -20,32 +49,17 @@ execa.stdout("wmic", gwArgs),

(gwTable || "").trim().split("\n").splice(1).some(line => {
const results = line.trim().split(/} +/) || [];
const gw = results[0];
const id = results[1];
gateway = (ipRegex[family]().exec((gw || "").trim()) || [])[0];
if (gateway) {
gwid = id;
return true;
}
});
return parse(gwTable, ifTable, family);
});
};
(ifTable || "").trim().split("\n").splice(1).some(line => {
const i = line.indexOf(" ");
const id = line.substr(0, i).trim();
const name = line.substr(i + 1).trim();
if (id === gwid) {
result = {gateway: gateway, interface: name ? name : null};
return true;
}
});
const sync = family => {
const gwTable = execa.sync("wmic", gwArgs);
const ifTable = execa.sync("wmic", ifArgs);
if (!result) {
throw new Error("Unable to determine default gateway");
}
return parse(gwTable, ifTable, family);
};
return result;
});
}
module.exports.v4 = () => promise("v4");
module.exports.v6 = () => promise("v6");
module.exports.v4 = () => wmic("v4");
module.exports.v6 = () => wmic("v6");
module.exports.v4.sync = () => sync("v4");
module.exports.v6.sync = () => sync("v6");
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc