Skip to content

Latest commit

 

History

History
435 lines (344 loc) · 18.5 KB

File metadata and controls

435 lines (344 loc) · 18.5 KB

v0.7.0

📦🔐 分片上传 + 断点续传 + 登录防爆破

✨ 新功能

  1. 分片上传 + 断点续传

    • 新增 t_upload_session 表记录每个会话的已上传分片 bitmap
    • 支持浏览器/脚本将大文件切片并行上传,中途断网可恢复
    • 默认分片 5MB,并发 3,单文件上限 100GB
    • 整体 MD5 校验 + 单片 MD5 校验(可选)
    • 秒传:同 MD5 文件已存在时通过硬链接直接返回成功
    • 过期会话(24 小时)自动清理分片临时目录
  2. 登录限流防爆破

    • 同一 IP 5 分钟内登录失败 ≥ 5 次,自动锁定 15 分钟
    • 登录成功立即清空失败计数
    • 纯内存实现,零外部依赖(无 Redis)
    • 锁定期间所有尝试直接返回 429,保护后端资源
  3. 下载支持 HTTP Range

    • DownloadFile 切换到 http.ServeContent,支持断点续传、拖动进度条
    • 大文件下载可用 wget/curl -c 续传

📡 新增 API

接口 方法 说明
/api/v1/file/upload/init POST 初始化分片上传会话,返回 uploadId
/api/v1/file/upload/status GET 查询会话状态 & 已上传分片索引(断点续传)
/api/v1/file/upload/chunk POST 上传单个分片(幂等,可重复上传)
/api/v1/file/upload/complete POST 合并分片为最终文件,校验 MD5
/api/v1/file/upload/abort POST 中止会话并清理分片

🎨 前端改进

  • 新增 chunkedUpload() 工具函数,自动切片、并发上传、失败重试、取消支持
  • 文件管理页上传:大于 10MB 的文件自动走分片上传,小文件保持普通上传
  • 分片进度实时回显到上传进度条

🛡️ 安全加固

  • 登录接口加限流中间件,防止暴力破解
  • 分片上传所有路径复用 ResolvePathWithinBase,杜绝路径穿越
  • 分片大小严格校验:除最后一片外必须等于 ChunkSize

v0.6.0

📋🔍 操作日志审计 + 文件在线预览 + 打包下载

✨ 新功能

  1. 操作日志审计系统

    • 新增操作日志记录中间件(OperationLogger),自动记录所有用户操作(上传/下载/删除/重命名/创建文件夹/分享/预览/登录/配置修改等)
    • 操作日志管理页面,支持分页、多条件筛选(操作类型、用户名、IP、路径、日期范围)
    • 操作统计接口,支持按操作类型聚合统计
  2. 文件在线预览

    • 支持文本/代码文件(.txt, .md, .json, .go, .py, .js 等 50+ 种格式)在线查看
    • 支持 PDF 文档在线预览
    • 支持图片(JPG/PNG/GIF/WebP/SVG)、视频(MP4/WebM)、音频(MP3/WAV/FLAC)在线播放
    • 前端预览组件支持全屏模式
    • 预览信息接口返回文件类型、大小、是否可预览等元数据
  3. 文件打包下载

    • 支持多文件选择后打包为 ZIP 下载
    • 支持跨子目录文件的批量打包
  4. 上传增强

    • 文件上传支持指定子目录(dir 参数),支持拖拽上传到当前浏览目录
    • CORS 头新增 UploadToken 允许字段

📡 新增 API

接口 方法 说明
/api/v1/file/preview GET 文件在线预览(返回文件内容 + 适当的 Content-Type)
/api/v1/file/previewInfo GET 获取文件预览元信息(类型、大小、是否可预览)
/api/v1/file/downloadZip POST 多文件打包 ZIP 下载
/api/v1/oplog/list GET 操作日志列表(分页 + 筛选)
/api/v1/oplog/stats GET 操作统计(按类型聚合)

