RDP profiles can go through a Remote Desktop Gateway (MS-TSGU over an
HTTPS WebSocket) with its own username and password, stored like other
credentials (rdp-gateway-password). The gateway stream is bridged to a
loopback socket so the blocking RDP client uses it like any transport.
IronRDP's gateway crate (0.0.1) is vendored with fixes: it used
ironrdp-tls, which accepts any certificate, before sending Basic
credentials — the gateway is now verified against the web PKI; its
asserts on gateway-supplied lengths are errors instead of panics; and
the server port is passed through. Checked against a self-signed
openssl s_server: the connection is refused ('invalid peer certificate')
before any request or credential is sent. Not tested against a real
gateway; Basic-auth gateways only (no NTLM).
26 lines
636 B
TOML
26 lines
636 B
TOML
[workspace]
|
|
resolver = "3"
|
|
members = ["core", "app"]
|
|
exclude = ["fuzz"]
|
|
|
|
[workspace.package]
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
|
|
[profile.dev.package."*"]
|
|
opt-level = 2
|
|
|
|
# The terminal parser is generic and gets instantiated in the app crate; unoptimised it is ~50x slower.
|
|
[profile.dev.package.nexus]
|
|
opt-level = 2
|
|
|
|
[profile.release]
|
|
lto = "thin"
|
|
|
|
# IronRDP compatibility patches; see vendor/README.md for what each changes and when to drop it.
|
|
[patch.crates-io]
|
|
picky = { path = "vendor/picky" }
|
|
sspi = { path = "vendor/sspi" }
|
|
ironrdp-session = { path = "vendor/ironrdp-session" }
|
|
ironrdp-mstsgu = { path = "vendor/ironrdp-mstsgu" }
|