# Go HTTP服务器下载站 - V0.0.6 使用Go语言开发的高性能文件下载站,提供文件上传、下载、浏览、审核和管理功能,支持基于角色的用户权限控制和全平台响应式设计。 **GitHub仓库链接**: https://github.com/gomail1/go-download **Docker仓库链接**: https://hub.docker.com/r/gomail1/go_downloader ## ???? 最新更新 ### V0.0.6 版本内容 (2025-12-23) #### ???? 移动端适配优化 - ✅ **6级媒体查询断点**:实现从超小手机(360px)到桌面端(1025px+)的完整断点体系 - ✅ **触摸友好交互**:所有交互元素符合44x44px触摸目标尺寸,触摸设备自动禁用悬停效果 - ✅ **响应式表格设计**:平板水平滚动、手机卡片式布局、横屏保持表格形式 - ✅ **Flexbox布局优化**:智能导航栏和搜索框排序,小屏幕垂直居中排列 - ✅ **横屏适配**:全面优化手机横屏模式的布局和可用性 - ✅ **Viewport配置更新**:支持用户缩放,解决iPhone等设备显示问题 - ✅ **字体可读性提升**:使用clamp()实现响应式字体,调整行高至1.6 - ✅ **性能优化**:简化移动端动画效果,优化响应式图片加载 - ✅ **移动端BUG修复**:解决搜索框、按钮和目录创建表单溢出屏幕问题 - ✅ **按钮交互优化**:修复按钮文本重叠问题,统一按钮最小宽度为100px #### ???? 界面优化与统一 - ✅ **导航菜单标准化**:统一所有页面导航菜单高度为1897×41px,修复1897×55和1897×75px的高度差异 - ✅ **搜索功能精简**:移除用户管理界面和热力图界面的不必要搜索功能 - ✅ **用户信息统一**:所有页面标准化显示用户信息 - ✅ **LOGO统一**:修复管理员和热力图页面的LOGO显示问题 - ✅ **导航链接优化**:修正导航链接路径 - ✅ **角色权限显示标准化**:统一所有页面的角色权限展示格式 #### ???? BUG修复 - ✅ **CSS选择器匹配问题**:修复用户管理页面CSS选择器不匹配问题 - ✅ **导航高度不一致**:统一导航高度 - ✅ **链接高度不一致**:统一导航链接修复80×30与80×44px的高度差异 - ✅ **移动端溢出问题**:修复搜索框、按钮和目录创建表单在移动端的溢出问题 - ✅ **按钮文本重叠**:增加按钮最小宽度,解决文本重叠问题 ### 历史版本概述 - **v0.0.5**:实现智能日志级别分类系统、搜索栏支持、热力图统计功能、API统计接口、带宽监控、目录递归功能、分享功能、多级管理员系统和用户权限细化 - **v0.0.4**:实现每日上传限制功能、优化错误处理机制、改进界面布局 - **v0.0.3**:添加管理员批量操作功能、增强文件上传体验、优化界面设计 - **v0.0.2**:优化日志系统、增强服务器信息页面、改进项目结构 - **v0.0.1**:实现基础功能、用户角色系统、文件审核机制 ## ???? 功能特性 ### ???? 权限管理系统 - **多角色权限控制**:支持管理员、二级管理员、普通用户和访客四种角色 - **细粒度权限分配**:针对不同角色分配不同的操作权限(查看文件、上传、下载、删除、创建目录、审核文件、用户管理、查看日志、查看统计信息) - **会话管理**:基于Cookie的安全认证机制,支持会话过期自动清理(24小时有效期) #### 用户角色权限对照表 | 权限/功能 | 管理员 | 二级管理员 | 普通用户 | 访客 | |---------------|--------|------------|----------|------| | 查看文件列表 | ✅ | ✅ | ✅ | ✅ | | 文件下载 | ✅ | ✅ | ✅ | ✅ | | 文件分享 | ✅ | ✅ | ✅ | ✅ | | 文件上传 | ✅ | ✅ | ✅ | ❌ | | 创建目录 | ✅ | ✅ | ✅ | ❌ | | 删除文件 | ✅ | ❌ | ❌ | ❌ | | 审核文件 | ✅ | ✅ | ❌ | ❌ | | 用户管理 | ✅ | ❌ | ❌ | ❌ | | 查看日志 | ✅ | ✅ | ❌ | ❌ | | 查看统计信息 | ✅ | ❌ | ❌ | ❌ | | 无限制上传 | ✅ | ❌ | ❌ | ❌ | ### ???? 文件管理功能 - **文件上传**:支持拖拽上传、批量上传和目录选择,带有文件大小验证和每日上传限制 - 普通用户:20GB/日上传限制 - 管理员:无限制上传 - 实时显示上传进度和今日剩余空间 - **文件下载**:支持单文件下载,精确记录下载次数和带宽消耗 - **文件浏览**:清晰的文件目录结构展示,支持按名称排序 - **文件删除**:支持单文件删除,需要管理员权限 - **目录管理**:支持创建目录,方便文件分类管理 - **文件审核**:上传文件自动进入待审核队列,需要管理员审核才能发布 - 审核流程:用户上传 → 存储到pending/[username]/目录 → 管理员审核 → 移动到downloads/目录对外发布 - 审核提醒:实时显示待审核文件数量,管理员可快速查看待审核文件 - 拒绝机制:支持拒绝文件上传请求,自动清理待审核文件 ### ???? 用户管理系统 - **用户认证**:基于Cookie的安全认证机制,支持密码验证 - **用户列表**:管理员可查看系统所有用户信息 - **权限验证**:实时验证用户权限,确保操作安全性 - **管理员保护**:超级管理员账号默认不可删除,对二级管理员隐藏 - **密码管理**:支持修改用户密码 ### ???? 统计与监控功能 - **下载统计**:精确记录每个文件的下载次数和最后下载时间 - **分享统计**:跟踪文件分享活动,记录分享次数和最后分享时间 - **带宽监控**:精确记录文件下载流量,帮助管理员了解带宽使用情况 - **热力图可视化**:图形化展示文件活动趋势,支持按时间维度查看 #### 热力图统计面板 为管理员提供直观的数据可视化功能,帮助了解文件分享和下载活动趋势: 1. **活动趋势图**:使用Chart.js创建的柱状图,展示最近7天的文件分享和下载活动趋势 2. **文件统计表**:详细的文件统计数据表格,包括文件路径、分享次数、下载次数、最后分享时间和最后下载时间 3. **实时数据**:数据实时更新,反映最新的文件使用情况 4. **管理员专享**:只有管理员角色可以访问,确保数据安全性 热力图数据收集包括: - 文件分享事件 - 文件下载事件 - 用户上传事件 - 管理员操作事件 所有数据都会经过标准化处理,确保路径一致性,并且会定期合并重复条目以保持数据准确性。 ### ???? 全平台响应式设计 - **6级媒体查询断点**:覆盖从超小手机(360px)到桌面端(1025px+)的所有设备 - **触摸友好交互**:所有交互元素符合44x44px触摸目标尺寸,优化移动操作体验 - **响应式布局**:根据屏幕尺寸自动调整界面元素,确保在各种设备上都有良好的显示效果 - **横屏适配**:优化手机横屏模式的布局和可用性,提高大屏幕利用率 - **可访问性支持**:支持用户缩放,确保不同用户的使用需求 ### ????️ 安全防护措施 - **访问控制**:严格的权限验证和访问控制,防止未授权访问 - **输入验证**:全面的输入参数验证和过滤,防止恶意输入 - **文件校验**:上传文件的类型和大小限制,确保系统安全 - **防注入攻击**:防范常见的Web攻击手段,保护系统安全 - **路径安全**:严格的路径验证,防止目录遍历攻击 - **会话管理**: - 基于HttpOnly Cookie的安全会话机制 - 24小时会话自动过期 - 密码修改时自动失效相关会话 - 定期清理过期会话 - 会话中存储用户权限信息,减少权限检查开销 - **密码安全**:密码哈希存储,防止密码泄露 - **CSRF防护**:使用会话ID进行CSRF防护 - **SSL支持**:支持HTTPS加**输,保护数据安全 ### ???? 日志系统 - **多级日志记录**:支持success、error、warning、debug和info五种日志级别 - **详细日志内容**:记录用户操作、系统事件和错误信息 - **日志筛选功能**:支持按日期和日志级别筛选日志 - **日志持久化**:日志信息持久化存储,便于后续查询和分析 - **结构化日志格式**:包含时间戳、级别、用户名、角色、操作和详情 - **日志倒序显示**:最新日志显示在前面,方便查看 - **智能滚动**:页面加载时自动滚动到顶部,确保看到最新日志 ### ???? 服务器信息展示 - **系统运行时间**:显示服务器已运行的时间 - **当前时间**:显示服务器当前时间 - **待审核文件数量**:实时显示待审核文件数量,方便管理员及时处理 - **系统信息显示**:显示操作系统、架构、Go版本、CPU核心数等 - **服务器配置显示**:显示端口、下载目录、待审核目录等 - **项目信息显示**:显示项目名称、版本、开发者、启动时间等 - **内存使用信息**:显示当前协程数 - **用户角色权限表**:清晰展示不同角色的权限对比 - **使用说明**:添加了系统使用说明 ## ???? API统计接口 系统提供RESTful API接口供第三方系统集成: - 获取所有文件的统计信息(JSON格式) - 数据包含下载次数、分享次数、带宽使用等详细信息 - JSON格式返回,便于程序解析和处理 - 无需身份验证即可访问,方便集成到其他系统 ### ???? 数据处理机制 - **自动去重**:自动合并重复统计条目,确保数据准确性 - **数据清理**:定期清理任务,保持统计数据的一致性 - **路径识别**:支持子目录文件路径的正确识别和统计 - **持久化存储**:数据持久化存储到本地文件,重启服务后数据不丢失 ## ???? Docker部署方案 ### 1. 常规Docker部署 ```yaml version: '3.8' services: go-download-server: # Docker Hub镜像 image: gomail1/go_downloader:latest # 备选镜像源:GitHub Container Registry # image: ghcr.io/gomail1/go-download:latest container_name: go-download-server restart: unless-stopped ports: - "9980:9980" - "1443:1443" volumes: - ./downloads:/app/downloads - ./pending:/app/pending - ./logs:/app/logs - ./config:/app/config - ./ssl:/app/ssl environment: - TZ=Asia/Shanghai logging: driver: json-file options: max-size: "10m" max-file: "3"
2. 飞牛专用部署
version: '3.8'services: go-download-server: image: gomail1/go_downloader:latest container_name: go-download-server restart: unless-stopped ports: - "9980:9980" - "1443:1443" volumes: - /vol1/1000/docker/go-download/downloads:/app/downloads - /vol1/1000/docker/go-download/pending:/app/pending - /vol1/1000/docker/go-download/logs:/app/logs - /vol1/1000/docker/go-download/config:/app/config - /vol1/1000/docker/go-download/ssl:/app/ssl environment: - TZ=Asia/Shanghai logging: driver: json-file options: max-size: "10m" max-file: "3"
3. 1panel部署
version: '3.8'services: go-download-server: # Docker Hub镜像 image: gomail1/go_downloader:latest # 备选镜像源:GitHub Container Registry # image: ghcr.io/gomail1/go-download:latest container_name: go-download-server restart: unless-stopped ports: - "9980:9980" - "1443:1443" volumes: - ./downloads:/app/downloads - ./pending:/app/pending - ./logs:/app/logs - ./config:/app/config - ./ssl:/app/ssl environment: TZ: Asia/Shanghai logging: driver: json-file options: max-size: "10m" max-file: "3"
???? 快速开始
1. 访问系统
HTTP地址: http://服务器IP:9980
HTTPS地址: https://服务器IP:1443
默认管理员账号: admin / admin123
???? 操作界面演示 (V0.0.3)
以下是系统主要功能的操作界面演示:
1. 公众主界面