🎨 前端改进

  • 新增文件预览组件(FilePreview),支持文本高亮、图片/视频/音频/PDF 内嵌预览
  • 新增操作日志管理页面,支持丰富的筛选和操作类型图标展示
  • 文件列表页新增预览按钮和批量打包下载功能

v0.5.0

📁✨ 文件管理增强 + Dashboard 统计升级

✨ 新功能

  1. 文件管理增强

    • 子目录导航:面包屑导航支持多级目录浏览,点击文件夹可进入子目录
    • 新建文件夹:支持在当前目录下创建新文件夹
    • 文件重命名:支持对文件和文件夹进行重命名
    • 单个删除:每个文件/文件夹操作列增加删除按钮(文件夹需为空)
    • 批量删除:支持多选文件后批量删除
    • 文件搜索:文件列表页支持按文件名实时搜索过滤
    • 文件类型标签:根据文件扩展名显示彩色类型标签(PDF/DOC/ZIP/图片/代码等)
    • 列排序:支持按文件名、大小、修改时间排序
  2. Dashboard 统计升级

    • 新增「文件 & 分享总览」卡片:文件总数、文件夹数、文件总大小、分享链接统计
    • 文件总览通过递归遍历统计,展示格式化的文件大小(KB/MB/GB/TB)
    • 分享统计展示有效链接数、总链接数、累计下载次数
  3. 下载历史记录

    • 新增下载历史日志查询接口,支持分页、按文件名/MD5/IP 过滤

📡 新增 API

接口 方法 说明
/api/v1/file/delete POST 批量删除文件/文件夹
/api/v1/file/mkdir POST 创建文件夹
/api/v1/file/rename POST 重命名文件/文件夹
/api/v1/statistics/getFileOverview GET 文件总览统计(文件数、目录数、总大小)
/api/v1/statistics/downloadHistoryLogs GET 下载历史日志(分页+筛选)

🤖 MCP Server 新增 Tool

v0.5.0 为 MCP Server 补充了 5 个新 Tool,AI Agent 可通过 MCP 协议完成文件管理全流程:

MCP Tool 说明
create_folder 创建文件夹,支持指定父目录
rename_file 重命名文件或文件夹,支持指定所在目录
batch_delete_files 批量删除文件/空文件夹(JSON 数组传参)
get_file_overview 文件总览统计(文件数、目录数、总大小)
get_download_history 下载历史日志查询(分页+按文件名/MD5/IP 筛选)

至此 MCP Server 共提供 15 个 Tool + 3 个 Resource,覆盖文件查询、上传、删除、重命名、建目录、统计、校验等完整操作。

🎨 前端改进

  • 文件列表页全面重写,支持目录导航、多选操作、分享入口
  • Dashboard 页面新增文件 & 分享总览卡片
  • 前端 API 层新增完整的类型定义(FileItemDeleteFilesParamsCreateFolderParamsRenameFileParams 等)

v0.4.0

🔒🔗 安全加固 + 文件分享

✨ 新功能

  • 文件分享:支持通过链接分享文件,可设置有效期、下载次数限制和提取码保护
  • 分享页面:独立的分享访问页面,支持提取码验证和文件下载
  • 分享管理:新增分享管理页面,查看所有分享记录和统计信息
  • 匿名访问:分享链接支持匿名下载,无需登录(可配置关闭)
  • 修改密码页面:新增独立的修改密码页面,替代原有弹窗

🔐 安全增强

  • 密码哈希升级到 bcrypt,旧密码登录时自动无感升级
  • 首次登录强制修改默认密码,未改密码前无法使用任何功能
  • MCP 开启时强制配置 auth_token,未配置则拒绝启动
  • 文件操作全面防护目录穿越和符号链接攻击

🔧 改进

  • 头像菜单新增「修改密码」入口
  • 提取码简化为开关模式,启用后自动生成
  • 分享下载体验优化:本地计数更新、次数用完自动禁用按钮
  • 下载目录默认值与上传目录统一,开箱即用
  • 清理废弃文件,统一日志格式

