f2d89a6d61dfc8e8d90f3b418b64dfe5dc323c6b
ci/woodpecker/tag/build Pipeline was successful
背景:山东农业大学、云南警官学院的辅导猫请假应用均为 HTTP 420「产品已到期」,
两校实际使用各自学校的学工平台请假,与辅导猫无关,需要按学校单独适配。
1. 新增 LeaveFlavorXsgz / LeaveFlavorXsfw 两个 flavor,leave_flavor.go 按
schoolId 优先分流(静态映射,不参与探测缓存),其他学校仍走原 new/old 流程。
2. leave_xsgz.go —— 三易拓「新学工5」(山东农业大学 xsgz.sdau.edu.cn):
CAS(含 wisedu 滑块) → ST → RSA 加密 ticket → /api/cas/callback 换 access_token
→ /api/leave/* 查询。关键细节:
- /api/cas/callback 必须用 application/x-www-form-urlencoded 的 `ticket=xxx`
表单串(用 JSON 会被服务端返回 500);
- RSA 是 RSAUtils 自定义格式(非 PKCS#1):encodeURIComponent(DK+ticket) 按
charCode 小端装 BigInt,chunkSize=模数字节数-2,输出 hex+空格分隔;
- 公钥盐 DK 每次请求都变,必须与模数同批取用。
已用真实前端 security.js 生成向量交叉验证算法逐字节一致;
端到端实测登录/请假列表/类型/表单字段全部通过。
3. leave_xsfw.go —— 金智 xsfw 学工「学生请假」(云南警官学院):
突破点:辅导猫登录拿到的 MOD_AUTH_CAS(ST-iap 格式)在 xg 学工域无效,
需用 CASTGC 到 authserver 重新换一次 service 指向学工应用的票据,
回调后 xg 域会话才建立(应用首页返回完整 HTML,含 WIS_CONFIG/APPID/APPNAME)。
另修复该校响应的多重 UTF-8 BOM(标准 json.Unmarshal 会直接失败)。
遗留:modules 业务接口仍 403,待真实抓包确认所需请求头。
4. 单测覆盖 RSA 加密向量、encodeURIComponent 边界、BOM 剥离(含前置空白组合)、
schoolId 分流映射。go build/vet/test 全绿。
Description
No description provided
Languages
Go
58.2%
Vue
35.3%
TypeScript
4.1%
CSS
1.5%
JavaScript
0.6%
Other
0.2%