Files
yinjianm c7a73e3715 【HelloAGENTS】- ~init:完成
已完成当前仓库知识库初始化,已创建 .helloagents/ 目录骨架和首批文档,覆盖根工作区、前端、后端、远程桌面网关四个模块。

已生成入口与上下文文档:INDEX.md、context.md、CHANGELOG.md
已生成模块文档:workspace-root.md、frontend.md、backend.md、remote-gateway.md
已创建空目录:plan/、user/
验收结果:核心文件存在且非空,目录结构完整,未残留模板级占位骨架
未执行项:configure_codex.py 因当前环境不可用 Python 解释器而跳过,这不影响本次知识库初始化
提示:当前 .gitignore 还没有 .helloagents/ 条目;按 ~init 规则,我只提示,不自动修改
2026-03-25 03:20:36 +08:00

2.2 KiB
Raw Permalink Blame History

remote-gateway

职责

packages/remote-gateway 是独立的远程桌面网关服务,负责验证 RDP/VNC 连接参数、生成加密 token,并通过 guacamole-liteguacd 协同提供远程桌面 WebSocket 能力。

接口定义(可选)

模块对外暴露的公共 API 和数据结构

公共 API

函数/方法 参数 返回值 说明
POST /api/remote-desktop/token protocol, connectionConfig { token } 校验参数后生成加密远程桌面 token。
GuacamoleLite(websocketOptions, guacdOptions, clientOptions) 端口、guacd 配置、加密配置 GuacamoleLite 实例 启动远程桌面 WebSocket 网关。
gracefulShutdown(signal) 进程信号 关闭 HTTP API 与 Guacamole 服务器。

数据结构

字段 类型 说明
REMOTE_GATEWAY_API_PORT string | number HTTP API 监听端口,默认 9090
REMOTE_GATEWAY_WS_PORT string | number Guacamole WebSocket 监听端口,默认 8080
connectionConfig JSON 对象 包含 hostnameportusernamepassword、分辨率等桌面连接参数。

行为规范

网关启动

条件: 启动 remote-gateway 进程。
行为: 进程启动时生成仅驻留内存的 AES 密钥,构造允许来源列表,并初始化 GuacamoleLite 与 API 服务器。
结果: 每次进程重启都会使用新的内存密钥,旧 token 不应跨进程复用。

Token 生成

条件: 客户端请求 /api/remote-desktop/token
行为: 仅接受 rdpvnc,按协议要求校验 hostnameport、账号口令等字段,再将连接配置加密为 base64 token。
结果: 前端拿到可交给远程桌面 WebSocket 使用的短期 token。

优雅退出

条件: 收到 SIGINTSIGTERMSIGUSR2
行为: 先关闭 API server,再尝试关闭 Guacamole server10 秒后仍未完成则强制退出。
结果: 开发环境重启和生产环境停机时尽量减少悬挂连接。

依赖关系

依赖: workspace-root, guacd, guacamole-lite, cors
被依赖: frontend