v0.3.0

🎉 重大更新:新增 Web 端系统配置管理!

告别手动编辑配置文件,在浏览器中即可完成所有服务配置的查看和修改。

✨ 新功能

  1. 系统配置页面(核心功能)

    • 新增独立的「系统配置」管理页面,支持在 Web 界面直接修改服务配置
    • 存储路径配置:可视化修改上传/下载子目录,自动路径安全校验(防目录穿越)
    • HTTP 服务配置:在线修改后端服务端口,开发模式下自动检测并提示访问端口与服务端口差异
    • 文件上传策略:一键开关文件上传、Token 校验,实时调整上传凭证有效期和文件大小限制
    • 企业微信 Bot 通知:在线配置 Webhook URL,支持开关控制
    • 缩略图配置:动态调整缩略图尺寸(50-2000px)
    • 日志级别:在线切换日志级别(Debug ~ Fatal),无需重启
    • 配置分为「热更新」和「需重启」两类,清晰标记
  2. 配置持久化与服务重启

    • 所有配置变更自动持久化到 YAML 配置文件
    • 需重启的配置(端口、存储路径)支持一键重启流程:保存配置 → 密码验证 → 优雅关闭 → 自动重连检测
    • 重启过程全程可视化(保存中 → 重启中 → 重连中 → 完成)
    • 后端支持重启信号通道,由 systemd/Docker 自动拉起新进程
  3. 图片管理增强

    • 图片管理页面新增缩略图网格视图模式,支持列表/网格切换
    • 网格视图中支持图片预览、下载、删除操作
    • 优化图片缩略图加载和展示效果

v0.2.3

🐛 Bug 修复、性能提升

  1. 修复进程内存占用过高问题(5.7G → 正常水平)
    • 修复 Prometheus Metrics 因 IP 标签导致的时间序列无限增长内存泄漏
    • 修复数据库连接池泄漏,全局统一使用单例 DB 连接
    • 修复文件下载句柄未关闭导致的文件描述符泄漏
    • 修复调试日志异常导致 Token 刷新 goroutine 意外退出

🔧 改进

  • 启用 pprof 调试端点,便于后续性能分析

v0.2.2

✨ 新功能

  1. 文件列表页面

    • 新增文件列表功能菜单,支持查看上传目录中的文件列表
    • 文件列表接口过滤目录,只返回可下载的文件
    • 支持按修改时间倒序排列
  2. 图片上传鉴权

    • 图片上传接口同文件上传一样,需要 UploadToken 校验
    • 上传图片白名单机制保持与文件上传一致
  3. MCP 增强

    • 新增 upload_image Tool,支持通过 MCP 上传图片(生成缩略图,可在图片管理页面查看)
    • list_files Tool 修复:过滤目录、按时间倒序排序、新增 size_bytes 字段
  4. 系统信息增强

    • 系统信息页新增工作目录(项目根目录)展示,路径一目了然

🔧 改进

  • 前端整体优化:清理废弃组件(HeaderSearch、NoticeIcon、swagger 等),精简代码
  • 登录页、Token 管理、系统信息等页面 UI 重构优化
  • static/ 构建产物从 git 跟踪中移除,遵循最佳实践
  • 更新 README 项目结构说明,补充 website/data/ 等运行时目录

📚 脚本 & 文档

  • 新增 scripts/httpcat-api.sh — AK/SK 签名调用示例脚本
  • 新增 scripts/search-and-upload-image.sh — 图片搜索上传脚本

v0.2.1

✨ 新功能

  1. Open API(AK/SK 签名认证)

    • 新增 AK/SK 签名认证机制,支持脚本/CI/AI 直接调用所有 API
    • 签名算法基于 HMAC-SHA256,与 AWS Signature V4 行业标准一致
    • 支持恒定时间比较防时序攻击、±60 秒时间窗口防重放攻击
  2. 认证合并中间件

    • 新增 TokenOrAKSKAuth 合并中间件,同一接口同时支持 JWT 和 AK/SK 两种认证方式
    • 白名单机制(upload/download/login)保持不变

