120 lines
3.3 KiB
JavaScript
Executable File
120 lines
3.3 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
var e = require("./chunks/index-chunk.js");
|
|
|
|
!function cli() {
|
|
let t = "default";
|
|
e: for (let e = 1; e < process.argv.length; e++) {
|
|
const o = process.argv[e].trim().toLowerCase();
|
|
switch (o) {
|
|
case "-h":
|
|
case "--help":
|
|
t = "help";
|
|
break e;
|
|
|
|
case "-d":
|
|
case "--dhcp":
|
|
t = "dhcp";
|
|
break;
|
|
|
|
case "-p":
|
|
case "--probe":
|
|
t = "probe";
|
|
break;
|
|
|
|
case "-f":
|
|
case "--fallback":
|
|
t = "fallback";
|
|
break;
|
|
|
|
default:
|
|
if (o.startsWith("-")) {
|
|
throw new TypeError(`Invalid flag: ${o}`);
|
|
}
|
|
}
|
|
}
|
|
switch (t) {
|
|
case "help":
|
|
return function help() {
|
|
const 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() {
|
|
const t = e.interfaceAssignments();
|
|
if (!t.length) {
|
|
console.error("No available network interface assignments");
|
|
process.exit(1);
|
|
}
|
|
const o = await Promise.allSettled(t.map((t => e.dhcpDiscover(t))));
|
|
let s = null;
|
|
for (const r of o) {
|
|
if ("fulfilled" === r.status && r.value) {
|
|
if (s = e.matchAssignment(t, r.value)) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (s && s !== e.DEFAULT_ASSIGNMENT) {
|
|
console.log(JSON.stringify(s, null, 2));
|
|
process.exit(0);
|
|
} else {
|
|
console.error("No DHCP router was discoverable");
|
|
process.exit(1);
|
|
}
|
|
}();
|
|
|
|
case "probe":
|
|
return async function probe() {
|
|
const t = e.interfaceAssignments();
|
|
if (!t.length) {
|
|
console.error("No available network interface assignments");
|
|
process.exit(1);
|
|
}
|
|
try {
|
|
const o = await e.probeDefaultRoute();
|
|
const s = e.matchAssignment(t, o);
|
|
if (s && s !== e.DEFAULT_ASSIGNMENT) {
|
|
console.log(JSON.stringify(s, 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() {
|
|
const t = e.interfaceAssignments();
|
|
if (!t.length) {
|
|
console.error("No available network interface assignments");
|
|
process.exit(1);
|
|
}
|
|
const o = {
|
|
...t[0],
|
|
gateway: null
|
|
};
|
|
console.log(JSON.stringify(o, null, 2));
|
|
process.exit(0);
|
|
}();
|
|
|
|
case "default":
|
|
(async function main() {
|
|
const t = await e.lanNetwork();
|
|
if (t !== e.DEFAULT_ASSIGNMENT) {
|
|
console.log(JSON.stringify(t, null, 2));
|
|
process.exit(0);
|
|
} else {
|
|
console.error("No default gateway, route, or DHCP router");
|
|
process.exit(1);
|
|
}
|
|
})();
|
|
}
|
|
}();
|
|
//# sourceMappingURL=lan-network-cli.js.map
|