26 lines
839 B
TypeScript
26 lines
839 B
TypeScript
import { pickPrimaryTailnetIPv4 } from "../infra/tailnet.js";
|
|
|
|
export function isLoopbackAddress(ip: string | undefined): boolean {
|
|
if (!ip) return false;
|
|
if (ip === "127.0.0.1") return true;
|
|
if (ip.startsWith("127.")) return true;
|
|
if (ip === "::1") return true;
|
|
if (ip.startsWith("::ffff:127.")) return true;
|
|
return false;
|
|
}
|
|
|
|
export function resolveGatewayBindHost(
|
|
bind: import("../config/config.js").BridgeBindMode | undefined,
|
|
): string | null {
|
|
const mode = bind ?? "loopback";
|
|
if (mode === "loopback") return "127.0.0.1";
|
|
if (mode === "lan") return "0.0.0.0";
|
|
if (mode === "tailnet") return pickPrimaryTailnetIPv4() ?? null;
|
|
if (mode === "auto") return pickPrimaryTailnetIPv4() ?? "0.0.0.0";
|
|
return "127.0.0.1";
|
|
}
|
|
|
|
export function isLoopbackHost(host: string): boolean {
|
|
return isLoopbackAddress(host);
|
|
}
|