Localtunnel hosting + admin panel + AppData db

- Default hosting mode is now Localtunnel — public *.loca.lt URL,
  no account, auto-fetched on first run. Replaces the prototyped
  Tailscale mode.
- Tailscale code purged from launcher + CLI; docs swapped to
  Localtunnel throughout (easy-setup, joining-a-server, server-cli,
  troubleshooting, faq, READMEs).
- Launcher sidebar gains an Open admin panel button — opens
  https://admin.<apex> in the browser once the server is live.
- SQLite db moves to %APPDATA%\DorkNet\dorknet.db (server reads
  Database__SqlitePath env var, launcher passes it). Existing dbs
  under <serverDir>\data\ are migrated on first run.
- CLI Program.cs: --mode default flips from tailscale to localtunnel;
  csproj links in LocaltunnelTunnel + LocaltunnelInstaller.
- New Backend files: LauncherNameServer, LocaltunnelInstaller,
  LocaltunnelTunnel, SingleOriginServiceMap.
- .gitignore: exclude installer/out/.
This commit is contained in:
Alexa
2026-05-28 01:39:38 +03:00
parent 7852b410ee
commit f5ad4b59ef
30 changed files with 942 additions and 184 deletions
+5 -3
View File
@@ -12,8 +12,9 @@ This README is for **developers** of the launcher. End-users see
- **Host mode:** fetches the matching server binary from GitHub
Releases for the user's picked Rec Room version, runs it as a
subprocess, opens a Cloudflare quick-tunnel, patches the user's
Rec Room install, hands the user a shareable join code.
subprocess and exposes it through a Localtunnel HTTPS URL (or
binds on the LAN if the user picked that mode), patches the
user's Rec Room install, hands the user a shareable join code.
- **Join mode:** parses the join code, fetches the matching client
patcher from GitHub Releases, patches the user's Rec Room install
to point at the host.
@@ -34,7 +35,8 @@ launcher/
├── ReleaseDownloader.cs GitHub Releases API + artifact unpack
├── ServerProcess.cs Spawns the downloaded server binary
├── ClientPatcher.cs Invokes install-plugin.ps1 from the unpacked patcher
├── Tunnel.cs Wraps `cloudflared tunnel --url …`
├── LocaltunnelInstaller.cs Downloads the Localtunnel .NET client
├── LocaltunnelTunnel.cs Spawns the tunnel + parses the *.loca.lt URL
├── RecRoomPicker.cs Microsoft.Win32.OpenFolderDialog
└── JoinCode.cs base64url-encoded {host, version, photonAppId, …}
```