2. 上传界面

3. 管理员界面

4. 创建目录

5. 用户上传界面

6. 管理员审核提醒

7. 管理员审核目录

8. 用户管理界面

9. 详细日志

10. 服务器信息

11. 热力图统计面板

???? 技术实现
核心架构
纯Go实现: 使用Go标准库开发,无需额外的数据库依赖
模块化设计: 清晰的分层架构(config、constants、handlers等模块)
高性能: 利用Go的并发特性,支持高并发请求处理
配置管理
自动配置: 首次运行自动生成config.json配置文件
命令行参数: 支持通过命令行参数覆盖配置(端口、证书文件等)
环境变量支持: 支持通过环境变量配置服务器参数
默认配置: 内置默认配置,确保服务能快速启动
服务器特性
容器化部署: 使用Docker容器化技术,简化部署和管理
跨平台支持: 支持Windows、Linux和Mac系统
双协议支持: 同时支持HTTP和HTTPS访问
持久化存储: 支持数据持久化到主机文件系统
并发处理: 利用Go的goroutine特性,支持高并发文件传输
自动目录创建: 自动创建必要的目录结构(downloads、pending、logs等)
启动流程
解析命令行参数和环境变量
加载配置文件(如不存在则使用默认配置)
初始化必要的目录结构
注册HTTP处理函数
启动HTTP服务器
启动HTTPS服务器(如果证书存在)
命令行参数
-port: 指定HTTP端口(默认:9980)-https-port: 指定HTTPS端口(默认:1443)-cert-file: 指定SSL证书文件路径-key-file: 指定SSL密钥文件路径
环境变量
PORT: 设置HTTP端口HTTPS_PORT: 设置HTTPS端口SSL_CERT_FILE: 设置SSL证书文件路径SSL_KEY_FILE: 设置SSL密钥文件路径TZ: 设置时区(如Asia/Shanghai)
???? 开发说明
此项目使用纯Go标准库开发,无需额外的数据库依赖。所有文件操作都是直接文件系统操作,适合中小型文件分享场景。系统架构清晰,代码结构模块化,便于维护和扩展。
❓ 常见问题解答
1. Q: 如何修改默认端口和证书文件路径?
A: 可以通过命令行参数或环境变量来修改:
# 命令行参数./go-download-server -port 8080 -https-port 8443 -cert-file /path/to/cert.crt -key-file /path/to/key.key# 或环境变量PORT=8080 HTTPS_PORT=8443 ./go-download-server
2. Q: 如何重置管理员密码?
A: 删除 config/config.json文件中的相关用户条目,系统将在重启后自动生成默认管理员账户。
3. Q: 如何限制上传文件的大小?
A: 在 config/config.json中修改 max_upload_size参数(单位:字节)。
4. Q: 上传的文件存放在哪里?
A: 文件存放在 downloads目录中,待审核文件存放在 pending/[用户名]/目录中。
5. Q: 如何获取API统计数据?
A: 访问 /api/stats接口获取JSON格式的统计数据。
6. Q: Docker容器重启后数据会丢失吗?
A: 不会,只要正确映射了volumes卷,数据会持久化到主机文件系统。
7. Q: 如何设置自动备份?
A: 目前系统没有内置备份功能,建议通过系统层面的定时任务备份 downloads和 config目录。
8. Q: 系统支持中文文件名吗?
A: 完全支持,系统内部使用UTF-8编码处理所有文件路径和名称。
???? 贡献指南
欢迎参与项目开发!如果您想为该项目贡献代码或报告问题
???? 许可证
MIT License