📚 文档优化

  • README 新增 Open API 完整文档:签名算法、接口列表、调用示例
  • 新增 AK/SK 场景下上传文件的端到端流程说明(Shell + Python 示例)
  • 新增 POST 请求签名示例(带 JSON Body)
  • 新增 OpenClaw + httpcat 联动部署指南

v0.2.0

🎉 重大更新:新增 MCP (Model Context Protocol) 支持!

让 AI 助手(如 Claude、Cursor)直接管理你的 HttpCat 文件服务器。

✨ 新功能

  1. MCP Server 集成

    • 支持 SSE (Server-Sent Events) 传输协议
    • 可与 Claude Desktop、Cursor、CodeBuddy 等 AI 工具集成
    • AI 可直接执行文件管理操作,无需手动操作 Web 界面
  2. MCP Tools(9个工具)

    • list_files - 列出上传目录中的文件
    • get_file_info - 获取文件详情(大小、修改时间、MD5)
    • get_upload_history - 查询上传历史记录
    • get_disk_usage - 获取磁盘使用情况
    • upload_file - 通过 MCP 上传文件(需 Token)
    • request_delete_file - 请求删除文件(第一步)
    • confirm_delete_file - 确认删除文件(第二步)
    • get_statistics - 获取上传/下载统计
    • verify_file_md5 - 验证文件 MD5 完整性
  3. MCP Resources(3个资源)

    • filelist://current - 当前文件列表
    • disk://usage - 磁盘使用情况
    • system://info - 系统信息
  4. 安全增强

    • MCP 认证支持(可选 Bearer Token)
    • 两步删除确认机制,防止误删
    • 路径安全检查,防止目录遍历攻击

🐳 Docker 支持

  • 新增 Dockerfile 多阶段构建
  • 新增 docker-compose.yml 一键部署
  • 支持数据持久化挂载

📚 文档更新

  • 新增 docs/MCP_USAGE.md - MCP 使用指南(小白友好)
  • 新增 docs/DEPLOYMENT_STATUS.md - 部署状态文档

🔧 配置变更

conf/svr.yml 中新增 MCP 配置项:

server:
  mcp:
    enable: true                    # 是否启用 MCP Server
    auth_token: ""                  # MCP 认证 Token(可选)

📋 MCP 客户端配置示例

{
  "mcpServers": {
    "httpcat": {
      "type": "sse",
      "url": "http://your-server:8888/mcp/sse"
    }
  }
}

v0.1.5

  1. 提供独立卸载脚本,方便用户卸载。
  2. 增加了arm支持。

v0.1.4

  1. 添加文件管理-图片管理功能。 分页、删除、下载、清空、添加
    • 支持图片预览
    • 支持图片删除 ✔
    • 支持图片下载 ✔
    • 支持文件名修改
    • 图片一键清空 ✔
    • 支持图片分页查询 ✔ 图片管理功能,独立于文件上传功能,不需要appkey、appsecret,纯界面操作, 主要的需求场景是:内网环境,需要一个简单的图片管理工具,可以上传、下载、删除图片。 存储位置:默认存储在{配置的上传路径}/images目录下。
  2. 修复httpcat运行时间
  3. 前端优化上传文件开关状态图标显示

v0.1.3

  1. 优化打包脚本,自动修改md文件中的版本号。
  2. 修改配置文件默认监听端口是8888端口。 但是支持通过安装脚本参数指定监听端口号./install.sh -p 80
  3. fix 磁盘空间显示死值。
  4. 优化日志名,修改为httpcat.log。

v0.1.2

