Skip to content

Repository files navigation

OVAM

Open Vela Authorization Manager — 快应用/嵌入式设备的授权与订单管理系统。

功能

  • 订单管理:接收爱发电 Webhook,自动处理订单并授权设备
  • 设备授权:基于 SKU 和时长的设备激活管理
  • License 签发:RSA 签名 License,支持永久/限时授权
  • 云控中心:结构化配置下发(公告、维护模式、功能开关、更新推送)
  • 管理后台:Material Design 3 风格的 Web UI,支持产品/SKU/设备/订单管理
  • 审计日志:完整记录管理员操作
  • 双因素认证:密码 + TOTP(时间同步一次性密码)

技术栈

  • 后端:Go 1.23 + Gin + GORM + SQLite
  • 前端:Material Web Components + Lit HTML(单文件嵌入)
  • 认证:bcrypt + TOTP + JWT(30分钟有效期)
  • 构建:纯 Go,支持 CGO-free 交叉编译

快速开始

1. 下载

git clone https://github.com/yourusername/ovam.git
cd ovam

2. 配置环境变量

cp .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

# JWT 签名密钥(可选,未设置则每次启动随机生成)
OVAM_JWT_SECRET=your-jwt-secret

# 产品私钥(通过 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 扫描生成的二维码。

3. 编译

# Linux AMD64(默认)
./build.sh

# 其他平台
./build.sh linux arm64
./build.sh darwin arm64
./build.sh windows amd64

4. 运行

./dist/ovam-linux-amd64

访问 http://localhost:5050,使用密码 + TOTP 验证码登录。

配置产品

编辑 config.yaml

products:
  - slug: your_product
    name: 产品名称
    plan_id: 爱发电方案ID
    private_key_env: ENV_KEY_NAME
    skus:
      - alias: m
        sku_id: 爱发电SKU-ID
        duration_days: 30
        plan_name: 一个月

架构

ovam/
├── main.go                  # 入口
├── internal/
│   ├── config/             # 配置加载
│   ├── handler/            # HTTP handlers
│   ├── middleware/         # JWT 认证、速率限制
│   ├── model/              # 数据模型
│   ├── router/             # 路由 + 嵌入前端
│   ├── service/            # 业务逻辑
│   ├── utils/              # 工具函数
│   └── worker/             # 异步队列
├── config.yaml             # 产品配置
├── .env                    # 敏感配置(gitignored)
└── tools/
    └── generate-totp.html  # TOTP 生成工具

API 文档

详见 docs/API.md

开源许可

MIT License — 详见 LICENSE

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages