120 lines
3.3 KiB
JavaScript
120 lines
3.3 KiB
JavaScript
#!/usr/bin/env node
|
|
var e = require("./chunks/index-chunk.js");
|
|
|
|
!function cli() {
|
|
var r = "default";
|
|
e: for (var a = 1; a < process.argv.length; a++) {
|
|
var o = process.argv[a].trim().toLowerCase();
|
|
switch (o) {
|
|
case "-h":
|
|
case "--help":
|
|
r = "help";
|
|
break e;
|
|
|
|
case "-d":
|
|
case "--dhcp":
|
|
r = "dhcp";
|
|
break;
|
|
|
|
case "-p":
|
|
case "--probe":
|
|
r = "probe";
|
|
break;
|
|
|
|
case "-f":
|
|
case "--fallback":
|
|
r = "fallback";
|
|
break;
|
|
|
|
default:
|
|
if (o.startsWith("-")) {
|
|
throw new TypeError(`Invalid flag: ${o}`);
|
|
}
|
|
}
|
|
}
|
|
switch (r) {
|
|
case "help":
|
|
return function help() {
|
|
var e = [ "Discover the machine's default gateway and local network IP (test utility)", "", "Usage", " $ lan-network", " $ lan-network --default", "", "Modes", " --probe Discover gateway via UDP4 socket to publicly routed address", " --dhcp Discover gateway via DHCPv4 discover broadcast", " --fallback Return highest-priority IPv4 network interface assignment", " --default Try the three above modes in order", " --help Print help output" ].join("\n");
|
|
console.log(e);
|
|
}();
|
|
|
|
case "dhcp":
|
|
return async function dhcp() {
|
|
var r = e.interfaceAssignments();
|
|
if (!r.length) {
|
|
console.error("No available network interface assignments");
|
|
process.exit(1);
|
|
}
|
|
var a = await Promise.allSettled(r.map((r => e.dhcpDiscover(r))));
|
|
var o = null;
|
|
for (var s of a) {
|
|
if ("fulfilled" === s.status && s.value) {
|
|
if (o = e.matchAssignment(r, s.value)) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (o && o !== e.DEFAULT_ASSIGNMENT) {
|
|
console.log(JSON.stringify(o, null, 2));
|
|
process.exit(0);
|
|
} else {
|
|
console.error("No DHCP router was discoverable");
|
|
process.exit(1);
|
|
}
|
|
}();
|
|
|
|
case "probe":
|
|
return async function probe() {
|
|
var r = e.interfaceAssignments();
|
|
if (!r.length) {
|
|
console.error("No available network interface assignments");
|
|
process.exit(1);
|
|
}
|
|
try {
|
|
var a = await e.probeDefaultRoute();
|
|
var o = e.matchAssignment(r, a);
|
|
if (o && o !== e.DEFAULT_ASSIGNMENT) {
|
|
console.log(JSON.stringify(o, null, 2));
|
|
process.exit(0);
|
|
} else {
|
|
console.error("No default gateway or route");
|
|
process.exit(1);
|
|
}
|
|
} catch (e) {
|
|
console.error("No default gateway or route");
|
|
console.error(e);
|
|
process.exit(1);
|
|
}
|
|
}();
|
|
|
|
case "fallback":
|
|
return async function fallback() {
|
|
var r = e.interfaceAssignments();
|
|
if (!r.length) {
|
|
console.error("No available network interface assignments");
|
|
process.exit(1);
|
|
}
|
|
var a = {
|
|
...r[0],
|
|
gateway: null
|
|
};
|
|
console.log(JSON.stringify(a, null, 2));
|
|
process.exit(0);
|
|
}();
|
|
|
|
case "default":
|
|
return async function main() {
|
|
var r = await e.lanNetwork();
|
|
if (r !== e.DEFAULT_ASSIGNMENT) {
|
|
console.log(JSON.stringify(r, null, 2));
|
|
process.exit(0);
|
|
} else {
|
|
console.error("No default gateway, route, or DHCP router");
|
|
process.exit(1);
|
|
}
|
|
}();
|
|
}
|
|
}();
|
|
//# sourceMappingURL=lan-network-cli.js.map
|