注意:本版本开始,前端直接合入安装包,不需要单独下载前端文件。

  1. 增加web界面增加拖拽上传文件功能。
  2. 上传文件日志列表添加文件创建时间和文件修改时间。
  3. 上传文件日志列表,可以点击查看详情,如果文件还在服务器端,支持web界面下载文件。
  4. 优化首页加载慢问题,以及考虑内网用户使用,不使用cdn源,直接pacakge.json中引入。
  5. 增加 install.sh一键安装和卸载httpcat。 推荐用户直接使用install.sh安装httpcat。使用到了unzip,如果没有安装unzip,需要先安装unzip。 apt install unzip
  6. 修复磁盘占用饼图显示问题。
  7. 解决systemctrl启动,卡主问题。

v0.1.1

注意该版本配置文件格式有变化,如果使用历史版本配置文件,需要使用新的配置文件。

  1. 页脚添加显示httpcat版本号
  2. 上传文件日志列表,可以点击查看详情,并且可以下载文件。
  3. 展示httpcat配置信息(上传文件路径、下载文件路径,版本信息等)。
  4. 展示上传统计信息,下载统计信息。
  5. 上传接口单独使用配置文件配置开关,用户可以关闭上传能力。
  6. 支持下载统计、下载日志入库。

v0.1.0

本版本是带界面的,功能比较完善的一个版本,可以满足日常工作环境使用。

  1. curl界面提醒根据当前ip和端口修改curl命令
  2. 前端细节优化 生产环境中取消显示SettingDrawer curl界面提醒根据当前ip和端口修改curl命令
  3. 修复上传日志查询分页问题

v0.0.9

  1. 上传历史日志,添加appkey字段,这样可以区分不同的appkey上传的文件。
  2. 上传历史日志,支持ip、appkey过滤查询。
  3. fix bug: appkey开启和关闭能力。
  4. 支持修改管理员密码。
  5. 修复页面F5刷新404问题。

v0.0.8

  1. 增加了上传token管理能力,可以给不同用户或平台配置不同的appkey、appsecret,生成不同的上传token。
  2. 下载接口wget使用说明。
  3. 自定义appkey、appsecret,生成上传token 以及上传校验实现。

v0.0.7

  1. 支持用户账号密码登录
  2. 添加了界面,可以登录查询、删除上传历史日志

v0.0.6

  1. 更新英文README.md
  2. 开启sqlite情况下,支持web接口查询上传历史记录
  3. 命令行-v参数查看版本信息

v0.0.5

  1. 支持上传历史记录sqlite存储
    • 开启sqlite配置,上传历史记录会存储在sqlite数据库中

v0.0.4

  1. 增加了上传凭证功能:
    • 根据ak、sk生成独立的上传token凭证,上传文件时候,附带token,服务端会校验token是否合法。
  2. 上传成功通知业务服务器的URL支持
    • 当上传文件任务完成时,系统会向设置的 persistentNotifyUrl 发送 POST 请求,通知处理结果。您可以将实际的通知 URL 替换成您的有效 URL,以便接收通知。
    • 经过测试,支持企业微信webhook通知,配置文件中配置企业微信webhook地址,上传成功后,会发送企业微信通知。

v0.0.3

  1. 增加了p2p能力:
  • 节点发现 目前只支持局域网内部节点发现。使用mDNS进行节点发现
  • 通过http发送向节点监听的主题发送任意消息 通过配置文件配置节点监听的主题,可以通过http接口,发布消息 暂时没有想到好的应用场景,配置默认是关闭,如果你不使用p2p可以忽略。

v0.0.2

  1. 优化文件上传超时问题,可以参数配置超时时间 由于需要上传下载大文件,需要设置较长的读写超时,因此需要使用http.Server
  2. 添加获取文件信息接口(包含md5)
  3. 添加获取目录配置信息接口
  4. 新增systemd配置文件

v0.0.1

  1. httpcat基本可用版本
  2. 通过灵活配置 static、下载目录、上传目录,可以满足日常工作环境使用。 可以用作你web服务器,可以用作你内网上传下载文件需求,非常简单易用。