Skip to content

v2.0.0 - Modern Dynamic Tunnel & DNS Gateway

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Sep 20:36
· 8 commits to main since this release

Overview

TunnelKeeper v2.0.0 is a major milestone release that transforms the project from a set of command-line scripts into an automated, production-grade Minecraft tunneling gateway with a modern graphical dashboard, automated Windows installers, multi-provider DNS support, and a fully de-personalized architecture.

This release introduces native Windows WPF GUI integration, system tray minimization, dual DNS provider support (Hostinger and Cloudflare), strict configuration enforcement, zero-downtime hot-swap automation, and automated GitHub Actions CI/CD workflows for building Windows installers and release bundles.


What Is New in v2.0.0

1. Modern Native Windows WPF Dashboard

  • Dedicated Graphical Interface: Run TunnelKeeper.exe for a full-featured, dark-themed dashboard built entirely on native Windows WPF with no external dependencies (no Electron, Python, or Node.js required).
  • Zero-Console Flash: Compiled using a custom C# win32 application wrapper to guarantee zero console popups or terminal flashes on launch.
  • Interactive Settings Tab: Configure DNS provider tokens, domain names, SRV records, local Minecraft port, hot-swap intervals, DNS TTL, and log retention directly within the interface without manually editing files.
  • Password Masking & Visibility Toggle: Mask and reveal Hostinger or Cloudflare API tokens securely.
  • Public Address Display & 1-Click Copy: View your player-facing address (e.g. play.yourdomain.com or root domain) and copy it directly to your clipboard with a single click.
  • Live Log Viewer: Real-time embedded log streaming with auto-scroll toggles, buffer clearing, and direct shortcuts to open the active log file or logs folder.
  • System Tray Integration: Minimize TunnelKeeper to the Windows notification tray next to the taskbar clock with a right-click context menu (Open, Start, Stop, Exit) to maintain 24/7 server uptime without taskbar clutter.

2. Multi-Provider DNS Dispatcher (Hostinger & Cloudflare)

  • Cloudflare API Integration: Full support for Cloudflare DNS via scoped API tokens (Zone.DNS permissions), including automatic zone ID discovery, SRV record lookup, priority/weight configuration, and atomic DNS updates.
  • Hostinger API Integration: Native support for Hostinger REST API SRV record management with automatic target host formatting and verification.
  • Dynamic Provider Switching: Seamlessly toggle between Hostinger and Cloudflare via radio buttons in the GUI or via the DnsProvider setting in .env.
  • Sensitive Credential Redaction: All logs and console outputs automatically redact Hostinger and Cloudflare tokens to prevent accidental exposure.

3. Complete De-Personalization & Configuration Enforcement

  • Generic Configuration Architecture: All personal domains, ports, and prefixes (therealneighbors.online, port 25566, TRN_) have been completely removed from public repository files.
  • Pre-Flight Validation Engine: Both the GUI and the background autostart daemon enforce that users specify their own registered domain name before launching. Placeholder domains (example.com, yourdomain.com) and invalid ports or intervals are rejected with clear, descriptive guidance.
  • Seven Configurable Parameters: Full support and validation for:
    • RootDomain: Your registered domain zone.
    • SrvRecordName: The SRV record label (e.g. _minecraft._tcp.play or _minecraft._tcp).
    • LocalPort: Local Minecraft server port (standard Java default 25565).
    • Priority: SRV record priority (0 - 65535, default: 0).
    • Weight: SRV record weight for balancing (0 - 65535, default: 5).
    • TTL: DNS record Time-To-Live in seconds (default: 60).
    • HotSwapMinute: Elapsed minutes before pre-starting a replacement tunnel (default: 55).
  • Dynamic Player Address Helper: Automatically determines whether players connect to play.yourdomain.com, a custom subdomain, or the root domain based on the configured SRV label.

4. Process Lifecycle & System Safety Guard

  • Windows Named Mutex (Global\TunnelKeeper_Gateway): Guarantees that only a single instance of the gateway daemon can execute at any time. Handles process crashes and abandoned mutexes cleanly.
  • Windows Task Scheduler Coexistence: If launched while the background Task Scheduler task is active, TunnelKeeper detects the running service, displays an informational status card, and exits cleanly without throwing errors.
  • Interactive Takeover (-Force): Passing -Force automatically stops background scheduled tasks, terminates orphan Pinggy SSH processes, and runs the daemon interactively in the current console.
  • Orphan Process Cleanup: Automatically cleans up lingering child SSH tunnels if the terminal or GUI is closed abruptly.

