feat: phase 7 — proxy daemon with HTTP login and WebSocket bridge
ericrfb-proxy axum server with three endpoints: POST /api/login: - Proxies credentials to OmniView auth.asp - Extracts session cookie, fetches title_app.asp - Returns JSON with applet_id, port, protocol_version, board_name GET /api/ws?applet_id=...&port=...: - WebSocket upgrade, connects to OmniView via e-RIC RFB - Bidirectional pump: OmniView frames → RGBA blits over WS, browser input events → key/mouse/hotkey to OmniView - Binary protocol: TAG_BLIT(0x01), TAG_RESIZE(0x03) server→client; TAG_KEY_PRESS(0x10), TAG_KEY_RELEASE(0x11), TAG_POINTER(0x12), TAG_CTRL_ALT_DEL(0x13) client→server Static file fallback via tower-http ServeDir. Config via config.toml or BLEKIN_HOST env var. Tested against real OmniView: - Login endpoint returns valid APPLET_ID - WebSocket upgrade succeeds (HTTP 101) - Session connects and pumps frames Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,9 +4,13 @@ members = ["crates/ericrfb", "crates/ericrfb-proxy"]
|
||||
|
||||
[workspace.dependencies]
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
axum = "0.7"
|
||||
axum = { version = "0.7", features = ["ws"] }
|
||||
bytes = "1"
|
||||
flate2 = "1"
|
||||
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
toml = "0.8"
|
||||
tower-http = { version = "0.5", features = ["fs", "cors"] }
|
||||
tracing = "0.1"
|
||||
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||||
anyhow = "1"
|
||||
|
||||
Reference in New Issue
Block a user