feat(tunnel): RDP bridge tunnel mode (VA-20) #20
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/rdp-bridge-va-20"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Closes VA-20. Adds
USAGE_RDP = 7to the rendezvous tunnel dispatcher. On open, the agent attempts a TCP connect to127.0.0.1:3389with a short timeout and, on success, proxies bytes both ways between the relay WS and the localxrdpdaemon. Unlike the VNC bridge (VA-19) the agent does not spawn the helper: xrdp is a system service with PAM +xrdp-sesmanintegration owned by the host's init system. The agent assumes loopback bind, which matches the default Debian / Fedora / Arch packaging.Stacked on top of VA-19
This branch is built on top of
feat/vnc-bridge-va-19(PR #19) so the docstring +pub(super) control_echomove from that PR are included. Once #19 merges this branch fast-forwards to a clean 1-commit diff againstmain.What's in the diff (this commit)
crates/meshagent/src/host/rdp.rs(new):run+ bidirectionalpump(same shape ashost::vnc::pump, duplicated rather than shared to keep the modes independently revisable).crates/meshagent/src/host/tunnel.rs:USAGE_RDPconstant, dispatch arm, docstring entry.crates/meshagent/src/host/mod.rs: register the new module.README.md: extend the "Runtime dependencies" section withxrdp+xrdp-sesman.Error model
RdpError::DaemonUnavailable(io::Error).RdpError::ConnectTimeout.A missing or stopped daemon is the common failure case, so the timeout is intentionally short so the operator sees a clean error fast.
Test plan
cargo test --workspace --lib(3 new rdp tests pass: pump round-trip, rtt-echo, daemon-unavailable).cargo clippy --workspace --all-targets -- --deny warnings(clean).cargo fmt --all --check(clean).just pre-commit(full docker check: fmt + clippy + build + tests, all green).USAGE_RDP = 7tunnel from the SPA, connect frommstsc.exeend-to-end. Deferred until the server side knows how to issue the new usage code.