Files
est-api/README.md
2025-10-21 08:29:56 +00:00

114 lines
4.3 KiB
Markdown
Raw 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.

# est-api
EST 本地部署的后端 API包含两个子服务并通过统一入口启动
- 根路径 `/`平台框架接口frameworkapi
- 前缀 `/dsxapi`DSX 模拟器相关接口dsxapi
## 快速启动
```bash
# 安装依赖
npm install
# 启动统一入口(默认监听 3000
npm start
```
- 统一入口:`app.js`,将 `frameworkapi` 挂载到 `/``dsxapi` 挂载到 `/dsxapi`
- 端口:默认 `3000`
## 目录结构
- `/app.js` 统一入口,挂载两个子服务
- `/farmeworkapi/` 平台框架接口
- `.env` 环境变量文件(子服务加载)
- `farmeworkapi.js` 主入口
- `license/` 存放许可证(.lic
- `pub.pem`/`priv.pem` 公钥/私钥;`license_issuer.html` 颁发页面
- `network` 宿主机网络配置中转文件
- `/dsxapi/` DSX 模拟器接口
- `dsxapi.js` 主入口
- `competition_data/` 结束后持久化的比赛数据(.est
- `competition_tmp/` 比赛进行时的临时备份目录
- `connection_maps/connectionMap.json` 连接映射持久化
## 配置与环境变量
`farmeworkapi` 会加载其目录下 `.env`
```ini
# Database configuration
DB_HOST=est_mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDQMYcjqnrMnr9G
DB_NAME=login
# SurveyKing_DB_NAME
SurveyKing_DB_HOST=est_mysql
SurveyKing_DB_PORT=3306
SurveyKing_DB_USER=root
SurveyKing_DB_PASSWORD=MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDQMYcjqnrMnr9G
SurveyKing_DB_NAME=surveyking
# JWT configuration
JWT_SECRET=MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDQMYcjqnrMnr9G
# Server configuration
PORT=3000
```
## 路由与接口
以下路径均为统一入口下的最终路径。
### frameworkapi前缀 `/`
- `POST /login` AES(CBC) 加密的登录数据,成功返回 `token` 与用户等级
- `GET /check-auth`(鉴权)返回当前用户认证状态
- `POST /verify-token` 校验令牌有效性
- `GET /user-info`(鉴权)获取用户信息
- `GET /verify-admin`(鉴权)校验是否管理员
- `GET /admin/users`(鉴权)列出用户
- `POST /admin/users`(鉴权)新增/修改用户
- `DELETE /admin/users/:student_id`(鉴权)删除用户
- `GET /online-users`(鉴权)在线与历史统计
- `POST /update-activity`(鉴权)更新心跳/活跃时间
- `POST /logout`(鉴权)登出
许可证相关:
- `GET /public-key` 获取 RSA 公钥(用于前端加密)
- `GET /product-model` 返回产品型号(随许可证状态)
- `POST /upload-license` 上传 `.lic` 文件并验证form-data
- `GET /license-status` 许可证验证状态摘要
- `GET /license-info`(鉴权)许可证详细信息
网络配置:
- `GET /network-config`(鉴权)读取 `farmeworkapi/network`
- `POST /network-config`(鉴权)更新指定键:`BOOTPROTO``IPADDR``NETMASK``GATEWAY``DNS`
- `BOOTPROTO` 仅支持 `dhcp``static`
- `static` 时必须提供 `IPADDR``NETMASK``GATEWAY``DNS`
Survey 数据:
- `GET /survey-answers` 读取 SurveyKing 数据库中的问卷答案(具体查询参数以实现为准)
### dsxapi前缀 `/dsxapi`
连接映射:
- `GET /api/connectionMap?scene=XXX` 返回 `pass` 与指定场景合并后的映射
- `POST /api/connectionMap` 更新某场景映射(禁止修改 `pass`
- `POST /api/initConnectionMap` 恢复到初始映射并持久化
比赛流程:
- `POST /api/competition/start` 开始比赛,返回 `UUID`,每分钟写入临时备份到 `competition_tmp/<UUID>/`
- `POST /api/competition/end` 结束比赛,写入编码 `.est` 文件到 `competition_data/`
- `GET /api/competition/status` 查询是否进行中及 `UUID`、开始时间
- `POST /api/competition/data` 上传统计数据(需携带 `UUID``fingerprint``data`
- `GET /api/competition/data?UUID=...&fingerprint=...` 查询指定指纹数据(返回 `projects`
- `GET /api/competition/data` 返回当前全部统计数据快照
## 日志
- `farmeworkapi/server.log` 常规日志;`farmeworkapi/admin.log` 管理员操作日志
- dsxapi 独立运行时在控制台输出重要提示与告警
## Docker 与挂载建议
- 挂载 `farmeworkapi/license/` 以便导入许可证
- 挂载 `farmeworkapi/network` 供网络配置接口读写
- 挂载 `/hardware_serial` 到容器内,提供硬件序列号以完成许可证绑定
- 可选择将 `dsxapi/competition_data/``dsxapi/competition_tmp/` 映射到持久卷