Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

ENAL-rs | 希沃白板自动登录 生锈版

ENAL-rs(EasiNoteAutoLogin 衍生版)是基于 RustAxum 构建的希沃(Seewo)账号管理与单点登录(SSO)代理服务,为希沃系软件提供记住密码自动登录能力。

配套的 Next.js 管理面板可提供便捷可视化的账号管理、系统设置与扫码登录等能力。

(经过一番激烈的思想斗争后决定不开源,但是放出 README 和技术栈详情)

在线面板 · 本地入口

⚡ 软件下载

Github · CNB · 123云盘

✨ 核心特性

  • 🔐 本地加密:账号数据与系统设置均使用 AES-256-GCM 加密,密钥由本机机器码派生,数据不落地明文。
  • 🔄 账户代理:在特定路径返回可供希沃 SSO 识别的账户列表;开启 alternate 后支持滚动展示账号,适配 6+ 账号。
  • 🗂️ 便捷管理:通过 API 提供便捷的账号增删改查服务,并可以动态调整监听地址、授权过期时间、静默运行/滚动列表/锁定登录等开关。
  • 🔑 多元登录:支持账密、扫码登录或直接通过令牌登录。
  • 🧩 生态兼容:不仅支持 EasiNote(希沃白板) ,还支持 EasiCare(班级优化大师) 等支持 SSO 单点登录的希沃系软件。
  • 🛡️ 自动续期:自动检测令牌过期并刷新,确保登录状态持续。
  • 🔌 过期控制:可设置授权到期时间,过期后可选择锁定阻断登录或自动清除本地配置文件。
  • 🪟 小巧静默:单文件软件体积小巧不耗性能,支持设置为无控制台窗口静默运行,便于放置在公共大板环境。
  • 🌐 跨平台:支持 Windows / Linux / macOS,API 默认开启跨域(CORS),方便本地面板或第三方前端调用。

🛠️ 技术栈

后端(enal-rs)

  • 语言: Rust
  • Web 框架: Axum + Tokio
  • HTTP 客户端: reqwest
  • TLS 服务: axum-server + rustls
  • 跨域支持: tower-http
  • 序列化: serde / serde_json
  • 加密: aes-gcm / aespbkdf2 + hmac + sha2md-5rand

前端(enal-panel)

🚀 快速开始

后端

# 使用 Cargo 编译并运行(默认监听 0.0.0.0:24300)
cargo run --release

# 查看本机机器码(关闭静默模式时控制台输出)
# 启动后访问 http://<host>:<port> 即可

SSO 接口

方法 路径 说明
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 四种组合在三大平台分别构建。各特性差异如下:

normal(默认构建,推荐)

  • 仅启用 HTTP 服务(默认 0.0.0.0:24300)。
  • 可供 EasiNote(希沃白板) 等无需 HTTPS SSO 接口的软件使用。
  • /ops 路径会 永久重定向 到示例面板 https://enal.02000721.xyz,因此依赖外网访问面板。
  • 不编译 TLS 与静态资源嵌入相关代码,二进制体积最小。
  • 若大版本更新数据模型时,本机软件未升级,在线面板管理可能出现数据不兼容,需更新软件至新版。

offline(离线面板)

  • 借助 rust-embed 将前端面板产物编译进二进制
  • 不需要使用外部 SPA 面板,仍然建议使用在线面板
  • 面板与软件同步编译、版本始终一致,不需要更新软件本体也可正常使用面板。

ssl(支持 HTTPS SSO 接口)

  • 启用 axum-server + rustls,按系统设置中的 port_ssl(默认 23300)端口提供 HTTPS 服务
  • 可供 EasiCare(班级优化大师) 等依赖 HTTPS SSO 接口的软件使用。
  • 证书来源按以下优先级自动解析:
    1. 同目录用户自带明文证书 cert.pem / key.pem,或遗留的 fullchain.pem / privkey.pem
    2. 同目录已存在的加密证书文件(.enc);
    3. 从云端下载证书;
    4. 以上皆不可用时回退到 内置默认证书
  • port_sslport 相同时自动关闭 HTTPS,避免端口冲突。
  • 默认构建(normal)仍可保存 port_ssl 配置,但不会真正启动 SSL 服务。

ssl-offline(完全体)

  • 同时具备 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 或与我联系

About

希沃白板自动登录 - 希沃账号管理与单点登录代理服务,为希沃系软件提供记住密码自动登录能力。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors