A CLI client for PKU's campus card system (Synjones platform at bdcard.pku.edu.cn).
crates/campuscard/app_id="portal2017") → portal → berserker-auth → JWTsynjones-auth headerPKUANDROID) and http1_only() (server rejects HTTP/2)src/main.rs — Clap CLI with subcommandssrc/commands.rs — Command implementationssrc/api.rs — API client with synjones-auth header injectionsrc/display.rs — Terminal output, QR code renderingsrc/client.rs — reqwest client with mobile UA and HTTP/1.1 enforcement| Command | Alias | Function |
|---|---|---|
| --------- | ------- | ---------- |
login / logout / status | IAAA → portal → berserker → JWT | |
info | Card balance and details | |
pay | Display payment QR code in terminal | |
recharge | Top up card balance | |
bills | ls | Transaction history (pagination, monthly filter) |
stats | Monthly spending statistics | |
otp | TOTP 2FA management |
# Check session status
info-auth check
# Auto-login (reads credentials from OS keyring, no password needed)
campuscard login -p
PKUANDROID) or requests will be rejectedhttp1_only() — the Synjones server does not support HTTP/2info_common::qr (viuer or system viewer)anyhow::Result with .context("中文描述")~/.config/info/campuscard/info_common::credential (keyring → env → interactive)共 1 个版本