feat(rdp): connect to gateway-mode RDP routes via server connect_address (Phase C)#12
Merged
Merged
Conversation
…te (no secret values were ever logged)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Android-client half of RDP-over-gateway — completes the 3-repo feature (server v1.63.0 + Pro Windows client already shipped). Lets the Android client launch FreeRDP sessions to
access_mode='gateway'routes (targets that are NOT WireGuard peers, reached through a Home Gateway via the public<server>:<listen_port>endpoint).RdpRouteDTO gainsconnectAddress/connectPort(@SerializedName, nullable defaults — additive, backward-compatible with older servers).RdpConnectionParams.fromRouteusesconnectAddress ?: host/connectPort ?: portas the FreeRDP target.RdpManager.requiresVpn(accessMode)(case-insensitive; null/other → still requires VPN).connect()locals (external-launch path, session monitor, error strings) now use the effective connect endpoint for consistency with the embedded path.End-to-end (embedded/production path): server
connect_address→ DTO →fromRoute→RdpBookmarkBuilder.hostname→ FreeRDP connects to the public endpoint.Test Plan
./gradlewbuild + unit tests pass (this is the compile gate — not built locally)RdpConnectionParamsTest(gateway uses connectAddress; null fallback) +RdpManagerVpnGateTest(gateway exempt; internal/external/both/vpn/null require VPN; case-insensitive)<server>:<listen_port>; credentials appliedKnown/non-blocking follow-ups:
RdpHostCardstill displays the LAN host for gateway routes (server doesn't set externalHostname for gateway) — cosmetic, pre-existing; consider showing connectAddress / a "via gateway" label.RdpManager.connect()full control flow remains unit-test-free (requiresVpn + fromRoute are covered).