ratspeak-website/map.html

163 lines
14 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="theme-color" content="#18171a">
<title>Map — Ratspeak</title>
<meta name="description" content="Explore public Ratspeak network presence, including endpoints, radios, and opt-in nodes on the live map.">
<meta name="base:app_id" content="6a3c6e26bff5f57cb7afde68">
<link rel="canonical" href="https://ratspeak.org/map.html">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="icon" href="/favicon-32x32.png" sizes="32x32" type="image/png">
<link rel="mask-icon" href="/favicon.svg" color="#D2693B">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="application-name" content="Ratspeak">
<meta name="apple-mobile-web-app-title" content="Ratspeak">
<meta name="msapplication-TileColor" content="#18171a">
<meta name="msapplication-TileImage" content="/assets/icons/windows/ratspeak-windows-dark-150.png">
<meta name="color-scheme" content="dark light">
<meta property="og:type" content="website">
<meta property="og:locale" content="en_US">
<meta property="og:site_name" content="Ratspeak">
<meta property="og:title" content="Map — Ratspeak">
<meta property="og:description" content="Explore public Ratspeak network presence, including endpoints, radios, and opt-in nodes on the live map.">
<meta property="og:url" content="https://ratspeak.org/map.html">
<meta property="og:image" content="https://ratspeak.org/assets/seo/og-map.png">
<meta property="og:image:secure_url" content="https://ratspeak.org/assets/seo/og-map.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="Live Ratspeak network map with current node locations, updated daily.">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@ratspeakorg">
<meta name="twitter:title" content="Map — Ratspeak">
<meta name="twitter:description" content="Explore public Ratspeak network presence, including endpoints, radios, and opt-in nodes on the live map.">
<meta name="twitter:image" content="https://ratspeak.org/assets/seo/og-map.png">
<meta name="twitter:image:alt" content="Live Ratspeak network map with current node locations, updated daily.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preconnect" href="https://unpkg.com">
<link rel="preconnect" href="https://basemaps.cartocdn.com">
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&family=Familjen+Grotesk:wght@400;500;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css">
<link rel="stylesheet" href="assets/map.css?v=map-11">
<script>!function(){var t=localStorage.getItem('ratspeak-theme')||'dark';document.documentElement.setAttribute('data-theme',t);var m=document.querySelector('meta[name="theme-color"]');if(m)m.setAttribute('content',t==='dark'?'#18171a':'#FAF7F3')}()</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "Map \u2014 Ratspeak",
"url": "https://ratspeak.org/map.html",
"description": "Explore public Ratspeak network presence, including endpoints, radios, and opt-in nodes on the live map.",
"isPartOf": {
"@type": "WebSite",
"name": "Ratspeak",
"url": "https://ratspeak.org"
}
}
</script>
</head>
<body>
<nav class="navbar" id="navbar">
<div class="navbar-left">
<a href="index.html">
<svg class="navbar-logo" viewBox="243 243 282 282" fill="currentColor" aria-hidden="true">
<path d="M327.97,501.16C314.61,508.03 301.57,514.72 288.56,521.48C283.91,523.91 279.2,524.61 275.05,520.98C271.05,517.49 271.26,512.87 272.63,508.05C275.23,498.93 277.46,489.7 280.08,480.58C281.03,477.27 280.4,475.51 277.14,473.92C255.84,463.53 245.61,446.29 245.66,422.66C245.75,381.16 245.55,339.66 245.75,298.16C245.86,275.62 256.63,259.57 276.93,249.98C283.68,246.79 291.07,246.01 298.4,246C355.74,245.88 413.07,245.83 470.4,245.95C495.22,246.01 516.64,265.69 519.52,290.03C520.6,299.2 520.12,308.32 520.21,317.46C520.37,333.46 520.29,349.46 520.2,365.46C520.17,371.38 518.89,372.03 513.77,369.13C498.9,360.71 498.91,360.71 498.9,343.65C498.88,328.81 498.92,313.98 498.81,299.15C498.66,279.74 486.18,267.28 466.77,267.26C410.94,267.23 355.11,267.23 299.27,267.32C279.54,267.35 267.32,279.36 267.23,299.05C267.05,340.71 267.04,382.38 267.09,424.04C267.11,441.62 277.67,453.85 295.43,456.58C310.83,458.95 307.84,458.98 304.51,471.32C303.3,475.82 302.05,480.31 300.83,484.81C300.35,486.56 299.66,488.32 300.92,490.33C304.48,490.2 307.24,487.87 310.31,486.46C314.99,484.3 319.61,481.95 324.04,479.31C328.78,476.49 333.17,476.59 338.23,478.73C355.38,485.99 373.44,488.84 391.95,487.72C430.98,485.37 461.99,468.13 484.6,436.22C489.79,428.9 493.71,420.74 496.43,412.08C497.17,409.7 496.94,408 494.74,406.52C489.6,403.07 487.33,398.05 487.7,391.96C487.91,388.37 486.58,386.13 483.49,384.24C461.58,370.79 438.6,360.13 412.77,356.87C403.65,355.71 394.49,355.67 385.35,356.73C376.09,357.8 372.64,358.02 369.74,347.74C368.12,341.98 365.71,336.47 362.24,331.47C356.28,322.9 346.68,319.02 337.45,321.63C328.92,324.05 321.83,333.47 321.32,343.14C320.63,356 327.03,371.92 346.66,374.88C350.07,375.39 352.59,376.98 353.16,380.74C353.7,384.21 352.02,386.53 349.33,388.25C347.4,389.48 345.13,389.39 343,389.01C325.7,385.88 313.84,376.01 308.73,359.24C303.68,342.67 306.62,327.49 319.94,315.42C336.41,300.5 361.24,303.86 373.4,322.51C376.14,326.7 378.7,331.06 380.19,335.83C381.41,339.73 383.56,341.03 387.54,340.77C406.5,339.53 425.15,341.26 443.29,347.18C469.21,355.64 492.63,368.82 514.47,384.97C521.5,390.18 521.02,397.62 519.75,405.01C515.1,432.25 501.28,454.4 481.02,472.62C460.48,491.09 436.54,502.92 409.2,507.52C385.77,511.46 362.77,509.7 340.18,502.3C336.39,501.06 332.58,498.31 327.97,501.16z"/>
<path d="M414.19,335.38C405.75,335.93 397.65,334.86 389.54,335.84C387,336.15 385.78,334.06 384.8,332.07C380.73,323.83 376.21,315.95 368.77,310.17C366.48,308.38 367.23,307 369.43,305.62C379.53,299.3 389.62,299.22 399.19,306.49C408.52,313.58 414.08,323.09 414.19,335.38z"/>
<path d="M417.09,390.21C410.66,388.78 407.34,384.6 408.1,379.44C408.81,374.6 413.31,370.91 418.31,371.05C423.12,371.19 426.94,375.02 427.27,380C427.63,385.61 424.18,389.22 417.09,390.21z"/>
<path d="M430.83,418.71C429.47,419.23 428.59,420.25 427.03,419.59C426.81,417.6 428.52,416.83 429.77,416.07C441.62,408.88 453.85,402.56 467.79,400.42C469.45,400.16 471.08,399.82 472.69,400.53C474.42,401.28 475.23,402.66 475.09,404.49C474.92,406.75 473.27,407.6 471.34,407.79C465.71,408.35 460.12,409.05 454.59,410.3C446.44,412.13 438.57,414.68 430.83,418.71z"/>
<path d="M448.63,432.62C455.17,424.82 461.54,417.3 470.21,412.35C473.17,410.66 477.33,407.48 479.7,412.18C482.09,416.9 476.91,417.67 473.97,418.99C464.9,423.07 457.39,429.35 449.85,435.63C448.67,436.61 447.95,438.42 445.79,438.04C445.62,435.72 447.39,434.49 448.63,432.62z"/>
</svg>
<span class="navbar-title">Ratspeak</span>
</a>
</div>
<div class="navbar-center">
<a href="index.html">Home</a>
<a href="map.html" class="nav-active">Map</a>
<a href="https://docs.ratspeak.org/">Docs</a>
<a href="download.html">Download</a>
</div>
<div class="navbar-right">
<button class="navbar-icon-btn" id="themeToggle" type="button" aria-label="Toggle theme">
<svg class="theme-icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg>
<svg class="theme-icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg>
</button>
<a href="https://github.com/ratspeak" class="navbar-icon-btn navbar-gh" target="_blank" rel="noopener noreferrer" aria-label="GitHub">
<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
</a>
<a href="poll.html" class="navbar-icon-btn navbar-poll" aria-label="Community poll" title="Community poll">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="7" r="3.2"/><path d="M6.5 20a5.5 5.5 0 0 1 11 0"/><circle cx="5.5" cy="10" r="2.4"/><path d="M2 20a4.5 4.5 0 0 1 4.5-4.5"/><circle cx="18.5" cy="10" r="2.4"/><path d="M22 20a4.5 4.5 0 0 0-4.5-4.5"/></svg>
</a>
<button class="navbar-icon-btn navbar-hamburger" id="navHamburger" type="button" aria-label="Menu" aria-expanded="false" aria-controls="navMobileMenu">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><line x1="4" y1="6" x2="20" y2="6"/><line x1="4" y1="12" x2="20" y2="12"/><line x1="4" y1="18" x2="20" y2="18"/></svg>
</button>
</div>
</nav>
<div class="navbar-menu" id="navMobileMenu">
<a href="index.html">Home</a>
<a href="map.html" class="menu-active">Map</a>
<a href="https://docs.ratspeak.org/">Docs</a>
<a href="download.html">Download</a>
<a href="poll.html">Community Poll</a>
<a href="https://github.com/ratspeak" target="_blank" rel="noopener noreferrer">GitHub</a>
</div>
<main class="map-app" id="mapApp" aria-label="Ratspeak Map">
<div class="map-canvas" id="map" aria-hidden="true"></div>
<div class="map-fallback" id="mapFallback" hidden>Map tiles are unavailable in this browser session.</div>
<div class="map-left-stack" role="group" aria-label="Map controls">
<aside class="map-rail" id="mapMenu" aria-label="Map filters">
<button class="map-menu-toggle" id="mapMenuToggle" type="button" aria-expanded="true" aria-controls="mapMenuBody">
<span class="map-menu-title">Filter</span>
<svg class="map-menu-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="m6 15 6-6 6 6"/>
</svg>
</button>
<section class="rail-controls" id="mapMenuBody" aria-label="Map filters">
<label class="search-box">
<span hidden>Search nodes</span>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.3-4.3"/></svg>
<input class="search-input" id="nodeSearch" type="search" autocomplete="off" placeholder="Search...">
</label>
<div class="filter-row">
<label class="filter-field">
<span class="filter-label">Type</span>
<span class="select-wrap">
<select class="filter-select" id="kindFilter">
<option value="all">All</option>
<option value="server-ipv4">IPv4</option>
<option value="server-ipv6">IPv6</option>
<option value="client-auto">Radio</option>
<option value="i2p">I2P</option>
<option value="yggdrasil">Yggdrasil</option>
<option value="client-manual">Manual</option>
</select>
</span>
</label>
<label class="filter-field">
<span class="filter-label">Freshness</span>
<span class="select-wrap">
<select class="filter-select" id="statusFilter">
<option value="all">All</option>
<option value="available">Seen</option>
<option value="unknown">Unknown</option>
<option value="stale">Stale</option>
</select>
</span>
</label>
</div>
</section>
</aside>
</div>
<section class="node-detail" id="nodeDetail" aria-live="polite" aria-label="Selected node details" hidden></section>
</main>
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<script type="module" src="assets/map.js?v=map-12"></script>
<script defer src="/_vercel/insights/script.js"></script>
</body>
</html>