Open Vela Authorization Manager — 快应用/嵌入式设备的授权、订单履约、动态遥测与云控管理系统。
- 订单履约与自动补单:
- 支持接收爱发电 Webhook 实时回调,自动核验并激活设备
- 内置定时后台对账协程,自动轮询爱发电 API 补单
- 支持后台手动创建订单、一键拉取爱发电订单同步
- 设备授权与订单改配:
- 基于 SKU 与有效期的设备授权管理,支持行级事务锁防止并发冲突
- 支持订单快速改配(换绑目标产品、调整 SKU 档位或设备 ID,并可立即重新计算设备到期时间)
- License 签发:RSA 签名 License,支持客户端在线/离线验签,支持永久授权与按时长续费叠加
- 多产品动态遥测 (Telemetry):
- 产品级独立遥测配置(自定义启动/活跃事件、行为统计白名单、每日聚合)
- 数据大盘可视化(近 30 天 DAU 趋势、启动频次、设备硬件代号分布、应用版本分布)
- 单设备精准管理(支持按时长/永久黑名单封禁并自定义拦截提示,支持设备级功能开关覆盖)
- 云控中心:结构化配置下发(公告推送、维护模式、功能开关 Feature Toggles、版本更新提醒)
- 现代化管理后台:Material Design 3 风格 Web UI(纯 Go 单文件通过
embed.FS嵌入打包,无需额外静态服务器),支持多产品快速切换 - 安全与免密登录:
- bcrypt 密码哈希 + TOTP 双因素认证(强制 2FA)
- JWT 默认 7 天有效 / 支持勾选【30天免密登录】
- 内置无感滑动续期(API 交互自动静默延长 Token 寿命)
- 密钥本地持久化(重启服务或拉取更新后无需反复扫码登录)
- 审计日志:完整记录管理员关键操作行为与审计回溯
- 后端:Go 1.23+ + Gin + GORM + SQLite(
github.com/glebarez/sqlite纯 Go 驱动) - 前端:Material Web Components + Lit HTML(单文件嵌入)
- 认证:bcrypt + TOTP + JWT(默认7天/支持30天免密,无感滑动续期)
- 构建:纯 Go 零 CGO 依赖,支持全平台一键交叉编译
git clone https://github.com/yourusername/ovam.git
cd ovamcp .env.example .env编辑 .env:
# 管理员认证(必需)
OVAM_ADMIN_PASSWORD=your-secure-password
OVAM_TOTP_SECRET=your-totp-secret
# 爱发电配置(如使用)
OVAM_AFDIAN_USER_ID=your-user-id
OVAM_AFDIAN_API_TOKEN=your-api-token
AFDIAN_WEBHOOK_TOKEN=your-webhook-token
# JWT 签名密钥(可选,未设置时系统会自动持久化存储于 data/.jwt_secret)
OVAM_JWT_SECRET=your-jwt-secret
# JWT 过期小时数(可选,默认 168 小时即 7 天;勾选记住登录时为 30 天)
OVAM_JWT_EXPIRE_HOURS=168
# 产品私钥(通过 private_key_env 关联)
OVAM_OMUSIC_VELA_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----生成 TOTP Secret:
打开 tools/generate-totp.html(本地文件),使用 Google/Microsoft Authenticator 扫描生成的二维码。
编辑 config.yaml:
server:
port: 5050
run_mode: release
database:
path: ./data/ovam.db
max_open_conns: 1
enable_wal: true
afdian:
user_id: ${OVAM_AFDIAN_USER_ID}
api_token: ${OVAM_AFDIAN_API_TOKEN}
webhook_token: ${AFDIAN_WEBHOOK_TOKEN}
auto_sync: true # 开启后台定时轮询自动补单
sync_interval_min: 5 # 补单轮询间隔(分钟)
products:
- slug: your_product
name: 产品名称
plan_id: 爱发电方案ID
private_key_env: ENV_KEY_NAME
telemetry: # 动态遥测配置
enabled: true # 开启该产品遥测
startup_event: app_start
allowed_behaviors: # 允许统计的行为白名单(留空表示允许全部)
- open_menu
- open_search
- play_music
daily_aggregation: true # 开启每日按日期聚合统计
skus:
- alias: m
sku_id: 爱发电SKU-ID
amount: "5.00"
duration_days: 30
plan_name: 一个月
- alias: f
sku_id: 爱发电SKU-ID
amount: "50.00"
duration_days: -1
plan_name: 永久# Linux AMD64(默认)
./build.sh
# 其他平台
./build.sh linux arm64
./build.sh darwin arm64
./build.sh windows amd64./dist/ovam-linux-amd64访问 http://localhost:5050,使用密码 + TOTP 验证码登录管理控制台。
ovam/
├── main.go # 入口、DB 初始化与优雅停机
├── internal/
│ ├── app/ # 全局 State 状态容器
│ ├── config/ # 配置加载、环境变量映射、热重载
│ ├── handler/ # HTTP 控制器 (核心业务与管理端 API)
│ ├── middleware/ # JWT 鉴权中间件、登录频控、滑动续期
│ ├── model/ # 数据模型 (通用遥测、设备、订单、管理员表)
│ ├── router/ # 路由注册与 embed.FS 前端静态资源挂载
│ ├── service/ # License 签发、订单处理/快速改绑、爱发电补单服务
│ ├── utils/ # RSA 签名算法、TOTP/密码校验、爱发电 API 客户端
│ └── worker/ # 异步事件队列与后台自动补单定时协程
├── config.yaml # 产品、SKU、云控及遥测配置
├── .env # 敏感私钥与凭证(gitignored)
└── tools/
└── generate-totp.html # TOTP 密钥与二维码生成工具
详见 docs/API.md。
MIT License — 详见 LICENSE。