refactor(infra): share isTailnetIPv4 helper
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { runCommandWithTimeout } from "../process/exec.js";
|
||||
import { isTailnetIPv4 } from "./tailnet.js";
|
||||
import { resolveWideAreaDiscoveryDomain } from "./widearea-dns.js";
|
||||
|
||||
export type GatewayBonjourBeacon = {
|
||||
@@ -70,20 +71,6 @@ function decodeDnsSdEscapes(value: string): string {
|
||||
return Buffer.from(bytes).toString("utf8");
|
||||
}
|
||||
|
||||
function isTailnetIPv4(address: string): boolean {
|
||||
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;
|
||||
}
|
||||
// Tailscale IPv4 range: 100.64.0.0/10
|
||||
const [a, b] = octets;
|
||||
return a === 100 && b >= 64 && b <= 127;
|
||||
}
|
||||
|
||||
function parseDigShortLines(stdout: string): string[] {
|
||||
return stdout
|
||||
.split("\n")
|
||||
|
||||
@@ -5,7 +5,7 @@ export type TailnetAddresses = {
|
||||
ipv6: string[];
|
||||
};
|
||||
|
||||
function isTailnetIPv4(address: string): boolean {
|
||||
export function isTailnetIPv4(address: string): boolean {
|
||||
const parts = address.split(".");
|
||||
if (parts.length !== 4) {
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user