Files
flvx/vitepress/project-structure.md
T
2025-06-27 14:49:43 +08:00

267 lines
12 KiB
Markdown

# 项目结构
哆啦A梦是一个基于微服务架构的现代化网络转发面板,采用前后端分离设计,集成了多个核心组件。
::: tip 需要帮助?
📱 [加入 Telegram 群组](https://t.me/+wdVDni1fdyI0YzE1) | 🐛 [GitHub Issues](https://github.com/bqlpfy/forward-panel/issues) | 🚀 [快速开始](/getting-started)
:::
## 总体架构
```
forward-panel/
├── 部署配置文件
├── 转发引擎 (go-gost)
├── 后端服务 (Spring Boot)
├── 前端界面 (Vue.js)
└── 文档站点 (VitePress)
```
## 完整目录结构
```
forward-panel/
├── docker-compose-v4.yml # IPv4 环境部署配置
├── docker-compose-v6.yml # IPv6 环境部署配置
├── gost.sql # MySQL 数据库初始化脚本
├── panel_install.sh # 一键安装部署脚本
├── README.md # 项目说明文档
│
├── go-gost/ # 转发引擎核心 (基于 go-gost)
│ ├── config.go # 主配置文件
│ ├── go.mod # Go 模块依赖管理
│ ├── go.sum # 依赖版本锁定
│ └── x/ # 扩展功能模块
│ ├── admission/ # 准入控制
│ │ ├── admission.go # 准入控制逻辑
│ │ └── plugin/ # 插件实现
│ ├── api/ # API 接口定义
│ │ ├── api.go # API 核心逻辑
│ │ ├── config_*.go # 各种配置 API
│ │ └── service/ # 服务层实现
│ ├── auth/ # 认证模块
│ ├── bypass/ # 绕行规则
│ ├── chain/ # 转发链管理
│ ├── config/ # 配置管理
│ │ ├── cmd/ # 命令行工具
│ │ ├── loader/ # 配置加载器
│ │ └── parsing/ # 配置解析器
│ ├── connector/ # 连接器实现
│ │ ├── direct/ # 直连模式
│ │ ├── http/ # HTTP 连接器
│ │ ├── socks/ # SOCKS 代理
│ │ ├── relay/ # 中继连接
│ │ └── ... # 其他连接器
│ ├── dialer/ # 拨号器实现
│ │ ├── direct/ # 直接拨号
│ │ ├── tcp/ # TCP 拨号器
│ │ ├── tls/ # TLS 拨号器
│ │ ├── ws/ # WebSocket 拨号器
│ │ └── ... # 其他拨号器
│ ├── handler/ # 处理器实现
│ │ ├── http/ # HTTP 处理器
│ │ ├── socks/ # SOCKS 处理器
│ │ ├── relay/ # 中继处理器
│ │ ├── tunnel/ # 隧道处理器
│ │ └── ... # 其他处理器
│ ├── listener/ # 监听器实现
│ │ ├── tcp/ # TCP 监听器
│ │ ├── tls/ # TLS 监听器
│ │ ├── ws/ # WebSocket 监听器
│ │ ├── quic/ # QUIC 监听器
│ │ └── ... # 其他监听器
│ ├── limiter/ # 限流控制
│ │ ├── conn/ # 连接限流
│ │ ├── rate/ # 速率限流
│ │ └── traffic/ # 流量限流
│ ├── metrics/ # 监控指标
│ ├── recorder/ # 记录器
│ ├── resolver/ # 域名解析
│ ├── router/ # 路由管理
│ └── ... # 其他核心模块
│
├── springboot-backend/ # Spring Boot 后端服务
│ ├── Dockerfile # 后端 Docker 镜像构建文件
│ ├── pom.xml # Maven 项目配置和依赖管理
│ ├── applog/ # 应用日志目录
│ ├── src/ # 源代码目录
│ │ ├── main/ # 主要源码
│ │ │ ├── java/ # Java 源码
│ │ │ │ └── com/ # 包结构
│ │ │ │ └── panel/ # 项目主包
│ │ │ │ ├── controller/ # 控制层 (API 接口)
│ │ │ │ ├── service/ # 服务层 (业务逻辑)
│ │ │ │ ├── mapper/ # 数据访问层 (MyBatis)
│ │ │ │ ├── entity/ # 实体类 (数据模型)
│ │ │ │ ├── config/ # 配置类
│ │ │ │ └── util/ # 工具类
│ │ │ └── resources/ # 资源文件
│ │ │ ├── application.yml # 应用配置
│ │ │ ├── mapper/ # MyBatis 映射文件
│ │ │ └── static/ # 静态资源
│ │ └── test/ # 测试代码
│ │ └── java/ # 测试源码
│ └── target/ # 编译输出目录
│
├── vue-frontend/ # Vue.js 前端应用
│ ├── Dockerfile # 前端 Docker 镜像构建文件
│ ├── nginx.conf # Nginx 服务器配置
│ ├── package.json # NPM 包管理和脚本配置
│ ├── package-lock.json # NPM 依赖版本锁定
│ ├── babel.config.js # Babel 编译配置
│ ├── vue.config.js # Vue CLI 构建配置
│ ├── jsconfig.json # JavaScript 项目配置
│ ├── public/ # 静态资源
│ │ ├── index.html # HTML 模板
│ │ └── favicon.ico # 网站图标
│ ├── src/ # 前端源码
│ │ ├── main.js # 应用入口文件
│ │ ├── App.vue # 根组件
│ │ ├── api/ # API 接口封装
│ │ │ ├── index.js # 主 API 文件
│ │ │ └── network.js # 网络请求配置
│ │ ├── assets/ # 静态资源
│ │ │ └── logo.png # 项目 Logo
│ │ ├── components/ # 可复用组件
│ │ │ └── EmptyState.vue # 空状态组件
│ │ ├── directives/ # 自定义指令
│ │ │ └── permission.js # 权限指令
│ │ ├── router/ # 路由配置
│ │ │ └── index.js # 路由定义
│ │ ├── utils/ # 工具函数
│ │ │ ├── auth.js # 认证工具
│ │ │ ├── clipboard.js # 剪贴板工具
│ │ │ └── jwt.js # JWT 处理
│ │ └── views/ # 页面组件
│ │ ├── Login.vue # 登录页面
│ │ ├── Home.vue # 主框架页面
│ │ ├── Index.vue # 仪表板首页
│ │ ├── ChangePassword.vue # 修改密码页面
│ │ ├── node.vue # 节点管理页面
│ │ ├── Tunnel.vue # 隧道管理页面
│ │ ├── Forward.vue # 转发管理页面
│ │ ├── User.vue # 用户管理页面
│ │ └── Limit.vue # 限速规则页面
│ └── node_modules/ # NPM 依赖包
│
└── vitepress/ # 文档站点 (VitePress)
├── .vitepress/ # VitePress 配置
│ └── config.js # 站点配置文件
├── package.json # 文档站点依赖
├── index.md # 文档首页
├── getting-started.md # 快速开始指南
├── guide.md # 详细使用指南
└── public/ # 静态资源
└── favicon.ico # 文档站点图标
```
## 核心组件详解
### 1. 转发引擎 (go-gost)
**功能**: 网络流量转发的核心引擎
**技术栈**: Go 语言
**主要特性**:
- 支持多种协议: TCP, UDP, TLS, WebSocket, QUIC 等
- 灵活的连接器和监听器架构
- 内置流量限制和监控功能
- 支持中继链和负载均衡
- 插件化的认证和绕行机制
**关键模块**:
- `connector/`: 实现各种出站连接器
- `listener/`: 实现各种入站监听器
- `handler/`: 处理不同协议的数据转发
- `limiter/`: 提供流量控制和限速功能
- `recorder/`: 记录流量统计和连接信息
### 2. 后端服务 (Spring Boot)
**功能**: 提供 RESTful API 和业务逻辑处理
**技术栈**: Java + Spring Boot + MyBatis + MySQL
**主要特性**:
- 用户认证和权限管理
- 节点、隧道、转发规则的 CRUD 操作
- 流量统计和监控数据收集
- 与 go-gost 引擎的配置同步
- 用户权限分级和资源限额管理
**核心模块**:
- `controller/`: REST API 接口层
- `service/`: 业务逻辑处理层
- `mapper/`: 数据访问层 (MyBatis)
- `entity/`: 数据模型和实体类
- `config/`: 系统配置和安全配置
### 3. 前端界面 (Vue.js)
**功能**: 现代化的 Web 管理界面
**技术栈**: Vue.js 2 + Element UI + Axios
**主要特性**:
- 响应式设计,支持桌面和移动端
- 实时数据更新和图表展示
- 直观的操作界面和用户体验
- 权限控制和路由守卫
- 组件化开发和代码复用
**页面结构**:
- `Login.vue`: 用户登录界面
- `Home.vue`: 主框架布局
- `Index.vue`: 仪表板和统计概览
- `node.vue`: 节点管理和监控
- `Tunnel.vue`: 隧道配置和管理
- `Forward.vue`: 转发规则管理
- `User.vue`: 用户和权限管理
- `Limit.vue`: 限速规则配置
### 4. 数据库设计
**技术**: MySQL 8.0+
**主要表结构**:
- `users`: 用户账号和基本信息
- `nodes`: 节点信息和状态
- `tunnels`: 隧道配置和参数
- `forwards`: 转发规则定义
- `user_permissions`: 用户权限分配
- `traffic_stats`: 流量统计数据
- `limit_rules`: 限速规则配置
### 5. 部署架构
**容器化**: Docker + Docker Compose
**网络模式**: 支持 IPv4/IPv6 双栈
**服务组件**:
- `vue-frontend`: Nginx + Vue.js 静态文件服务
- `springboot-backend`: Spring Boot API 服务
- `mysql`: MySQL 数据库服务
- `go-gost`: 转发引擎实例
**端口分配**:
- `6366`: 前端 Web 界面
- `6365`: 后端 API 服务
- `3306`: MySQL 数据库 (内部)
- `动态`: 转发端口范围
## 开发和扩展
### 添加新功能
1. **后端 API**: 在 `springboot-backend/src/main/java/` 中添加新的 Controller 和 Service
2. **前端页面**: 在 `vue-frontend/src/views/` 中创建新的 Vue 组件
3. **数据库**: 修改 `gost.sql` 添加新的表结构
4. **转发逻辑**: 扩展 `go-gost/x/` 中的相关模块
### 自定义配置
- **Docker 配置**: 修改 `docker-compose-*.yml` 文件
- **前端配置**: 调整 `vue-frontend/vue.config.js`
- **后端配置**: 修改 `springboot-backend/src/main/resources/application.yml`
- **Nginx 配置**: 更新 `vue-frontend/nginx.conf`
### 文档维护
- **用户文档**: 在 `vitepress/` 目录下编辑 Markdown 文件
- **API 文档**: 使用 Swagger 注解自动生成
- **代码注释**: 遵循各语言的文档注释规范
这个项目采用了现代化的微服务架构,各个组件职责明确,易于维护和扩展。通过容器化部署,可以快速在不同环境中部署和运行。