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

48 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# remote-gateway
## 职责
`packages/remote-gateway` 是独立的远程桌面网关服务,负责验证 RDP/VNC 连接参数、生成加密 token,并通过 `guacamole-lite``guacd` 协同提供远程桌面 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 对象 | 包含 `hostname``port``username``password`、分辨率等桌面连接参数。 |
## 行为规范
### 网关启动
**条件**: 启动 `remote-gateway` 进程。
**行为**: 进程启动时生成仅驻留内存的 AES 密钥,构造允许来源列表,并初始化 `GuacamoleLite` 与 API 服务器。
**结果**: 每次进程重启都会使用新的内存密钥,旧 token 不应跨进程复用。
### Token 生成
**条件**: 客户端请求 `/api/remote-desktop/token`
**行为**: 仅接受 `rdp``vnc`,按协议要求校验 `hostname``port`、账号口令等字段,再将连接配置加密为 base64 token。
**结果**: 前端拿到可交给远程桌面 WebSocket 使用的短期 token。
### 优雅退出
**条件**: 收到 `SIGINT``SIGTERM``SIGUSR2`
**行为**: 先关闭 API server,再尝试关闭 Guacamole server10 秒后仍未完成则强制退出。
**结果**: 开发环境重启和生产环境停机时尽量减少悬挂连接。
## 依赖关系
```yaml
依赖: workspace-root, guacd, guacamole-lite, cors
被依赖: frontend
```