Skip to content

About

中国农业大学成绩监控 Ubuntu/ECS 服务器版,支持 EasierConnect、飞书通知与自动绩点计算

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

CAU Grade Monitor Server

CI

面向 Ubuntu Server 24.04 x86_64 的中国农业大学成绩监控工具。程序通过 EasierConnect 兼容 SOCKS5 隧道访问教务系统,使用持久化的无界面 Chromium 每分钟主动查询成绩,并在出现新成绩或成绩变化时通过飞书机器人通知。

本仓库只包含服务器版。Windows GUI 和普通桌面用法位于 THexagram/Cau-Grade-Monitor。

功能

  • systemd 同时管理 VPN 隧道和成绩监控,开机自动恢复。
  • 使用教务系统独立账号密码直接登录,不依赖浏览器 Cookie。
  • 每 60 秒重新请求成绩接口,不复用静态页面结果。
  • 新成绩通知包含课程名、成绩、学分和当前加权绩点。
  • 默认将必修与体育类课程计入绩点,可通过配置增加或排除课程。
  • 凭据保存为 root 专用的 0600 文件,并通过 systemd credentials 提供。
  • Chromium 采用低资源模式,服务设置内存上限和自动重启策略。
  • 提供 Windows 与 ECS 单点 VPN 账号的安全切换脚本。

运行条件

  • Ubuntu Server 24.04 x86_64。
  • 至少约 1 GiB 内存,低内存实例建议配置 2 GiB swap。
  • 可访问 vpn.cau.edu.cn 的网络。
  • CAU VPN 账号、教务系统直登账号和直登密码。
  • 可选的飞书群机器人 Webhook 与签名密钥。

教务系统直登密码是 /jsxsd/xk/LoginToXk 使用的独立密码,不一定与统一身份认证 或 VPN 密码相同。

构建完整包

在 Ubuntu 24.04 x86_64 上执行:

git clone https://github.com/THexagram/Cau-Grade-Monitor-Server.git
cd Cau-Grade-Monitor-Server
chmod +x build-package.sh install.sh uninstall.sh bin/*
./build-package.sh

构建脚本会下载固定版本的 Go、Node.js 和 Chromium Headless Shell,并从固定提交 编译 CAU 兼容的 NJUConnect 派生客户端。结果位于 dist/:

CauGradeMonitor-Server-v*-linux-x64.tar.gz
CauGradeMonitor-Server-v*-linux-x64.tar.gz.sha256

也可以在 GitHub Actions 的 Build package 工作流中手动生成构建产物。

安装

将完整包上传到服务器后执行:

tar -xzf CauGradeMonitor-Server-v*-linux-x64.tar.gz
cd CauGradeMonitor-Server-v*-linux-x64
sudo ./install.sh

安装器会创建受限用户 caugrade,安装 Chromium 运行库,并依次询问:

  1. VPN 账号与密码。
  2. 教务系统直登账号与独立密码。
  3. 飞书机器人 Webhook 与可选签名密钥。

配置完成后检查:

sudo cau-grade-monitor-status

正常状态应包括两个 active 服务、127.0.0.1:1080 监听端口,以及类似 No change. Rows=24; source=fetch. 的监控日志。实际课程数量以账号为准。

日常操作

# 查看状态
sudo cau-grade-monitor-status

# 跟踪成绩监控日志
sudo journalctl -u cau-grade-monitor.service -f

# 跟踪 VPN 日志
sudo journalctl -u cau-vpn.service -f

# 重新填写凭据
sudo cau-grade-monitor-configure

# 重启服务
sudo systemctl restart cau-vpn.service
sudo systemctl restart cau-grade-monitor.service

配置位于 /etc/cau-grade-monitor/,浏览器资料和成绩状态位于 /var/lib/cau-grade-monitor/。应用文件安装在 /opt/cau-grade-monitor/。

Windows 与 ECS 切换 VPN

同一个 VPN 账号不能同时在 Windows 和 ECS 登录。切换到 Windows 前,在本机 PowerShell 7 执行:

pwsh ./tools/Enter-WindowsVpnMode.ps1 `
  -Server 203.0.113.10 `
  -User ecs-user `
  -IdentityFile "$HOME/.ssh/your-ecs-key.pem"

脚本确认云端两个服务均为 inactive 后,再登录 Windows EasyConnect。

切回服务器时,必须先在 Windows EasyConnect 中选择“注销登录”并确认,而不是 只关闭窗口。等待约一分钟后执行:

pwsh ./tools/Restore-ServerMonitor.ps1 `
  -Server 203.0.113.10 `
  -User ecs-user `
  -IdentityFile "$HOME/.ssh/your-ecs-key.pem"

示例中的 203.0.113.10 是文档保留地址,请替换为自己的 ECS 公网地址。

绩点规则

默认只统计必修与体育类课程,并按学分加权:

成绩 绩点 成绩 绩点
A+ / A 4.0 A- 3.7
B+ 3.3 B 3.0
B- 2.7 C+ 2.3
C 2.0 D+ 1.5
D 1.0 F 0

可编辑 /etc/cau-grade-monitor/monitor.json 中的 gpa 配置,按课程类型、课程 标识设置计入和排除规则。修改后重启监控服务。

安全说明

  • 仓库和公开构建产物不包含账号、密码、Webhook、私钥、Cookie 或成绩数据。
  • 不要在 Issue、截图或完整日志中提交个人信息和会话标识。
  • 遇到验证码、短信、OTP、二维码确认、账号锁定或密码过期时,自动登录会停止, 不会尝试绕过安全验证。
  • 本工具仅用于本人账号的低频成绩查询。请遵守学校网络和教务系统使用规定。

本仓库目前未授予开源许可证。第三方依赖和派生 VPN 客户端的说明见 THIRD_PARTY_NOTICES.md。

卸载

sudo /opt/cau-grade-monitor/uninstall.sh

默认保留配置和运行状态。彻底删除:

sudo /opt/cau-grade-monitor/uninstall.sh --purge

About

中国农业大学成绩监控 Ubuntu/ECS 服务器版,支持 EasierConnect、飞书通知与自动绩点计算

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages