1d395a5943c81727b7f4de2937c7df42e5c14f45
est-api
EST 本地部署的后端 API,包含两个子服务并通过统一入口启动:
- 根路径
/:平台框架接口(frameworkapi) - 前缀
/dsxapi:DSX 模拟器相关接口(dsxapi)
快速启动
# 安装依赖
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:
# 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 /loginAES(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/networkPOST /network-config(鉴权)更新指定键:BOOTPROTO、IPADDR、NETMASK、GATEWAY、DNSBOOTPROTO仅支持dhcp或staticstatic时必须提供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/映射到持久卷
Description
Languages
JavaScript
84.5%
HTML
15.5%