Releases: shepf/httpcat
Releases · shepf/httpcat
v0.7.0
v0.7.0
📦🔐 分片上传 + 断点续传 + 登录防爆破
✨ 新功能
-
分片上传 + 断点续传
- 新增
t_upload_session表记录每个会话的已上传分片 bitmap - 支持浏览器/脚本将大文件切片并行上传,中途断网可恢复
- 默认分片 5MB,并发 3,单文件上限 100GB
- 整体 MD5 校验 + 单片 MD5 校验(可选)
- 秒传:同 MD5 文件已存在时通过硬链接直接返回成功
- 过期会话(24 小时)自动清理分片临时目录
- 新增
-
登录限流防爆破
- 同一 IP 5 分钟内登录失败 ≥ 5 次,自动锁定 15 分钟
- 登录成功立即清空失败计数
- 纯内存实现,零外部依赖(无 Redis)
- 锁定期间所有尝试直接返回 429,保护后端资源
-
下载支持 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
v0.6.0
📋🔍 操作日志审计 + 文件在线预览 + 打包下载
✨ 新功能
-
操作日志审计系统
- 新增操作日志记录中间件(
OperationLogger),自动记录所有用户操作(上传/下载/删除/重命名/创建文件夹/分享/预览/登录/配置修改等) - 操作日志管理页面,支持分页、多条件筛选(操作类型、用户名、IP、路径、日期范围)
- 操作统计接口,支持按操作类型聚合统计
- 新增操作日志记录中间件(
-
文件在线预览
- 支持文本/代码文件(
.txt,.md,.json,.go,.py,.js等 50+ 种格式)在线查看 - 支持 PDF 文档在线预览
- 支持图片(JPG/PNG/GIF/WebP/SVG)、视频(MP4/WebM)、音频(MP3/WAV/FLAC)在线播放
- 前端预览组件支持全屏模式
- 预览信息接口返回文件类型、大小、是否可预览等元数据
- 支持文本/代码文件(
-
文件打包下载
- 支持多文件选择后打包为 ZIP 下载
- 支持跨子目录文件的批量打包
-
上传增强
- 文件上传支持指定子目录(
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
v0.5.0
📁✨ 文件管理增强 + Dashboard 统计升级
✨ 新功能
-
文件管理增强
- 子目录导航:面包屑导航支持多级目录浏览,点击文件夹可进入子目录
- 新建文件夹:支持在当前目录下创建新文件夹
- 文件重命名:支持对文件和文件夹进行重命名
- 单个删除:每个文件/文件夹操作列增加删除按钮(文件夹需为空)
- 批量删除:支持多选文件后批量删除
- 文件搜索:文件列表页支持按文件名实时搜索过滤
- 文件类型标签:根据文件扩展名显示彩色类型标签(PDF/DOC/ZIP/图片/代码等)
- 列排序:支持按文件名、大小、修改时间排序
-
Dashboard 统计升级
- 新增「文件 & 分享总览」卡片:文件总数、文件夹数、文件总大小、分享链接统计
- 文件总览通过递归遍历统计,展示格式化的文件大小(KB/MB/GB/TB)
- 分享统计展示有效链接数、总链接数、累计下载次数
-
下载历史记录
- 新增下载历史日志查询接口,支持分页、按文件名/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 层新增完整的类型定义(
FileItem、DeleteFilesParams、CreateFolderParams、RenameFileParams等)
v0.4.0
v0.4.0
🔒🔗 安全加固 + 文件分享
✨ 新功能
- 文件分享:支持通过链接分享文件,可设置有效期、下载次数限制和提取码保护
- 分享页面:独立的分享访问页面,支持提取码验证和文件下载
- 分享管理:新增分享管理页面,查看所有分享记录和统计信息
- 匿名访问:分享链接支持匿名下载,无需登录(可配置关闭)
- 修改密码页面:新增独立的修改密码页面,替代原有弹窗
🔐 安全增强
- 密码哈希升级到 bcrypt,旧密码登录时自动无感升级
- 首次登录强制修改默认密码,未改密码前无法使用任何功能
- MCP 开启时强制配置 auth_token,未配置则拒绝启动
- 文件操作全面防护目录穿越和符号链接攻击
🔧 改进
- 头像菜单新增「修改密码」入口
- 提取码简化为开关模式,启用后自动生成
- 分享下载体验优化:本地计数更新、次数用完自动禁用按钮
- 下载目录默认值与上传目录统一,开箱即用
- 清理废弃文件,统一日志格式
v0.3.0
v0.3.0
🎉 重大更新:新增 Web 端系统配置管理!
告别手动编辑配置文件,在浏览器中即可完成所有服务配置的查看和修改。
✨ 新功能
-
系统配置页面(核心功能)
- 新增独立的「系统配置」管理页面,支持在 Web 界面直接修改服务配置
- 存储路径配置:可视化修改上传/下载子目录,自动路径安全校验(防目录穿越)
- HTTP 服务配置:在线修改后端服务端口,开发模式下自动检测并提示访问端口与服务端口差异
- 文件上传策略:一键开关文件上传、Token 校验,实时调整上传凭证有效期和文件大小限制
- 企业微信 Bot 通知:在线配置 Webhook URL,支持开关控制
- 缩略图配置:动态调整缩略图尺寸(50-2000px)
- 日志级别:在线切换日志级别(Debug ~ Fatal),无需重启
- 配置分为「热更新」和「需重启」两类,清晰标记
-
配置持久化与服务重启
- 所有配置变更自动持久化到 YAML 配置文件
- 需重启的配置(端口、存储路径)支持一键重启流程:保存配置 → 密码验证 → 优雅关闭 → 自动重连检测
- 重启过程全程可视化(保存中 → 重启中 → 重连中 → 完成)
- 后端支持重启信号通道,由 systemd/Docker 自动拉起新进程
-
图片管理增强
- 图片管理页面新增缩略图网格视图模式,支持列表/网格切换
- 网格视图中支持图片预览、下载、删除操作
- 优化图片缩略图加载和展示效果
httpcat_v0.3.0_linux-arm64.tar.gz
v0.2.3
v0.2.2
v0.2.2
✨ 新功能
-
文件列表页面
- 新增文件列表功能菜单,支持查看上传目录中的文件列表
- 文件列表接口过滤目录,只返回可下载的文件
- 支持按修改时间倒序排列
-
图片上传鉴权
- 图片上传接口同文件上传一样,需要 UploadToken 校验
- 上传图片白名单机制保持与文件上传一致
-
MCP 增强
- 新增
upload_imageTool,支持通过 MCP 上传图片(生成缩略图,可在图片管理页面查看) list_filesTool 修复:过滤目录、按时间倒序排序、新增size_bytes字段
- 新增
-
系统信息增强
- 系统信息页新增工作目录(项目根目录)展示,路径一目了然
🔧 改进
- 前端整体优化:清理废弃组件(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 - Open API(AK/SK 签名认证)
✨ 新功能
-
Open API(AK/SK 签名认证)
- 新增 AK/SK 签名认证机制,支持脚本/CI/AI 直接调用所有 API
- 签名算法基于 HMAC-SHA256,与 AWS Signature V4 行业标准一致
- 支持恒定时间比较防时序攻击、±60 秒时间窗口防重放攻击
-
认证合并中间件
- 新增
TokenOrAKSKAuth合并中间件,同一接口同时支持 JWT 和 AK/SK 两种认证方式 - 白名单机制(upload/download/login)保持不变
- 新增
📚 文档优化
- README 新增 Open API 完整文档:签名算法、接口列表、调用示例
- 新增 AK/SK 场景下上传文件的端到端流程说明(Shell + Python 示例)
- 新增 POST 请求签名示例(带 JSON Body)
📦 安装
# 下载并解压(以 Linux amd64 为例)
tar -zxvf httpcat_v0.2.1_linux-amd64.tar.gz
cd httpcat_v0.2.1_linux-amd64
# 安装
sudo ./install.sh
# 或直接运行
./httpcat --port=8888 -C conf/svr.ymlv0.2.0 - MCP 支持 & Docker 集成
🎉 v0.2.0 - MCP 支持 & Docker 集成
让 AI 助手(如 Claude、Cursor、CodeBuddy)直接管理你的 HttpCat 文件服务器!
✨ 新功能
MCP (Model Context Protocol) 支持
- 支持 SSE 传输协议,可与 Claude Desktop、Cursor 等 AI 工具集成
- 9 个 MCP Tools:list_files, upload_file, delete_file 等
- 3 个 MCP Resources:文件列表、磁盘使用、系统信息
- 两步删除确认机制,防止误删
Docker 支持
- 新增
Dockerfile多阶段构建 - 新增
docker-compose.yml一键部署 - 支持数据持久化挂载
安全增强
- MCP Bearer Token 认证(可选)
- 路径安全检查,防止目录遍历攻击
📦 快速安装
Linux / macOS
# 下载
wget https://github.com/dockershe/httpcat/releases/download/v0.2.0/httpcat_v0.2.0_linux-amd64.tar.gz
# 解压并安装
tar -zxvf httpcat_v0.2.0_linux-amd64.tar.gz
cd httpcat_v0.2.0_linux-amd64
sudo ./install.sh
# 启动
sudo systemctl start httpcat