Skip to content

项目结构

yunyiradius/
├── main.go                    # 入口文件
├── go.mod / go.sum            # Go 模块定义
├── yunyiradius.dev.yml        # 开发环境配置
├── yunyiradius.prod.yml       # 生产环境配置(参考)

├── config/                    # 配置定义
│   └── config.go              # 全局配置结构与加载

├── internal/                  # 内部包
│   ├── adminapi/              # 管理后台 API 处理层
│   │   ├── auth.go            #   认证(登录/JWT/速率限制)
│   │   ├── users.go           #   用户 CRUD + 导入
│   │   ├── nas.go             #   NAS 设备管理
│   │   ├── nodes.go           #   网络节点管理
│   │   ├── sessions.go        #   在线会话管理
│   │   ├── finance.go         #   财务管理(充值/退款)
│   │   ├── strategy.go        #   套餐/策略管理
│   │   ├── policy.go          #   接入策略管理
│   │   ├── portal.go          #   Portal 认证
│   │   ├── portal_mgmt.go     #   Portal 模板管理
│   │   ├── user_portal.go     #   用户门户 API
│   │   ├── sms.go             #   短信配置与发送
│   │   ├── system_backup.go   #   系统备份/恢复
│   │   └── ...
│   │
│   ├── app/                   # 应用核心
│   │   ├── app.go             #   应用生命周期
│   │   ├── database.go        #   数据库连接
│   │   ├── redis.go           #   Redis 客户端
│   │   └── config_manager.go  #   动态配置管理
│   │
│   ├── domain/                # 数据模型 (GORM)
│   │   ├── radius.go          #   RADIUS 用户模型
│   │   ├── network.go         #   NAS/节点模型
│   │   ├── access_policy.go   #   接入策略模型
│   │   └── ...
│   │
│   ├── radiusd/               # RADIUS 协议引擎
│   │   ├── auth_pipeline.go   #   认证流水线
│   │   ├── radius.go          #   RADIUS 服务核心
│   │   ├── plugins/           #   认证插件(PAP/CHAP/EAP)
│   │   └── repository/        #   数据仓储层
│   │
│   ├── sms/                   # 短信网关
│   │   ├── sms.go             #   短信发送(阿里云/腾讯云)
│   │   └── code_store_redis.go #  Redis 验证码存储
│   │
│   └── webserver/             # Web 服务
│       └── server.go          #   Echo 路由注册

├── pkg/common/                # 公共工具包
│   ├── crypto_field.go        #   字段级 AES-GCM 加密
│   ├── password.go            #   密码哈希 (bcrypt)
│   ├── totp.go                #   TOTP 二步验证
│   └── ...

├── web/                       # 管理前端 (Vue 3 + Element Plus)
│   ├── src/
│   │   ├── views/             #   页面组件
│   │   ├── api/               #   API 客户端
│   │   ├── router/            #   路由配置
│   │   └── i18n/              #   国际化 (zh-CN / en-US)
│   └── static.go              #   Go embed 前端静态资源

├── web-user/                  # 用户门户 (Vue 3 独立 SPA)
│   ├── src/
│   │   ├── views/             #   登录/注册/账号管理
│   │   ├── components/        #   通用组件
│   │   └── router/            #   路由 (hash mode)
│   └── vite.config.js

└── docs/                      # 项目文档 (VitePress)
    └── guide/                 #   用户指南

关键设计决策

嵌入式前端

管理前端构建产物通过 Go 的 //go:embed 嵌入到二进制中,单文件部署无需额外 Web 服务器。

字段级加密

敏感字段(用户密码、NAS 密钥、SMS 凭证)使用 AES-256-GCM 加密存储,密钥从 Web.Secret 派生,加解密透明。

双前端架构

  • web/:管理后台,面向运维人员,含完整功能菜单
  • web-user/:用户门户,面向终端用户,独立路由 (hash mode)

数据库兼容

开发/小规模部署使用 SQLite(零依赖),生产环境切换 PostgreSQL(通过 database.type 配置项)。

YunyiStudio 版权所有