ENAL-rs(EasiNoteAutoLogin 衍生版)是基于 Rust 与 Axum 构建的希沃(Seewo)账号管理与单点登录(SSO)代理服务,为希沃系软件提供记住密码自动登录能力。
配套的 Next.js 管理面板可提供便捷可视化的账号管理、系统设置与扫码登录等能力。
(经过一番激烈的思想斗争后决定不开源,但是放出 README 和技术栈详情)
- 🔐 本地加密:账号数据与系统设置均使用 AES-256-GCM 加密,密钥由本机机器码派生,数据不落地明文。
- 🔄 账户代理:在特定路径返回可供希沃 SSO 识别的账户列表;开启
alternate后支持滚动展示账号,适配 6+ 账号。 - 🗂️ 便捷管理:通过 API 提供便捷的账号增删改查服务,并可以动态调整监听地址、授权过期时间、静默运行/滚动列表/锁定登录等开关。
- 🔑 多元登录:支持账密、扫码登录或直接通过令牌登录。
- 🧩 生态兼容:不仅支持
EasiNote(希沃白板),还支持EasiCare(班级优化大师)等支持 SSO 单点登录的希沃系软件。 - 🛡️ 自动续期:自动检测令牌过期并刷新,确保登录状态持续。
- 🔌 过期控制:可设置授权到期时间,过期后可选择锁定阻断登录或自动清除本地配置文件。
- 🪟 小巧静默:单文件软件体积小巧不耗性能,支持设置为无控制台窗口静默运行,便于放置在公共大板环境。
- 🌐 跨平台:支持 Windows / Linux / macOS,API 默认开启跨域(CORS),方便本地面板或第三方前端调用。
- 语言: Rust
- Web 框架: Axum + Tokio
- HTTP 客户端: reqwest
- TLS 服务: axum-server + rustls
- 跨域支持:
tower-http - 序列化:
serde/serde_json - 加密:
aes-gcm/aes、pbkdf2+hmac+sha2、md-5、rand
- 框架: Next.js 16(App Router)
- UI 库: Ant Design 6
- 语言: TypeScript 5 + React 19
# 使用 Cargo 编译并运行(默认监听 0.0.0.0:24300)
cargo run --release
# 查看本机机器码(关闭静默模式时控制台输出)
# 启动后访问 http://<host>:<port> 即可| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /getData/SSOLOGIN |
获取 SSO 账户列表 |
| GET | /getData/SSOLOGIN/:phone |
获取 SSO 账户令牌 |
| POST | /saveData |
(临时)保存 SSO 数据 |
| DELETE | /deleteData |
(临时)删除 SSO 数据 |
以下接口均需在请求头携带 Authorization: Bearer <password> 进行鉴权。
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /ops/account |
获取账号列表 |
| POST | /ops/account |
更新账号数据 |
| DELETE | /ops/account |
删除账号数据 |
| GET | /ops/system |
获取系统设置 |
| POST | /ops/system |
修改系统设置 |
| POST | /ops/check |
校验令牌 |
| POST | /ops/exchange |
刷新令牌 |
| GET | /ops/qr |
获取扫码登录二维码 |
cd panel
npm install
npm run dev # 开发模式,访问 http://localhost:3000
# 或
npm run build && npm run start后端通过 Cargo 特性编译出不同能力的二进制,CI 会针对 normal / offline / ssl / ssl-offline 四种组合在三大平台分别构建。各特性差异如下:
- 仅启用 HTTP 服务(默认
0.0.0.0:24300)。 - 可供
EasiNote(希沃白板)等无需 HTTPS SSO 接口的软件使用。 /ops路径会 永久重定向 到示例面板https://enal.02000721.xyz,因此依赖外网访问面板。- 不编译 TLS 与静态资源嵌入相关代码,二进制体积最小。
- 若大版本更新数据模型时,本机软件未升级,在线面板管理可能出现数据不兼容,需更新软件至新版。
- 借助
rust-embed将前端面板产物编译进二进制。 - 不需要使用外部 SPA 面板,
仍然建议使用在线面板。 - 面板与软件同步编译、版本始终一致,不需要更新软件本体也可正常使用面板。
- 启用
axum-server+rustls,按系统设置中的port_ssl(默认23300)端口提供 HTTPS 服务。 - 可供
EasiCare(班级优化大师)等依赖 HTTPS SSO 接口的软件使用。 - 证书来源按以下优先级自动解析:
- 同目录用户自带明文证书
cert.pem/key.pem,或遗留的fullchain.pem/privkey.pem; - 同目录已存在的加密证书文件(
.enc); - 从云端下载证书;
- 以上皆不可用时回退到 内置默认证书。
- 同目录用户自带明文证书
- 当
port_ssl与port相同时自动关闭 HTTPS,避免端口冲突。 默认构建(normal)仍可保存port_ssl配置,但不会真正启动 SSL 服务。
- 同时具备
offline(内置面板)与ssl(HTTPS)能力。
# 默认(normal)
cargo build --release
# 仅离线面板
cargo build --release --features offline
# 仅 HTTPS
cargo build --release --features ssl
# 离线 + HTTPS
cargo build --release --features "ssl offline"注:
offline特性需要先在panel/目录执行npm run build(生成panel/out/)后才能正确嵌入。
本 README 文档由 AI 辅助生成。如有问题,请提交 Issue 或与我联系!