@gguf/claw
Version:
WhatsApp gateway CLI (Baileys web) with Pi RPC agent
42 lines (40 loc) • 1.21 kB
JavaScript
import os from "node:os";
//#region src/infra/tailnet.ts
function isTailnetIPv4(address) {
const parts = address.split(".");
if (parts.length !== 4) return false;
const octets = parts.map((p) => Number.parseInt(p, 10));
if (octets.some((n) => !Number.isFinite(n) || n < 0 || n > 255)) return false;
const [a, b] = octets;
return a === 100 && b >= 64 && b <= 127;
}
function isTailnetIPv6(address) {
return address.trim().toLowerCase().startsWith("fd7a:115c:a1e0:");
}
function listTailnetAddresses() {
const ipv4 = [];
const ipv6 = [];
const ifaces = os.networkInterfaces();
for (const entries of Object.values(ifaces)) {
if (!entries) continue;
for (const e of entries) {
if (!e || e.internal) continue;
const address = e.address?.trim();
if (!address) continue;
if (isTailnetIPv4(address)) ipv4.push(address);
if (isTailnetIPv6(address)) ipv6.push(address);
}
}
return {
ipv4: [...new Set(ipv4)],
ipv6: [...new Set(ipv6)]
};
}
function pickPrimaryTailnetIPv4() {
return listTailnetAddresses().ipv4[0];
}
function pickPrimaryTailnetIPv6() {
return listTailnetAddresses().ipv6[0];
}
//#endregion
export { pickPrimaryTailnetIPv6 as n, pickPrimaryTailnetIPv4 as t };