- 在 SessionForPage 结构体添加 RecordingSize 字段 - 在 SessionPagingEndpoint 中获取录屏文件大小 - 修复 server.go 的 gofmt 格式问题
29 KiB
Next-Terminal 功能详细文档
项目概述
Next-Terminal 是一个开源的堡垒机/运维审计系统,支持 SSH、RDP、VNC 等多种协议的远程访问,提供资产管理、会话审计、权限控制等功能。
一、前端页面详细功能
1. 登录页面 (LoginPage.tsx)
页面路径: /login
功能描述: 用户登录入口,支持多种认证方式
操作功能
| 操作 | 描述 | 触发条件 |
|---|---|---|
| 密码登录 | 输入用户名密码登录 | 点击登录按钮 |
| OTP 验证 | 双因素认证验证码输入 | 登录后需要 OTP |
| Passkey 登录 | WebAuthn 无密码登录 | 点击 Passkey 按钮 |
| 企业微信登录 | 企业微信扫码登录 | 点击企业微信按钮 |
| OIDC 登录 | 第三方 OIDC 登录 | 点击 OIDC 按钮 |
| 切换语言 | 切换界面语言 | 点击语言按钮 |
| 切换主题 | 切换明暗主题 | 点击主题按钮 |
表单字段
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
| username | string | 是 | 用户名 |
| password | string | 是 | 密码 |
| captcha | string | 条件 | 图形验证码(启用时) |
| totp | string | 条件 | OTP 验证码(启用时) |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/account/login |
POST | 用户登录 |
/account/login-status |
GET | 获取登录状态 |
/account/validate-totp |
POST | 验证 OTP |
/account/captcha |
GET | 获取图形验证码 |
/account/webauthn/login/start |
POST | WebAuthn 登录开始 |
/account/webauthn/login/finish |
POST | WebAuthn 登录完成 |
/branding |
GET | 获取品牌配置 |
2. 资产管理页面 (AssetPage.tsx)
页面路径: /assets
功能描述: 管理所有资产(服务器、数据库、网站等)
操作功能
| 操作 | 描述 | 权限 |
|---|---|---|
| 新建资产 | 创建新的资产 | 资产管理权限 |
| 编辑资产 | 修改资产信息 | 资产管理权限 |
| 删除资产 | 删除一个或多个资产 | 资产管理权限 |
| 批量删除 | 批量删除选中资产 | 资产管理权限 |
| 导入资产 | 从 CSV 文件导入资产 | 资产管理权限 |
| 导出资产 | 导出资产列表 | 资产管理权限 |
| 测试连接 | 测试资产连通性 | 资产管理权限 |
| 移动分组 | 移动资产到指定分组 | 资产管理权限 |
| 更改网关 | 更改资产的访问网关 | 资产管理权限 |
| 更改所有者 | 更改资产所有者 | 管理员权限 |
| 拖拽排序 | 拖拽调整资产顺序 | 资产管理权限 |
表格列
| 列名 | 字段 | 描述 |
|---|---|---|
| 排序 | sort | 拖拽排序手柄 |
| 名称 | name | 资产名称 |
| 协议 | protocol | SSH/RDP/VNC/MySQL 等 |
| IP 地址 | ip | 资产 IP 地址 |
| 端口 | port | 连接端口 |
| 标签 | tags | 资产标签 |
| 状态 | active | 活动状态 |
| 所有者 | owner | 资产所有者 |
| 操作 | - | 操作按钮 |
搜索筛选
| 筛选项 | 字段 | 描述 |
|---|---|---|
| 关键词 | keyword | 搜索名称/IP |
| 协议 | protocol | 按协议筛选 |
| 标签 | tags | 按标签筛选 |
| 状态 | active | 按状态筛选 |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/assets |
GET | 获取资产列表(分页) |
/assets |
POST | 创建资产 |
/assets/:id |
PUT | 更新资产 |
/assets/:id |
DELETE | 删除资产 |
/assets/:id |
GET | 获取资产详情 |
/assets/import |
POST | 导入资产 |
/assets/export |
GET | 导出资产 |
/assets/:id/tcping |
GET | 测试连接 |
/assets/tags |
GET | 获取标签列表 |
/assets/:id/change-owner |
PUT | 更改所有者 |
/assets/:id/sort-position |
PUT | 更新排序位置 |
3. 用户管理页面 (UserPage.tsx)
页面路径: /identity/users
功能描述: 管理系统用户
操作功能
| 操作 | 描述 | 权限 |
|---|---|---|
| 新建用户 | 创建新用户 | 管理员权限 |
| 编辑用户 | 修改用户信息 | 管理员权限 |
| 删除用户 | 删除一个或多个用户 | 管理员权限 |
| 批量删除 | 批量删除选中用户 | 管理员权限 |
| 重置密码 | 重置用户密码 | 管理员权限 |
| 启用/禁用 | 切换用户状态 | 管理员权限 |
| 重置 TOTP | 重置双因素认证 | 管理员权限 |
| 导入用户 | 从 CSV 导入用户 | 管理员权限 |
| 导出用户 | 导出用户列表 | 管理员权限 |
表格列
| 列名 | 字段 | 描述 |
|---|---|---|
| 昵称 | nickname | 用户昵称 |
| 用户名 | username | 登录用户名 |
| 邮箱 | 用户邮箱 | |
| 部门 | departments | 所属部门 |
| 来源 | source | 用户来源(本地/LDAP/OIDC) |
| 备注 | remark | 备注信息 |
| 状态 | status | 启用/禁用状态 |
| 在线 | online | 在线状态 |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/users |
GET | 获取用户列表(分页) |
/users |
POST | 创建用户 |
/users/:id |
PUT | 更新用户 |
/users/:id |
DELETE | 删除用户 |
/users/:id |
GET | 获取用户详情 |
/users/:id/status |
PUT | 更新用户状态 |
/users/:id/password |
PUT | 重置密码 |
/users/:id/reset-totp |
PUT | 重置 TOTP |
/users/all |
GET | 获取所有用户 |
4. 访问页面 (AccessPage.tsx)
页面路径: /access
功能描述: 资产访问入口,支持多标签页
操作功能
| 操作 | 描述 | 快捷键 |
|---|---|---|
| 打开资产 | 双击资产树节点打开连接 | - |
| 关闭标签页 | 关闭当前标签页 | Ctrl+W |
| 关闭其他 | 关闭其他标签页 | - |
| 关闭左侧 | 关闭左侧所有标签页 | - |
| 关闭右侧 | 关闭右侧所有标签页 | - |
| 关闭所有 | 关闭所有标签页 | - |
| 重连 | 重新连接资产 | - |
| 批量 SSH | 批量执行 SSH 命令 | - |
| WOL 唤醒 | Wake-on-LAN 唤醒 | - |
| 切换主题 | 切换终端主题 | - |
| 全屏 | 全屏模式 | F11 |
左侧面板
| 组件 | 描述 |
|---|---|
| 资产树 | 按分组展示资产列表 |
| 搜索框 | 搜索资产名称/IP |
| 刷新按钮 | 刷新资产列表 |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/sessions/create |
GET | 创建会话 |
/sessions/:id/connect |
PUT | 连接会话 |
/sessions/:id/disconnect |
PUT | 断开会话 |
/sessions/:id/resize |
PUT | 调整窗口大小 |
/sessions/:id/upload |
POST | 上传文件 |
/sessions/:id/download |
GET | 下载文件 |
/sessions/:id/ls |
POST | 列出目录 |
/sessions/:id/mkdir |
POST | 创建目录 |
/sessions/:id/rm |
POST | 删除文件 |
/sessions/:id/rename |
POST | 重命名文件 |
5. 仪表盘页面 (DashboardPage.tsx)
页面路径: /dashboard
功能描述: 系统概览和统计数据展示
展示内容
| 指标 | 描述 |
|---|---|
| 登录失败次数 | 今日登录失败统计 |
| 在线用户数 | 当前在线用户数量 |
| 活跃会话数 | 当前活跃会话数量 |
| 资产总数 | 系统资产总数 |
| 用户总数 | 系统用户总数 |
| 资产类型分布 | 按协议类型统计资产 |
| 会话历史 | 最近会话记录 |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/dashboard/time-counter |
GET | 获取时间计数器 |
/dashboard/date-counter |
GET | 获取日期统计 |
/dashboard/asset-types |
GET | 获取资产类型分布 |
6. 角色管理页面 (RolePage.tsx)
页面路径: /identity/roles
功能描述: 管理系统角色和权限
操作功能
| 操作 | 描述 |
|---|---|
| 新建角色 | 创建新角色 |
| 编辑角色 | 修改角色信息 |
| 删除角色 | 删除角色 |
| 配置权限 | 配置角色菜单权限 |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/roles |
GET | 获取角色列表 |
/roles |
POST | 创建角色 |
/roles/:id |
PUT | 更新角色 |
/roles/:id |
DELETE | 删除角色 |
/roles/:id |
GET | 获取角色详情 |
7. 部门管理页面 (DepartmentPage.tsx)
页面路径: /identity/departments
功能描述: 管理组织架构
操作功能
| 操作 | 描述 |
|---|---|
| 新建部门 | 创建新部门 |
| 编辑部门 | 修改部门信息 |
| 删除部门 | 删除部门 |
| 添加用户 | 向部门添加用户 |
| 移除用户 | 从部门移除用户 |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/departments |
GET | 获取部门树 |
/departments |
POST | 创建部门 |
/departments/:id |
PUT | 更新部门 |
/departments/:id |
DELETE | 删除部门 |
8. 凭据管理页面 (CredentialPage.tsx)
页面路径: /assets/credentials
功能描述: 管理资产访问凭据
操作功能
| 操作 | 描述 |
|---|---|
| 新建凭据 | 创建新凭据 |
| 编辑凭据 | 修改凭据信息 |
| 删除凭据 | 删除凭据 |
| 查看密码 | 查看加密的密码(需 MFA) |
凭据类型
| 类型 | 描述 |
|---|---|
| 自定义密码 | 用户名+密码 |
| SSH 密钥 | 用户名+私钥+密码短语 |
| SSH 证书 | SSH 证书认证 |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/credentials |
GET | 获取凭据列表 |
/credentials |
POST | 创建凭据 |
/credentials/:id |
PUT | 更新凭据 |
/credentials/:id |
DELETE | 删除凭据 |
/credentials/:id/decrypted |
GET | 获取解密凭据 |
9. 会话管理页面 (OnlineSessionPage.tsx / OfflineSessionPage.tsx)
页面路径: /audit/sessions/online /audit/sessions/offline
功能描述: 管理在线和历史会话
操作功能
| 操作 | 描述 |
|---|---|
| 断开会话 | 强制断开在线会话 |
| 查看回放 | 查看会话录像 |
| 标记已审阅 | 标记会话已审阅 |
| 批量审阅 | 批量标记已审阅 |
| 删除会话 | 删除历史会话 |
| 清除离线会话 | 清除所有离线会话 |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/sessions |
GET | 获取会话列表 |
/sessions/:id |
DELETE | 删除会话 |
/sessions/:id/disconnect |
PUT | 断开会话 |
/sessions/:id/reviewed |
PUT | 标记已审阅 |
/sessions/:id/recording |
GET | 获取录像文件 |
/sessions/clear |
DELETE | 清除离线会话 |
10. 访问日志页面 (AccessLogPage.tsx)
页面路径: /audit/access-logs
功能描述: 查看用户访问日志
操作功能
| 操作 | 描述 |
|---|---|
| 搜索日志 | 按条件搜索日志 |
| 导出日志 | 导出日志列表 |
| 查看详情 | 查看日志详情 |
筛选条件
| 筛选项 | 描述 |
|---|---|
| 用户 | 按用户筛选 |
| 资产 | 按资产筛选 |
| 时间范围 | 按时间筛选 |
| 操作类型 | 按操作类型筛选 |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/access-logs |
GET | 获取访问日志 |
/access-logs/stats |
GET | 获取访问统计 |
11. 命令过滤器页面 (CommandFilterPage.tsx)
页面路径: /authorised/command-filters
功能描述: 管理命令过滤规则
操作功能
| 操作 | 描述 |
|---|---|
| 新建过滤器 | 创建命令过滤器 |
| 编辑过滤器 | 修改过滤器信息 |
| 删除过滤器 | 删除过滤器 |
| 添加规则 | 添加过滤规则 |
| 编辑规则 | 修改过滤规则 |
| 删除规则 | 删除过滤规则 |
规则类型
| 类型 | 描述 |
|---|---|
| 允许 | 允许执行的命令 |
| 禁止 | 禁止执行的命令 |
| 审计 | 审计记录的命令 |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/command-filters |
GET | 获取过滤器列表 |
/command-filters |
POST | 创建过滤器 |
/command-filters/:id |
PUT | 更新过滤器 |
/command-filters/:id |
DELETE | 删除过滤器 |
/command-filters/:id/rules |
GET | 获取规则列表 |
/command-filters/:id/rules |
POST | 创建规则 |
12. 授权策略页面 (StrategyPage.tsx)
页面路径: /authorised/strategies
功能描述: 管理资产授权策略
操作功能
| 操作 | 描述 |
|---|---|
| 新建策略 | 创建授权策略 |
| 编辑策略 | 修改策略信息 |
| 删除策略 | 删除策略 |
| 配置资产 | 配置授权资产 |
| 配置用户 | 配置授权用户 |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/strategies |
GET | 获取策略列表 |
/strategies |
POST | 创建策略 |
/strategies/:id |
PUT | 更新策略 |
/strategies/:id |
DELETE | 删除策略 |
13. 系统设置页面 (SettingPage.tsx)
页面路径: /settings
功能描述: 系统配置管理
设置分类
| 分类 | 描述 |
|---|---|
| 基础设置 | 系统基础配置 |
| 安全设置 | 密码策略、登录策略等 |
| 邮件设置 | SMTP 配置 |
| LDAP 设置 | LDAP 集成配置 |
| OIDC 设置 | OIDC 集成配置 |
| 备份设置 | 数据备份配置 |
| 日志设置 | 日志保留配置 |
| RDP 设置 | RDP 协议配置 |
| VNC 设置 | VNC 协议配置 |
| SSHD 设置 | SSHD 配置 |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/properties |
GET | 获取所有配置 |
/properties |
PUT | 更新配置 |
/properties/:name |
GET | 获取单个配置 |
/properties/:name |
PUT | 更新单个配置 |
14. 网关管理页面 (AgentGatewayPage.tsx / SshGatewayPage.tsx)
页面路径: /gateways/agents /gateways/ssh
功能描述: 管理访问网关
操作功能
| 操作 | 描述 |
|---|---|
| 新建网关 | 创建新网关 |
| 编辑网关 | 修改网关信息 |
| 删除网关 | 删除网关 |
| 查看状态 | 查看网关连接状态 |
| 生成令牌 | 生成网关访问令牌 |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/agent-gateways |
GET | 获取 Agent 网关列表 |
/agent-gateways |
POST | 创建 Agent 网关 |
/agent-gateways/:id |
PUT | 更新 Agent 网关 |
/agent-gateways/:id |
DELETE | 删除 Agent 网关 |
/ssh-gateways |
GET | 获取 SSH 网关列表 |
/ssh-gateways |
POST | 创建 SSH 网关 |
15. 计划任务页面 (ScheduledTaskPage.tsx)
页面路径: /sysops/scheduled-tasks
功能描述: 管理计划任务
操作功能
| 操作 | 描述 |
|---|---|
| 新建任务 | 创建计划任务 |
| 编辑任务 | 修改任务信息 |
| 删除任务 | 删除任务 |
| 立即执行 | 立即执行任务 |
| 启用/禁用 | 切换任务状态 |
| 查看日志 | 查看执行日志 |
调用 API
| API | 方法 | 描述 |
|---|---|---|
/scheduled-tasks |
GET | 获取任务列表 |
/scheduled-tasks |
POST | 创建任务 |
/scheduled-tasks/:id |
PUT | 更新任务 |
/scheduled-tasks/:id |
DELETE | 删除任务 |
/scheduled-tasks/:id/execute |
POST | 立即执行 |
/scheduled-tasks/:id/logs |
GET | 获取执行日志 |
二、后端 API 详细接口
1. 用户管理 API
POST /users
创建用户
请求体:
{
"username": "string", // 用户名(必填)
"password": "string", // 密码(必填)
"nickname": "string", // 昵称(必填)
"mail": "string", // 邮箱
"mobile": "string", // 手机号
"status": "string", // 状态:enabled/disabled
"type": "string", // 类型:super-admin/admin/user
"departments": ["id1", "id2"], // 部门ID列表
"roles": ["id1", "id2"] // 角色ID列表
}
响应:
{
"code": 1,
"message": "success",
"data": {
"id": "string",
"username": "string",
"nickname": "string",
"password": "string" // 随机生成的密码(新建时)
}
}
GET /users
分页获取用户列表
查询参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| pageIndex | int | 页码(默认 1) |
| pageSize | int | 每页数量(默认 10) |
| username | string | 用户名筛选 |
| nickname | string | 昵称筛选 |
| string | 邮箱筛选 | |
| online | string | 在线状态筛选 |
| type | string | 用户类型筛选 |
| order | string | 排序方式:asc/desc |
| field | string | 排序字段 |
响应:
{
"code": 1,
"message": "success",
"data": {
"total": 100,
"items": [
{
"id": "string",
"username": "string",
"nickname": "string",
"mail": "string",
"status": "string",
"online": boolean,
"source": "string",
"departments": [],
"created": "2024-01-01T00:00:00Z"
}
]
}
}
PUT /users/:id
更新用户信息
路径参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 用户 ID |
请求体: 同创建用户
PUT /users/:id/status
更新用户状态
路径参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 用户 ID |
查询参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| status | string | 状态:enabled/disabled |
DELETE /users/:id
删除用户
路径参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 用户 ID(支持逗号分隔多个) |
PUT /users/:id/password
重置用户密码
路径参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 用户 ID(支持逗号分隔多个) |
表单参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| password | string | 新密码(可选,不填则随机生成) |
PUT /users/:id/reset-totp
重置用户 TOTP
2. 资产管理 API
POST /assets
创建资产
请求体:
{
"name": "string", // 资产名称(必填)
"protocol": "string", // 协议:ssh/rdp/vnc/telnet/mysql等(必填)
"ip": "string", // IP 地址(必填)
"port": 22, // 端口(必填)
"accountType": "string", // 账户类型:custom/private-key/credential
"username": "string", // 用户名
"password": "string", // 密码
"privateKey": "string", // 私钥
"passphrase": "string", // 私钥密码
"credentialId": "string", // 凭据 ID
"description": "string", // 描述
"tags": "tag1,tag2", // 标签(逗号分隔)
"groupId": "string", // 分组 ID
"gatewayId": "string", // 网关 ID
"active": true // 是否激活
}
GET /assets
分页获取资产列表
查询参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| pageIndex | int | 页码 |
| pageSize | int | 每页数量 |
| keyword | string | 关键词搜索 |
| protocol | string | 协议筛选 |
| tags | string | 标签筛选 |
| ip | string | IP 筛选 |
| port | string | 端口筛选 |
| active | string | 状态筛选 |
| sortOrder | string | 排序方式 |
| sortField | string | 排序字段 |
POST /assets/import
导入资产
请求: multipart/form-data
| 字段 | 类型 | 描述 |
|---|---|---|
| file | file | CSV 文件 |
CSV 格式:
名称,协议,IP,端口,用户名,密码,私钥,私钥密码,描述,标签
GET /assets/:id/tcping
测试资产连接
响应:
{
"code": 1,
"message": "success",
"data": {
"active": true,
"msg": "连接成功"
}
}
PUT /assets/:id/change-owner
更改资产所有者
查询参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| owner | string | 新所有者 ID |
3. 会话管理 API
GET /sessions
分页获取会话列表
查询参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| pageIndex | int | 页码 |
| pageSize | int | 每页数量 |
| status | string | 状态:connected/disconnected |
| userId | string | 用户 ID |
| clientIp | string | 客户端 IP |
| assetId | string | 资产 ID |
| protocol | string | 协议 |
| reviewed | string | 审阅状态 |
GET /sessions/create
创建会话
查询参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| assetId | string | 资产 ID |
| mode | string | 模式:normal/monitor |
响应:
{
"code": 1,
"message": "success",
"data": {
"sessionId": "string",
"width": 80,
"height": 24
}
}
PUT /sessions/:id/disconnect
断开会话
POST /sessions/:id/upload
上传文件
请求: multipart/form-data
| 字段 | 类型 | 描述 |
|---|---|---|
| file | file | 文件 |
| dir | string | 目标目录 |
GET /sessions/:id/download
下载文件
查询参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| file | string | 文件路径 |
POST /sessions/:id/ls
列出目录内容
请求体:
{
"dir": "/home/user"
}
响应:
{
"code": 1,
"message": "success",
"data": [
{
"name": "file.txt",
"path": "/home/user/file.txt",
"isDir": false,
"size": 1024,
"modTime": "2024-01-01T00:00:00Z",
"mode": "-rw-r--r--"
}
]
}
4. 账户认证 API
POST /account/login
用户登录
请求体:
{
"username": "string",
"password": "string",
"captcha": "string",
"key": "string"
}
响应:
{
"code": 1,
"message": "success",
"data": {
"token": "string",
"needTotp": true
}
}
POST /account/logout
用户登出
POST /account/validate-totp
验证 TOTP
请求体:
{
"totp": "123456"
}
POST /account/change-password
修改密码
请求体:
{
"oldPassword": "string",
"newPassword": "string"
}
GET /account/info
获取当前用户信息
GET /account/menu
获取当前用户菜单权限
5. 仪表盘 API
GET /dashboard/time-counter
获取时间计数器
响应:
{
"code": 1,
"message": "success",
"data": {
"loginFailedCount": 10,
"onlineUserCount": 5,
"totalUserCount": 100,
"activeSessionCount": 3,
"totalSessionCount": 1000,
"totalAssetCount": 50
}
}
GET /dashboard/date-counter
获取日期统计
查询参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| d | string | 时间范围:week/month |
响应:
{
"code": 1,
"message": "success",
"data": [
{
"date": "2024-01-01",
"loginCount": 10,
"userCount": 5,
"sessionCount": 20
}
]
}
GET /dashboard/asset-types
获取资产类型分布
响应:
{
"code": 1,
"message": "success",
"data": [
{"protocol": "ssh", "count": 30},
{"protocol": "rdp", "count": 15},
{"protocol": "mysql", "count": 5}
]
}
6. 角色管理 API
POST /roles
创建角色
请求体:
{
"name": "string",
"description": "string",
"menus": ["menu1", "menu2"],
"permissions": ["perm1", "perm2"]
}
GET /roles
获取角色列表
PUT /roles/:id
更新角色
DELETE /roles/:id
删除角色
7. 部门管理 API
POST /departments
创建部门
请求体:
{
"name": "string",
"parentId": "string",
"description": "string",
"sort": 0
}
GET /departments
获取部门树
响应:
{
"code": 1,
"message": "success",
"data": [
{
"id": "string",
"name": "string",
"parentId": "string",
"children": []
}
]
}
8. 凭据管理 API
POST /credentials
创建凭据
请求体:
{
"name": "string",
"type": "custom", // custom/private-key
"username": "string",
"password": "string",
"privateKey": "string",
"passphrase": "string"
}
GET /credentials
获取凭据列表
GET /credentials/:id/decrypted
获取解密凭据(需 MFA)
查询参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| securityToken | string | 安全令牌 |
9. 命令过滤 API
POST /command-filters
创建命令过滤器
请求体:
{
"name": "string",
"description": "string",
"rules": [
{
"pattern": "rm -rf",
"action": "deny",
"description": "禁止删除命令"
}
]
}
GET /command-filters
获取过滤器列表
POST /command-filters/:id/rules
添加过滤规则
请求体:
{
"pattern": "string",
"action": "allow|deny|audit",
"description": "string"
}
10. 授权策略 API
POST /strategies
创建授权策略
请求体:
{
"name": "string",
"description": "string",
"assetIds": ["id1", "id2"],
"userIds": ["id1", "id2"],
"commandFilterId": "string",
"authorizedTime": 3600,
"allowDownload": true,
"allowUpload": true,
"allowEdit": true,
"allowDelete": true,
"allowShare": true
}
GET /strategies
获取策略列表
PUT /strategies/:id
更新策略
DELETE /strategies/:id
删除策略
三、数据模型
User 用户模型
type User struct {
ID string `json:"id"`
Username string `json:"username"`
Password string `json:"-"`
Nickname string `json:"nickname"`
Mail string `json:"mail"`
Mobile string `json:"mobile"`
Status string `json:"status"`
Type string `json:"type"`
Source string `json:"source"`
Online bool `json:"online"`
TotpSecret string `json:"-"`
Created time.Time `json:"created"`
Updated time.Time `json:"updated"`
}
Asset 资产模型
type Asset struct {
ID string `json:"id"`
Name string `json:"name"`
Protocol string `json:"protocol"`
IP string `json:"ip"`
Port int `json:"port"`
AccountType string `json:"accountType"`
Username string `json:"username"`
Password string `json:"-"`
PrivateKey string `json:"-"`
Passphrase string `json:"-"`
CredentialId string `json:"credentialId"`
Description string `json:"description"`
Tags string `json:"tags"`
GroupId string `json:"groupId"`
GatewayId string `json:"gatewayId"`
Owner string `json:"owner"`
Active bool `json:"active"`
Created time.Time `json:"created"`
Updated time.Time `json:"updated"`
}
Session 会话模型
type Session struct {
ID string `json:"id"`
Protocol string `json:"protocol"`
UserId string `json:"userId"`
AssetId string `json:"assetId"`
ClientIp string `json:"clientIp"`
Width int `json:"width"`
Height int `json:"height"`
Status string `json:"status"`
Reviewed bool `json:"reviewed"`
Connected time.Time `json:"connected"`
Disconnected time.Time `json:"disconnected"`
}
Role 角色模型
type Role struct {
ID string `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Menus string `json:"menus"`
Created time.Time `json:"created"`
Updated time.Time `json:"updated"`
}
Credential 凭据模型
type Credential struct {
ID string `json:"id"`
Name string `json:"name"`
Type string `json:"type"`
Username string `json:"username"`
Password string `json:"-"`
PrivateKey string `json:"-"`
Passphrase string `json:"-"`
Created time.Time `json:"created"`
Updated time.Time `json:"updated"`
}
四、WebSocket 接口
SSH 终端 WebSocket
路径: /sessions/:id/ssh
消息类型:
| 类型 | 方向 | 描述 |
|---|---|---|
| data | 双向 | 终端数据 |
| resize | 客户端→服务端 | 窗口大小变化 |
| pause | 客户端→服务端 | 暂停会话 |
| resume | 客户端→服务端 | 恢复会话 |
| close | 双向 | 关闭连接 |
Guacamole WebSocket
路径: /sessions/:id/guacamole
消息格式: Guacamole 协议指令
五、权限系统
菜单权限
| 权限标识 | 描述 |
|---|---|
| dashboard | 仪表盘 |
| asset | 资产管理 |
| credential | 凭据管理 |
| identity | 身份管理 |
| user | 用户管理 |
| role | 角色管理 |
| department | 部门管理 |
| audit | 审计管理 |
| access-log | 访问日志 |
| login-log | 登录日志 |
| session | 会话管理 |
| authorised | 授权管理 |
| strategy | 授权策略 |
| command-filter | 命令过滤 |
| gateway | 网关管理 |
| setting | 系统设置 |
| sysops | 系统运维 |
操作权限
| 权限标识 | 描述 |
|---|---|
| asset:add | 添加资产 |
| asset:edit | 编辑资产 |
| asset:del | 删除资产 |
| user:add | 添加用户 |
| user:edit | 编辑用户 |
| user:del | 删除用户 |
| session:disconnect | 断开会话 |
| session:review | 审阅会话 |
文档生成时间: 2026-04-20