%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
"use strict"; const execa = require("execa"); const ipRegex = require("ip-regex"); const gwArgs = "path Win32_NetworkAdapterConfiguration where IPEnabled=true get DefaultIPGateway,Index /format:table".split(" "); const ifArgs = "path Win32_NetworkAdapter get Index,NetConnectionID /format:table".split(" "); 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, interface: name ? name : null}; return true; } }); if (!result) { throw new Error("Unable to determine default gateway"); } return result; }; const spawnOpts = { windowsHide: true, }; const promise = family => { return Promise.all([ execa.stdout("wmic", gwArgs, spawnOpts), execa.stdout("wmic", ifArgs, spawnOpts), ]).then(results => { const gwTable = results[0]; const ifTable = results[1]; return parse(gwTable, ifTable, family); }); }; const sync = family => { const gwTable = execa.sync("wmic", gwArgs, spawnOpts).stdout; const ifTable = execa.sync("wmic", ifArgs, spawnOpts).stdout; return parse(gwTable, ifTable, family); }; module.exports.v4 = () => promise("v4"); module.exports.v6 = () => promise("v6"); module.exports.v4.sync = () => sync("v4"); module.exports.v6.sync = () => sync("v6");