5. Automated Windows Installers & CI/CD

  • Inno Setup Wizard (TunnelKeeper-Setup.exe): Single executable installer that installs TunnelKeeper to %LOCALAPPDATA%\TunnelKeeper, creates Desktop and Start Menu shortcuts, and provides clean Windows uninstallation.
  • 1-Line PowerShell Web Installer (install.ps1): Quick-install command (irm https://raw.githubusercontent.com/CyberSphinxxx/TunnelKeeper/main/install.ps1 | iex) that downloads, compiles, and configures the app automatically.
  • GitHub Actions Release Workflow: Automated CI/CD pipeline (.github/workflows/release.yml) that triggers on tag push or manual dispatch to compile TunnelKeeper.exe, generate TunnelKeeper-Setup.exe, create a portable zip bundle, generate SHA-256 checksums, and publish release assets automatically.
  • Continuous Integration Workflow: .github/workflows/ci.yml validates PowerShell syntax and C# compilation on every pull request and push to the main branch.

Installation Options

Option A: Windows Setup Wizard (Recommended)

  1. Download TunnelKeeper-Setup.exe from the Assets section below.
  2. Run the installer and follow the setup prompts.
  3. Launch TunnelKeeper from your Desktop or Start Menu.

Option B: 1-Line PowerShell Web Installer

Run the following command in PowerShell:

irm https://raw.githubusercontent.com/CyberSphinxxx/TunnelKeeper/main/install.ps1 | iex

Option C: Portable Zip Bundle

  1. Download TunnelKeeper-v2.0.0-Portable.zip from the Assets section below.
  2. Extract the archive to your preferred folder.
  3. Double-click TunnelKeeper.exe to launch.

Configuration Reference

Copy .env.example to .env or configure these settings directly in the TunnelKeeper GUI Settings tab:

Parameter Default Description
DnsProvider Hostinger DNS provider: Hostinger or Cloudflare
HostingerToken (empty) Hostinger API token with DNS write permissions
CloudflareApiToken (empty) Cloudflare API token with Zone.DNS permissions
CloudflareZoneId (auto) Optional Cloudflare Zone ID; auto-discovered if omitted
RootDomain (Required) Your registered domain zone (e.g. yourdomain.com)
SrvRecordName _minecraft._tcp.play SRV record label within your DNS zone
LocalPort 25565 Local Minecraft server port (Java standard: 25565)
Priority 0 SRV record priority (0 - 65535, default: 0)
Weight 5 SRV record weight (0 - 65535, default: 5)
TTL 60 DNS TTL in seconds for fast propagation
HotSwapMinute 55 Minutes elapsed before starting a replacement tunnel
LogRetentionDays 14 Days of rotated log files to retain before cleanup

Screenshots

image image image

Detailed Commit History

  • 9a8b3db: chore: update .gitignore to ignore .env and release artifacts
  • 2ec8ba0: feat(config): add .env.example configuration template with DNS and port settings
  • fdde30b: refactor(core): de-personalize tunnel daemon, add strict pre-flight validation and dynamic SRV mapping
  • 7f5da8d: feat(assets): add TunnelKeeper application icon
  • 5f914c7: feat(build): add native C# compiler script to generate TunnelKeeper.exe
  • 6360d02: feat(bin): add precompiled native Windows launcher TunnelKeeper.exe
  • 4a43637: feat(launcher): add silent VBScript background launcher
  • 24b600b: feat(launcher): add quick-start batch launcher
  • 6ddf99f: feat(gui): add native WPF dark-theme dashboard with settings and live logs
  • f134ae4: feat(installer): add Inno Setup wizard configuration script
  • 00e0c99: feat(install): add 1-line PowerShell web installer and uninstaller
  • 3f3a3e5: ci: add GitHub Actions workflow for syntax and build validation
  • 6a09d71: ci: add GitHub Actions release workflow for automated installer compilation
  • b13a114: docs: update README with installation options, GUI documentation, and generic examples

Full Changelog: v1.0.0...v2.0.0