Skip to content

RemoteCI

CI

RemoteCI 是 ClassIsland 2.x、ASP.NET Core 服务端和 Wear OS 手表组成的课表联动系统,统一使用账号、设备会话和细粒度权限控制公网与局域网操作。

已实现

  • 服务端:ASP.NET Core Identity、SQLite 迁移、PBKDF2 密码哈希、1 小时访问令牌、30 天可撤销设备会话和完整 Razor WebUI。
  • 权限:管理员固定拥有全部权限;普通用户默认可查看当前课程和 WebUI 七日课表,可分别附加概览、人员管理、发送与清除通知、老师来了、换课、扩展功能、主界面和电源控制权限。
  • 同步:服务端是账号与权限唯一真源,通过插件 WebSocket 自动同步不含密码的授权镜像;镜像离线超过 24 小时后只允许课程展示。
  • 局域网:手表不发送密码或云端访问令牌,使用设备会话派生验证器完成一次性 HMAC 挑战认证;登录页可扫描同一局域网的插件(UDP 发现 + 引导)自动填写云端地址与电脑 IP。
  • 课表:状态按秒推送,七日课表单独低频同步;所有已登录账号都能在 WebUI 查看并手动拉取七日课表,拥有换课权限的账号还可配置自动拉取或修改课表;插件推送、WebUI 拉取、手表拉取、自动拉取和连接初始化共享同一个任务锁,运行中会在各端显示来源并拒绝重复任务;换课用修订号防止并发覆盖。
  • 通知:WebUI 或手表发送的消息先由 ClassIsland 正式通知提供方显示,成功后再广播给手表。
  • 手表:设备密钥由 Android Keystore AES-GCM 保护;普通用户界面只显示当前课程,五类消息可按设备单独开关;可在“设置 → 外观”切换 Material Design 3 配色方案,并自动适配圆形与矩形屏幕;云端中转默认保持开启,关闭入口仅位于开发者设置,且密码登录始终可临时使用云端完成认证。
  • 更新:Windows、Linux 与 Docker WebUI 可安全更新,WebUI 与手表均可选择正式版/Beta 渠道并对同版本强制覆盖;V3 客户端只选择 v3.x.x Release,手表不再受 WebUI 软件小版本上限限制;服务端只替换实际程序集目录,Development 环境禁用在线覆盖;fnOS 由应用商店管理;插件由 ClassIsland 插件市场管理。

不存在真实 ClassIsland 写入能力的“切换单双周”功能已经移除。

目录

目录 内容
shared/ C# V3 协议与共享 DTO
server/ ASP.NET Core 服务端、Razor WebUI、Identity/SQLite
plugin/ ClassIsland 2.x 插件与 CIPX 构建
wearos/ Kotlin/Compose for Wear OS 应用
fnos/ 飞牛 fnOS 应用(fpk)工程与打包脚本
docs/ 协议、部署和平台说明

构建与测试

dotnet restore RemoteCI.slnx
dotnet test RemoteCI.slnx -c Release --no-restore

dotnet build plugin/RemoteCI.Plugin/RemoteCI.Plugin.csproj -c Release
dotnet build plugin/RemoteCI.Plugin/RemoteCI.Plugin.csproj -c Release -p:CreateCipx=true

cd wearos
$env:JAVA_HOME="C:\path\to\jdk-17"
.\gradlew.bat testDebugUnitTest assembleDebug

手表构建需要 JDK 17 和 Android SDK;本机开发脚本见 wearos/dev.ps1

当前三端软件版本为 3.1.0。部署和首次配对见 部署文档,消息格式见 协议 V3

飞牛 fnOS 用户可以从 GitHub Releases 下载 RemoteCI-<版本>.fpk 直接在应用中心安装, 安装、更新与开发说明见 fnos/README.md

许可

项目使用 GPLv3,第三方依赖见 THIRD_PARTY_NOTICES.md

一键构建 CIPX

Windows 下双击仓库根目录的 Build-Latest-Cipx.cmd,脚本会先弹出“另存为”对话框。选择保存位置后,脚本会读取 plugin/RemoteCI.Plugin/manifest.yml 中的当前版本,自动执行 Release 构建并将最新 .cipx 复制到选定位置。

构建成功后会显示实际保存路径、插件版本和 SHA-256 校验值。构建失败时会弹出错误提示,并保留命令窗口供查看详细输出。

脚本也支持命令行调用,便于自动化验证:

powershell.exe -NoProfile -STA -ExecutionPolicy Bypass -File .\Build-Latest-Cipx.ps1 -OutputPath C:\Temp\RemoteCI.Plugin.cipx -NoPrompt

About

RemoteCI:由手表端,插件端,服务端组成的ClassIsland课表查看与控制系统

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages