website access

This commit is contained in:
2026-07-29 11:38:15 -06:00
parent f2ab7f55f1
commit d703f19ccc
2 changed files with 11 additions and 7 deletions
+7 -7
View File
@@ -52,12 +52,13 @@ function safeFile(requestUrl) {
}
}
// Tailscale and similar VPN tunnels show up as extra "LAN" interfaces but are not
// useful for an in-room demo, so keep them out of the printed URL list.
function isTunnelInterface(interfaceName, address) {
if (/^(utun|tailscale|tun|ppp|ipsec)/i.test(interfaceName)) return true;
// Tailscale advertises the host over its tailnet on a 100.64.0.0/10 address, so
// label that URL clearly for remote (off-LAN) demos over the tunnel.
function interfaceLabel(interfaceName, address) {
const [first, second] = address.split(".").map(Number);
return first === 100 && second >= 64 && second <= 127; // 100.64.0.0/10 (CGNAT/tailnet)
const isTailnet =
/tailscale/i.test(interfaceName) || (first === 100 && second >= 64 && second <= 127);
return isTailnet ? "Tailscale (tunnel)" : `Other devices (${interfaceName})`;
}
function displayUrls(host, port) {
@@ -72,10 +73,9 @@ function displayUrls(host, port) {
for (const [interfaceName, addresses] of Object.entries(networkInterfaces())) {
for (const address of addresses || []) {
if (address.family !== "IPv4" || address.internal || seen.has(address.address)) continue;
if (isTunnelInterface(interfaceName, address.address)) continue;
seen.add(address.address);
entries.push({
label: `Other devices (${interfaceName})`,
label: interfaceLabel(interfaceName, address.address),
url: `http://${address.address}:${port}`,
});
}