Skip to content

VPN: WireGuard-Config bei jedem Verbinden vom Server auffrischen - #19

Merged
CallMeTechie merged 1 commit into
mainfrom
feat/config-reload-on-connect
Jul 29, 2026
Merged

VPN: WireGuard-Config bei jedem Verbinden vom Server auffrischen#19
CallMeTechie merged 1 commit into
mainfrom
feat/config-reload-on-connect

Conversation

@CallMeTechie

Copy link
Copy Markdown
Owner

Problem

Nach dem Serverumzug (OVH → collabtive.cloud) hing das Pixel Fold: Tunnel verbunden, aber kein Internet. Ursache war nicht die Server-URL in den Einstellungen, sondern die gespeicherte WireGuard-Config — sie trug weiterhin den alten Endpoint. Die App hat die Config seit der Registrierung nie wieder abgeglichen; der beim Setup gespeicherte configHash wurde geschrieben, aber nirgends gelesen.

Lösung

TunnelConnector.connectWithUserSettings() ruft direkt nach dem DNS-Pre-Resolve — dem letzten Moment mit funktionierendem Internet vor dem Tunnel-Start — GET api/v1/client/config/check mit peerId + gespeichertem Hash auf:

  • updated == false → nichts tun, gespeicherte Config verbinden
  • updated == true → neue Config durch WgConfigValidator; gültig → speichern (Config + Hash) und diese verbinden, ungültig → verwerfen und mit der alten verbinden
  • Kein Peer, Server nicht erreichbar, Token abgelehnt, Timeout → gespeicherte Config; ein Config-Check darf den Verbindungsaufbau nie blockieren

Alle Einstiegspunkte (VPN-Screen, Quick-Settings-Tile, Auto-Connect) laufen durch diese Methode, der Abgleich gilt damit überall. Der Server liefert bei geändertem Hash die Config in derselben Antwort mit — es bleibt ein Request.

Tests

Neu: TunnelConnectorTest (5 Fälle) — unverändert / geändert+gültig / geändert+ungültig / Server nicht erreichbar / nicht registriert. ./gradlew test lintRelease lokal grün (101 App-Unit-Tests, 0 Fehler).

Hinweis fürs Gerät

Das Pixel Fold braucht die neue Config einmalig noch von Hand (QR/Datei) oder eine App-Version mit diesem Stand. Ab dann heilt sich der Fall selbst — auch nach QR-Import ohne Hash, weil ein fehlender Hash den Server-Abgleich auslöst.

After the server moved hosts, the stored config still carried the old
Endpoint: the tunnel came up but routed nowhere, and changing the server
URL in the app did not help because the config itself was never re-fetched.

TunnelConnector now calls config/check right after the DNS pre-resolve —
the last moment with working internet before the tunnel starts — and adopts
a changed config after validating it. Every failure path (no peer id,
unreachable server, rejected token, invalid config) falls back to the
stored config, so a config check can never block a connect. This also
makes the stored config hash useful; it was written but never read.
@CallMeTechie
CallMeTechie merged commit ab76bd5 into main Jul 29, 2026
3 checks passed
@CallMeTechie
CallMeTechie deleted the feat/config-reload-on-connect branch July 29, 2026 18:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant