|
|
|
|
# Web GUI 使用指南
|
|
|
|
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
|
|
|
|
Wormhole SOCKS5 Client 内置了现代化的 Web GUI 管理界面,提供直观的图形界面来管理和监控代理服务。
|
|
|
|
|
|
|
|
|
|
## 🌟 **主要功能**
|
|
|
|
|
|
|
|
|
|
### ✅ **实时监控**
|
|
|
|
|
- **连接统计**: 总连接数、活跃连接、成功率等
|
|
|
|
|
- **流量统计**: 上传下载流量、传输字节数
|
|
|
|
|
- **运行状态**: 服务运行时间、健康状态
|
|
|
|
|
|
|
|
|
|
### ✅ **代理控制**
|
|
|
|
|
- **一键开关**: 启用/禁用系统代理设置
|
|
|
|
|
- **状态显示**: 实时显示代理配置状态
|
|
|
|
|
- **错误提示**: 详细的操作反馈和错误信息
|
|
|
|
|
|
|
|
|
|
### ✅ **路由配置**
|
|
|
|
|
- **域名规则**: 显示绕过和强制代理域名数量
|
|
|
|
|
- **网络设置**: 本地网络和私有网络绕过设置
|
|
|
|
|
- **统计信息**: 路由规则匹配统计
|
|
|
|
|
|
|
|
|
|
### ✅ **系统信息**
|
|
|
|
|
- **系统代理**: 当前系统代理配置
|
|
|
|
|
- **服务配置**: SOCKS5 服务器地址、端口等
|
|
|
|
|
- **操作系统**: 运行环境信息
|
|
|
|
|
|
|
|
|
|
## 🚀 **快速开始**
|
|
|
|
|
|
|
|
|
|
### 1. 启动服务
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# HTTP 代理模式(推荐测试)
|
|
|
|
|
./bin/wormhole-client -mode http
|
|
|
|
|
|
|
|
|
|
# 全局代理模式(推荐使用)
|
|
|
|
|
sudo ./bin/wormhole-client -mode global
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 2. 访问 GUI
|
|
|
|
|
|
|
|
|
|
打开浏览器访问:
|
|
|
|
|
|
|
|
|
|
- **主界面**: http://127.0.0.1:8080/gui
|
|
|
|
|
- **JSON API**: http://127.0.0.1:8080/stats
|
|
|
|
|
- **健康检查**: http://127.0.0.1:8080/health
|
|
|
|
|
|
|
|
|
|
### 3. 界面功能
|
|
|
|
|
|
|
|
|
|
启动后你将看到现代化的管理界面:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
🌐 Wormhole SOCKS5 Client [●] 服务运行中
|
|
|
|
|
|
|
|
|
|
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
|
|
|
│ 代理控制 │ │ 连接统计 │ │ 路由配置 │
|
|
|
|
|
│ │ │ │ │ │
|
|
|
|
|
│ 模式: global │ │ 总连接: 42 │ │ 绕过域名: 15 │
|
|
|
|
|
│ 服务器: xxx:xxx │ │ 活跃连接: 3 │ │ 强制域名: 25 │
|
|
|
|
|
│ 端口: 8080 │ │ 成功率: 95.2% │ │ 本地绕过: 是 │
|
|
|
|
|
│ 系统: darwin │ │ 运行时间: 2h15m │ │ 私网绕过: 是 │
|
|
|
|
|
│ │ │ 传输流量: 1.2GB │ │ │
|
|
|
|
|
│ [禁用系统代理] │ │ 失败请求: 2 │ │ │
|
|
|
|
|
│ [刷新状态] │ │ │ │ │
|
|
|
|
|
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
|
|
|
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
|
|
|
│ 系统信息 │
|
|
|
|
|
│ │
|
|
|
|
|
│ 系统代理状态: [已启用] │
|
|
|
|
|
│ 当前代理设置: │
|
|
|
|
|
│ http: 127.0.0.1:8080 │
|
|
|
|
|
│ https: 127.0.0.1:8080 │
|
|
|
|
|
└─────────────────────────────────────────────────────────────┘
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## ⚙️ **功能详解**
|
|
|
|
|
|
|
|
|
|
### 代理控制面板
|
|
|
|
|
|
|
|
|
|
**基本信息显示**:
|
|
|
|
|
- 运行模式(HTTP/Global/Transparent)
|
|
|
|
|
- SOCKS5 服务器地址和端口
|
|
|
|
|
- 本地代理端口
|
|
|
|
|
- 操作系统类型
|
|
|
|
|
|
|
|
|
|
**操作按钮**:
|
|
|
|
|
- **启用/禁用系统代理**: 一键切换系统代理设置
|
|
|
|
|
- **刷新状态**: 手动刷新所有数据
|
|
|
|
|
|
|
|
|
|
### 连接统计面板
|
|
|
|
|
|
|
|
|
|
**实时数据**:
|
|
|
|
|
- **总连接数**: 自启动以来的总连接数
|
|
|
|
|
- **活跃连接**: 当前正在处理的连接数
|
|
|
|
|
- **成功率**: 成功请求与总请求的比例
|
|
|
|
|
- **运行时间**: 服务运行的总时间
|
|
|
|
|
- **传输流量**: 上传下载的总字节数
|
|
|
|
|
- **失败请求**: 失败的请求数量
|
|
|
|
|
|
|
|
|
|
### 路由配置面板
|
|
|
|
|
|
|
|
|
|
**智能分流信息**:
|
|
|
|
|
- **绕过域名数量**: 配置的直连域名规则数
|
|
|
|
|
- **强制代理域名**: 配置的代理域名规则数
|
|
|
|
|
- **绕过本地网络**: 是否绕过本地网络设置
|
|
|
|
|
- **绕过私有网络**: 是否绕过私有网络设置
|
|
|
|
|
|
|
|
|
|
### 系统信息面板
|
|
|
|
|
|
|
|
|
|
**系统代理状态**:
|
|
|
|
|
- **启用/禁用状态**: 当前系统代理是否启用
|
|
|
|
|
- **代理设置详情**: 具体的 HTTP/HTTPS 代理配置
|
|
|
|
|
|
|
|
|
|
## 🔧 **高级配置**
|
|
|
|
|
|
|
|
|
|
### 自定义端口
|
|
|
|
|
|
|
|
|
|
如果需要在不同端口运行 GUI:
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
# configs/client.yaml
|
|
|
|
|
proxy:
|
|
|
|
|
localPort: 8888 # 修改端口
|
|
|
|
|
|
|
|
|
|
# GUI 将在 http://127.0.0.1:8888/gui 提供服务
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 外部访问
|
|
|
|
|
|
|
|
|
|
默认 GUI 只能从本地访问。如需外部访问:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 使用端口转发(SSH隧道)
|
|
|
|
|
ssh -L 8080:127.0.0.1:8080 username@your-server
|
|
|
|
|
|
|
|
|
|
# 然后在本地访问: http://127.0.0.1:8080/gui
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### API 集成
|
|
|
|
|
|
|
|
|
|
GUI 基于 RESTful API 构建,可以与其他工具集成:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 获取状态信息
|
|
|
|
|
curl http://127.0.0.1:8080/api/status
|
|
|
|
|
|
|
|
|
|
# 切换代理状态
|
|
|
|
|
curl -X POST http://127.0.0.1:8080/api/proxy/toggle \
|
|
|
|
|
-H "Content-Type: application/json" \
|
|
|
|
|
-d '{"enable": true}'
|
|
|
|
|
|
|
|
|
|
# 获取路由统计
|
|
|
|
|
curl http://127.0.0.1:8080/api/routing/stats
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 📱 **响应式设计**
|
|
|
|
|
|
|
|
|
|
GUI 支持多种设备:
|
|
|
|
|
|
|
|
|
|
- **桌面端**: 全功能四面板布局
|
|
|
|
|
- **平板端**: 自适应两列布局
|
|
|
|
|
- **手机端**: 单列垂直布局
|
|
|
|
|
|
|
|
|
|
### 移动端优化
|
|
|
|
|
|
|
|
|
|
在手机上访问时,界面会自动调整:
|
|
|
|
|
- 简化的按钮和控件
|
|
|
|
|
- 更大的触摸目标
|
|
|
|
|
- 优化的字体大小
|
|
|
|
|
|
|
|
|
|
## 🔄 **实时更新**
|
|
|
|
|
|
|
|
|
|
### 自动刷新
|
|
|
|
|
|
|
|
|
|
GUI 每 5 秒自动更新数据,包括:
|
|
|
|
|
- 连接统计
|
|
|
|
|
- 代理状态
|
|
|
|
|
- 系统信息
|
|
|
|
|
- 路由统计
|
|
|
|
|
|
|
|
|
|
### 智能刷新
|
|
|
|
|
|
|
|
|
|
**页面可见性检测**:
|
|
|
|
|
- 当页面在后台时停止自动刷新
|
|
|
|
|
- 切换回前台时立即恢复更新
|
|
|
|
|
- 节省系统资源和网络带宽
|
|
|
|
|
|
|
|
|
|
### 手动刷新
|
|
|
|
|
|
|
|
|
|
点击 "刷新状态" 按钮立即更新所有数据。
|
|
|
|
|
|
|
|
|
|
## 🎨 **界面特性**
|
|
|
|
|
|
|
|
|
|
### 现代化设计
|
|
|
|
|
|
|
|
|
|
- **毛玻璃效果**: 半透明背景增强视觉层次
|
|
|
|
|
- **渐变背景**: 美观的紫色渐变背景
|
|
|
|
|
- **卡片布局**: 清晰的信息分组
|
|
|
|
|
- **图标支持**: 使用 Font Awesome 图标
|
|
|
|
|
|
|
|
|
|
### 交互反馈
|
|
|
|
|
|
|
|
|
|
- **悬停效果**: 按钮和卡片的悬停动画
|
|
|
|
|
- **加载状态**: 操作进行时的加载指示
|
|
|
|
|
- **状态指示**: 颜色编码的状态点
|
|
|
|
|
- **动画效果**: 平滑的过渡动画
|
|
|
|
|
|
|
|
|
|
### 状态显示
|
|
|
|
|
|
|
|
|
|
**连接状态指示器**:
|
|
|
|
|
- 🟢 **绿色**: 服务正常运行
|
|
|
|
|
- 🟡 **黄色**: 正在检查状态
|
|
|
|
|
- 🔴 **红色**: 服务异常或连接失败
|
|
|
|
|
|
|
|
|
|
## ⚠️ **注意事项**
|
|
|
|
|
|
|
|
|
|
### 安全考虑
|
|
|
|
|
|
|
|
|
|
1. **本地访问**: GUI 默认只绑定本地地址
|
|
|
|
|
2. **无认证**: 当前版本无需登录验证
|
|
|
|
|
3. **HTTPS**: 建议通过 HTTPS 代理访问
|
|
|
|
|
|
|
|
|
|
### 性能影响
|
|
|
|
|
|
|
|
|
|
1. **轻量级**: GUI 对系统资源占用很小
|
|
|
|
|
2. **异步更新**: 不影响代理性能
|
|
|
|
|
3. **缓存优化**: 静态资源缓存减少网络请求
|
|
|
|
|
|
|
|
|
|
### 浏览器兼容
|
|
|
|
|
|
|
|
|
|
**支持的浏览器**:
|
|
|
|
|
- ✅ Chrome/Chromium 70+
|
|
|
|
|
- ✅ Firefox 65+
|
|
|
|
|
- ✅ Safari 12+
|
|
|
|
|
- ✅ Edge 79+
|
|
|
|
|
|
|
|
|
|
**推荐浏览器**: Chrome 或 Firefox 最新版本
|
|
|
|
|
|
|
|
|
|
## 🔧 **故障排除**
|
|
|
|
|
|
|
|
|
|
### 常见问题
|
|
|
|
|
|
|
|
|
|
#### 1. 无法访问 GUI
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
问题: 浏览器显示"无法访问此网站"
|
|
|
|
|
解决: 检查服务是否启动,端口是否正确
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 检查服务状态
|
|
|
|
|
curl http://127.0.0.1:8080/health
|
|
|
|
|
|
|
|
|
|
# 检查端口占用
|
|
|
|
|
netstat -an | grep 8080
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 2. 页面加载不完整
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
问题: 页面样式错乱或功能不正常
|
|
|
|
|
解决: 清除浏览器缓存,刷新页面
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 强制刷新页面: Ctrl+F5 (Windows) 或 Cmd+Shift+R (Mac)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 3. 代理切换失败
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
问题: 点击代理开关无效果
|
|
|
|
|
解决: 检查管理员权限,查看错误信息
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# macOS/Linux: 使用 sudo 运行
|
|
|
|
|
sudo ./bin/wormhole-client -mode global
|
|
|
|
|
|
|
|
|
|
# Windows: 以管理员身份运行
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 4. 数据不更新
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
问题: 统计数据停止更新
|
|
|
|
|
解决: 检查网络连接,手动刷新
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 调试模式
|
|
|
|
|
|
|
|
|
|
启用详细日志查看 GUI 相关信息:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 设置日志级别为 debug
|
|
|
|
|
export LOG_LEVEL=debug
|
|
|
|
|
./bin/wormhole-client -mode global
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
查看 GUI 相关日志:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[DEBUG] GUI server initialized
|
|
|
|
|
[DEBUG] Serving GUI at /gui
|
|
|
|
|
[DEBUG] API request: GET /api/status
|
|
|
|
|
[DEBUG] GUI template rendered successfully
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 📚 **开发和定制**
|
|
|
|
|
|
|
|
|
|
### 模板系统
|
|
|
|
|
|
|
|
|
|
GUI 使用 Go 内置模板系统:
|
|
|
|
|
|
|
|
|
|
- **HTML 模板**: 存储在代码中,支持数据绑定
|
|
|
|
|
- **CSS 样式**: 响应式设计,支持深色主题
|
|
|
|
|
- **JavaScript**: 现代 ES6+ 语法,模块化设计
|
|
|
|
|
|
|
|
|
|
### API 端点
|
|
|
|
|
|
|
|
|
|
GUI 基于以下 API 端点:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
GET /api/status - 获取服务状态
|
|
|
|
|
GET /api/config - 获取配置信息
|
|
|
|
|
POST /api/proxy/toggle - 切换代理状态
|
|
|
|
|
GET /api/routing/stats - 获取路由统计
|
|
|
|
|
GET /api/system/proxy - 获取系统代理信息
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 自定义样式
|
|
|
|
|
|
|
|
|
|
如需修改界面样式,可以编辑 `internal/gui/templates.go` 中的 CSS:
|
|
|
|
|
|
|
|
|
|
```go
|
|
|
|
|
// 修改主题色彩
|
|
|
|
|
.panel-header {
|
|
|
|
|
background: linear-gradient(135deg, #your-color1, #your-color2);
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 📖 **相关链接**
|
|
|
|
|
|
|
|
|
|
- 📊 [API 文档](api.md) - 详细的 API 接口说明
|
|
|
|
|
- 🌍 [全局代理指南](global-proxy.md) - 全局代理模式使用说明
|
|
|
|
|
- 📋 [配置参考](../configs/client.yaml) - 完整的配置文件示例
|
|
|
|
|
- 🏠 [项目主页](../README.md) - 项目总体介绍
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
**💡 提示**: GUI 界面会持续改进,欢迎提出建议和反馈!
|