98 lines
3.3 KiB
TOML
98 lines
3.3 KiB
TOML
[package]
|
|
name = "netdesk-cli"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
authors.workspace = true
|
|
license.workspace = true
|
|
description = "Headless NetDesk native client — connects to a host and verifies the pipeline (dev/test harness)."
|
|
|
|
[[bin]]
|
|
name = "netdesk"
|
|
path = "src/main.rs"
|
|
|
|
# End-to-end feature test harness: connects to the live host and verifies every
|
|
# Session feature + the read-only host_ctl backend. See src/bin/e2e.rs.
|
|
[[bin]]
|
|
name = "netdesk-e2e"
|
|
path = "src/bin/e2e.rs"
|
|
|
|
# TCP tunnel client: forward a local port through the relay to a port on the
|
|
# remote host (SSH/VNC/RDP/DB over NetDesk). Portal-authed.
|
|
[[bin]]
|
|
name = "netdesk-tunnel"
|
|
path = "src/bin/tunnel.rs"
|
|
|
|
# LAN discovery scanner: find NetDesk hosts on the local network.
|
|
[[bin]]
|
|
name = "netdesk-lan-scan"
|
|
path = "src/bin/lan_scan.rs"
|
|
|
|
# Recursive folder download: pull a whole remote folder tree to a local dir.
|
|
[[bin]]
|
|
name = "netdesk-getdir"
|
|
path = "src/bin/getdir.rs"
|
|
|
|
# Interactive terminal: run commands on the remote host's shell (ConPTY).
|
|
[[bin]]
|
|
name = "netdesk-term"
|
|
path = "src/bin/term.rs"
|
|
|
|
# Voice send-test: capture this PC's mic and stream it to the host over
|
|
# CHAN_VOICE (drives the exact native-viewer voice path, headlessly).
|
|
[[bin]]
|
|
name = "netdesk-voice-send"
|
|
path = "src/bin/voice_send.rs"
|
|
|
|
# FPS probe: count received video frames per 1-second bucket (observes the
|
|
# host's startup FPS ramp end to end).
|
|
[[bin]]
|
|
name = "netdesk-fps-probe"
|
|
path = "src/bin/fps_probe.rs"
|
|
|
|
# Privacy-mode integration test: toggle privacy + verify sys.res and that the
|
|
# capture keeps delivering frames through the blackout.
|
|
[[bin]]
|
|
name = "netdesk-privacy-test"
|
|
path = "src/bin/privacy_test.rs"
|
|
|
|
# Direct-IP connect test: dial a host's IP:port directly (no relay) over
|
|
# DirectTcp and verify the E2E session + video.
|
|
[[bin]]
|
|
name = "netdesk-direct"
|
|
path = "src/bin/direct_connect.rs"
|
|
|
|
[dependencies]
|
|
netdesk-core = { path = "../core" }
|
|
# e2e decodes received Opus audio packets to measure real per-source energy
|
|
# (RMS/peak) — proving system + mic audio actually transmit, not just that
|
|
# packets arrive.
|
|
netdesk-opus = { path = "../opus" }
|
|
tokio = { workspace = true }
|
|
anyhow = { workspace = true }
|
|
# e2e.rs parses sys.res / session.info JSON and pulls in the viewer's host_ctl
|
|
# module verbatim (via #[path]); host_ctl needs serde derive, serde_json, a
|
|
# blocking HTTP client (ureq) and the clipboard crate it references.
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
ureq = { version = "2.10", features = ["json"] }
|
|
arboard = "3"
|
|
# netdesk-tunnel client: portal-login (ureq) then a raw tunnel WebSocket to
|
|
# wss://server/tunnel/<hid>, piping a local TcpListener through it.
|
|
tokio-tungstenite = { workspace = true }
|
|
futures-util = { workspace = true }
|
|
|
|
# e2e.rs verifies REAL OS-level input injection on the host (which, for the live
|
|
# test, runs on this same machine): GetCursorPos confirms the mouse actually
|
|
# moved, GetAsyncKeyState confirms a key actually registered. DPI-aware so the
|
|
# readings share the host's physical pixel space.
|
|
[target.'cfg(windows)'.dependencies]
|
|
# the e2e bin #[path]-includes viewer/src/host_ctl.rs, which drives the in-process
|
|
# native host engine for the HOSTCTL checks.
|
|
netdesk-host = { path = "../host" }
|
|
windows = { version = "0.58", features = [
|
|
"Win32_Foundation",
|
|
"Win32_UI_WindowsAndMessaging",
|
|
"Win32_UI_Input_KeyboardAndMouse",
|
|
"Win32_UI_HiDpi",
|
|
] }
|