19174616018
|
5688057607
|
fix: bump app.js cache busting version
|
2026-02-18 10:08:11 +08:00 |
|
19174616018
|
863c23f946
|
feat: add configurable stealth download security policies
|
2026-02-18 09:48:14 +08:00 |
|
19174616018
|
51b84d4966
|
fix: improve reservation cleanup and share popup handling
|
2026-02-17 23:55:31 +08:00 |
|
19174616018
|
01b15e1c28
|
feat: add share security, resumable upload, global search and reservation ops panel
|
2026-02-17 23:36:30 +08:00 |
|
19174616018
|
78f5f02f83
|
fix: bump app.js cache-busting version
|
2026-02-17 22:56:49 +08:00 |
|
19174616018
|
8d6ffa3448
|
ui: show file names instead of full paths in shares
|
2026-02-17 22:54:12 +08:00 |
|
19174616018
|
71733a5efc
|
style: align share and direct-link table layout
|
2026-02-17 22:42:11 +08:00 |
|
19174616018
|
88a64b44cd
|
fix: unify share/direct link click and copy actions
|
2026-02-17 22:39:19 +08:00 |
|
19174616018
|
d003ab711e
|
fix: normalize traffic range buttons layout in settings
|
2026-02-17 22:14:40 +08:00 |
|
19174616018
|
4d226f3b86
|
feat: add independent direct-link sharing flow
|
2026-02-17 21:57:38 +08:00 |
|
19174616018
|
77bdda5fdb
|
test: update admin/share edge scripts for cookie+csrf auth
|
2026-02-17 21:32:07 +08:00 |
|
19174616018
|
fede6c3b70
|
feat: add server-side admin user pagination and align traffic report accounting
|
2026-02-17 20:30:02 +08:00 |
|
19174616018
|
0791082fde
|
feat: improve admin user management with filters and pagination
|
2026-02-17 20:13:32 +08:00 |
|
19174616018
|
807d5e5fcb
|
feat: improve media preview UX with caching and loading states
|
2026-02-17 20:03:02 +08:00 |
|
19174616018
|
3c86e18bad
|
fix: remove preview content-type override for aliyun oss compatibility
|
2026-02-17 19:51:01 +08:00 |
|
19174616018
|
60e7e5bb78
|
fix: use preview-mode signed URLs and graceful media preview fallback
|
2026-02-17 19:36:49 +08:00 |
|
19174616018
|
d6ceac5dbe
|
fix: precheck local downloads to avoid JSON file download on quota errors
|
2026-02-17 19:32:48 +08:00 |
|
19174616018
|
3ace94d767
|
fix: fallback to file icon when thumbnail load fails
|
2026-02-17 19:29:42 +08:00 |
|
19174616018
|
0c660f65d6
|
feat: make zero download quota block downloads and use -1 for unlimited
|
2026-02-17 19:25:39 +08:00 |
|
19174616018
|
725c252100
|
fix: precheck local share download quota at download-url stage
|
2026-02-17 19:08:47 +08:00 |
|
19174616018
|
b93547d111
|
chore: properly ignore runtime storage and data directories
|
2026-02-17 19:07:11 +08:00 |
|
19174616018
|
ef67cd2a44
|
fix: move share quota block to download and add 3s download alert
|
2026-02-17 19:05:12 +08:00 |
|
19174616018
|
7983ab504a
|
feat: switch OSS download quota to reservation plus log reconcile
|
2026-02-17 18:12:33 +08:00 |
|
19174616018
|
5cdd8e9c84
|
fix: force OSS direct download even when traffic quota is enabled
|
2026-02-17 17:40:55 +08:00 |
|
19174616018
|
536e807b38
|
feat: add user download traffic reports and restore OSS direct downloads
|
2026-02-17 17:36:26 +08:00 |
|
19174616018
|
753434ff49
|
feat: enhance download traffic quota lifecycle controls
|
2026-02-17 17:19:25 +08:00 |
|
19174616018
|
83937db680
|
feat(quota): add downloadable traffic quota with local/OSS/share metering
|
2026-02-17 16:52:26 +08:00 |
|
19174616018
|
854b1374ab
|
fix(security): harden CORS/cookie policy and share path validation
|
2026-02-12 21:39:01 +08:00 |
|
19174616018
|
7cab8516de
|
fix(ui): apply true large-screen scaling and mobile overflow safeguards
|
2026-02-12 20:33:36 +08:00 |
|
19174616018
|
63392ea1b2
|
fix(frontend): improve 2k/4k scaling and mobile overflow responsiveness
|
2026-02-12 20:28:08 +08:00 |
|
19174616018
|
08b3c41d79
|
feat: apply UI/storage/share optimizations and quota improvements
|
2026-02-12 18:02:57 +08:00 |
|
19174616018
|
05fc04258d
|
feat(frontend): unify landing style and add product/scenes/start pages
|
2026-02-12 18:02:28 +08:00 |
|
 19174616018andClaude Opus 4.5
|
4809be5bae
|
chore: 移除系统设置的密码二次验证
移除 /api/admin/settings 路由的 requirePasswordConfirmation 中间件,
简化管理员操作流程。系统设置更新现在仅依赖管理员登录认证。
注意:此修改降低了安全性,建议在生产环境中考虑其他安全措施。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-21 11:58:39 +08:00 |
|
 19174616018andClaude Opus 4.5
|
ed383e596d
|
fix: 部署脚本添加 ENCRYPTION_KEY 和 ENABLE_CSRF 配置
修复问题:
1. 新安装时自动生成 ENCRYPTION_KEY(用于加密 OSS 敏感信息)
2. 新安装时默认启用 CSRF 保护(ENABLE_CSRF=true)
3. 升级时自动检查并补充缺失的 ENCRYPTION_KEY 和 ENABLE_CSRF
解决了部署后服务因缺少 ENCRYPTION_KEY 而无法启动的问题。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-21 11:50:25 +08:00 |
|
 19174616018andClaude Opus 4.5
|
a30b3cac77
|
fix: 自动生成 SESSION_SECRET 配置
- 新安装时自动生成随机 SESSION_SECRET
- 更新时自动补充缺失的 SESSION_SECRET
- 避免生产环境因缺少密钥而启动失败
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 11:00:17 +08:00 |
|
 19174616018andClaude Opus 4.5
|
8eee63436c
|
feat: 全面优化代码质量至 8.55/10 分
## 安全增强
- 添加 CSRF 防护机制(Double Submit Cookie 模式)
- 增强密码强度验证(8字符+两种字符类型)
- 添加 Session 密钥安全检查
- 修复 .htaccess 文件上传漏洞
- 统一使用 getSafeErrorMessage() 保护敏感错误信息
- 增强数据库原型污染防护
- 添加被封禁用户分享访问检查
## 功能修复
- 修复模态框点击外部关闭功能
- 修复 share.html 未定义方法调用
- 修复 verify.html 和 reset-password.html API 路径
- 修复数据库 SFTP->OSS 迁移逻辑
- 修复 OSS 未配置时的错误提示
- 添加文件夹名称长度限制
- 添加文件列表 API 路径验证
## UI/UX 改进
- 添加 6 个按钮加载状态(登录/注册/修改密码等)
- 将 15+ 处 alert() 替换为 Toast 通知
- 添加防重复提交机制(创建文件夹/分享)
- 优化 loadUserProfile 防抖调用
## 代码质量
- 消除 formatFileSize 重复定义
- 集中模块导入到文件顶部
- 添加 JSDoc 注释
- 创建路由拆分示例 (routes/)
## 测试套件
- 添加 boundary-tests.js (60 用例)
- 添加 network-concurrent-tests.js (33 用例)
- 添加 state-consistency-tests.js (38 用例)
- 添加 test_share.js 和 test_admin.js
## 文档和配置
- 新增 INSTALL_GUIDE.md 手动部署指南
- 新增 VERSION.txt 版本历史
- 完善 .env.example 配置说明
- 新增 docker-compose.yml
- 完善 nginx.conf.example
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 10:45:51 +08:00 |
|
 19174616018andClaude Opus 4.5
|
e4d418645c
|
fix: 全面修复和优化 OSS 功能
## 安全修复
- 修复 /api/user/profile 接口泄露 OSS 密钥的安全漏洞
- 增强 getObjectKey 路径安全检查(空字节注入、URL 编码绕过)
- 修复 storage.end() 重复调用问题
- 增强上传签名接口的安全检查
## Bug 修复
- 修复 rename 使用错误的 PutObjectCommand,改为 CopyObjectCommand
- 修复 CopySource 编码问题,正确处理特殊字符
- 修复签名 URL 生成功能(添加 @aws-sdk/s3-request-presigner)
- 修复 S3Client 配置(阿里云 region 格式、endpoint 处理)
- 修复分页删除和列表功能(超过 1000 文件的处理)
- 修复分享下载使用错误的存储类型字段
- 修复前端媒体预览异步处理错误
- 修复 OSS 直传 objectKey 格式不一致问题
- 修复包名错误 @aws-sdk/request-presigner -> @aws-sdk/s3-request-presigner
- 修复前端下载错误处理不完善
## 新增功能
- 添加 OSS 连接测试 API (/api/user/test-oss)
- 添加重命名失败回滚机制
- 添加 OSS 配置前端验证
## 其他改进
- 更新 install.sh 仓库地址为 git.workyai.cn
- 添加 crypto 模块导入
- 修复代码格式和重复定义问题
- 添加缺失的表单对象定义
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 09:46:00 +08:00 |
|
19174616018
|
a7c577acef
|
更新 README:迁移到 Gitea 仓库
- 更新一键部署命令(curl/wget)
- 更新 Docker 部署的 git clone 命令
- 更新开发环境的 git clone 命令
- 更新项目地址,Gitea 为主仓库,Gitee 为镜像
- 更新问题反馈说明
|
2025-12-10 22:59:34 +08:00 |
|
 19174616018andClaude
|
e2c8bf2c23
|
🎨 调整文件列表hover颜色
- 暗色主题:rgba(255, 255, 255, 0.05) 微亮
- 亮色主题:rgba(0, 0, 0, 0.04) 微暗
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 16:35:45 +08:00 |
|
 19174616018andClaude
|
300a17c5da
|
🐛 修复文件列表hover时变白的问题
- 移除硬编码的mouseover/mouseout颜色
- 添加.file-list-row类使用CSS处理hover效果
- 深色/浅色主题都使用半透明紫色作为hover背景
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 16:30:16 +08:00 |
|
 19174616018andClaude
|
310553e0e3
|
🐛 修复文件名包含反引号时变成undefined的问题
- 从sanitizeInput正则表达式中移除反引号
- 之前map中没有反引号映射导致返回undefined
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 15:27:59 +08:00 |
|
 19174616018andClaude
|
8d3962b67e
|
🐛 加强文件名解码的空值处理
- 后端decodeHtmlEntities添加空字符串默认值
- 前端decodeHtmlEntities非字符串时返回空字符串
- getFileDisplayName增强类型检查
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 14:56:26 +08:00 |
|
 19174616018andClaude
|
ac91fe7484
|
✨ 前端添加HTML实体解码兜底
- 添加decodeHtmlEntities方法解码文件名
- 添加getFileDisplayName统一获取显示名称
- 确保文件名正确显示,即使后端未解码
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 14:04:50 +08:00 |
|
 19174616018andClaude
|
1221c0d5c9
|
✨ 添加displayName字段显示解码后的文件名
- 后端返回文件列表时添加displayName字段(解码HTML实体)
- 前端使用displayName显示文件名,保持原始name用于操作
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 13:54:58 +08:00 |
|
 19174616018andClaude
|
d111c63e8b
|
🐛 修复特殊字符文件名的处理问题
- 添加decodeHtmlEntities函数解码HTML实体
- 在rename/mkdir/folder-info/delete接口中解码文件名和路径
- 删除操作支持多候选路径,处理二次编码情况
- 移除sanitizeInput中对反引号的转义
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 13:44:23 +08:00 |
|
 19174616018andClaude
|
0ba370dc83
|
🐛 优化弹窗被拦截时的处理方式
- 弹窗被阻止时改为toast提示,避免当前页跳转
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 13:12:41 +08:00 |
|
 19174616018andClaude
|
f4e76696d9
|
🐛 修复分享链接打开方式
- 添加openShare方法替代直接调用window.open
- 处理弹窗被浏览器阻止的情况,自动退回当前页跳转
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 13:04:11 +08:00 |
|
 19174616018andClaude
|
00e1cadbed
|
✨ 重新设计分享管理页面
- 添加搜索/筛选功能(关键字、类型、状态、排序)
- 重新设计卡片视图,展示更多信息(状态、类型、加密、存储来源等)
- 添加filteredShares计算属性实现筛选和排序
- 添加辅助方法:getShareTypeLabel、getShareStatus、getShareProtection等
- 优化分享卡片样式,支持深色/浅色主题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 12:57:35 +08:00 |
|
 19174616018andClaude
|
b580ddecd7
|
✨ 优化监控页面加载体验
- 添加monitorTabLoading整体加载遮罩
- 创建openMonitorTab()和initMonitorTab()方法
- 使用Promise.all并行加载健康检测和系统日志
- 数据全部加载完成后才显示监控内容,彻底解决刷新闪烁问题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 12:00:43 +08:00 |
|
 19174616018andClaude
|
c3ec191354
|
🐛 优化监控页面初始状态设置
- 将adminTab计算提取为initialAdminTab变量
- healthCheck.loading和systemLogs.loading根据initialAdminTab设置初始值
- 确保data()执行时所有状态一致,避免刷新闪烁
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 11:50:59 +08:00 |
|
 19174616018andClaude
|
aab7e1ff36
|
🐛 修复监控页面loading状态 - 在mounted中提前设置
- 将healthCheck.loading和systemLogs.loading初始值改回false
- 在mounted中、checkLoginStatus之前,判断adminTab并设置loading
- 确保在appReady变为true之前loading状态已正确设置
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 11:28:18 +08:00 |
|
 19174616018andClaude
|
1c49d34afb
|
🐛 修复监控页面刷新时的"没有数据"闪烁
- 健康检测:添加loading状态显示,使用v-else-if链
- 系统日志:修复v-if逻辑,loading优先于空状态显示
- 确保在数据加载完成前显示"加载中"而不是"暂无数据"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 11:24:07 +08:00 |
|
 19174616018andClaude
|
6c1c07919f
|
🐛 修复监控页面刷新时显示"没有数据"的闪烁
- 当adminTab为monitor时,healthCheck和systemLogs的loading初始值设为true
- 这样在数据加载完成前显示"加载中"而不是"没有数据"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 11:19:19 +08:00 |
|
 19174616018andClaude
|
3e68f57fc5
|
🐛 修复管理员标签页刷新时的UI闪烁
- adminTab初始值直接从localStorage读取,而非在checkLoginStatus中恢复
- 这样Vue初始化时就已经是正确的标签页,避免先显示概览再切换的闪烁
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 11:11:20 +08:00 |
|
 19174616018andClaude
|
c5b1d514be
|
🐛 修复页面刷新时UI闪烁问题
- 添加appReady状态控制应用显示时机
- 在checkLoginStatus完成后才显示主界面
- 添加加载占位符动画(云图标脉冲效果)
- 使用v-if/v-else确保UI状态一致性
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 11:07:07 +08:00 |
|
 19174616018andClaude
|
07d8e41380
|
✨ 添加管理员标签页持久化功能
- 刷新页面后管理员标签页保持不变(概览/设置/监控/用户/工具)
- 使用localStorage存储当前标签页状态
- 登出时自动清理保存的标签页状态
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 11:03:55 +08:00 |
|
 19174616018andClaude
|
34e874e1e6
|
ui: 优化监控页面交互体验
- 点击监控标签时自动加载健康检查和系统日志
- 缩小清理/刷新按钮尺寸,更简洁美观
- 按钮文字精简:"清理旧日志" → "清理"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 10:54:26 +08:00 |
|
 19174616018andClaude
|
c99b19a86d
|
security: refreshToken 也存储在 HttpOnly Cookie 中
## 后端修改
- 登录时同时设置 token 和 refreshToken 的 HttpOnly Cookie
- refreshToken 有效期7天,token 有效期2小时
- 刷新接口优先从 Cookie 读取 refreshToken(向后兼容请求体)
- 登出时同时清除两个 Cookie
## 前端修改
- 移除 refreshToken 变量和相关逻辑
- 简化 doRefreshToken(),不再手动传递 refreshToken
- 简化 tryRefreshOrLogout(),直接尝试刷新
## 好处
- 页面刷新后 refreshToken 不会丢失
- 完全无感刷新,用户体验更好
- 前端代码更简洁(减少约20行)
- refreshToken 也无法被 XSS 窃取
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 10:38:40 +08:00 |
|
 19174616018andClaude
|
38d18018a5
|
security: 实施 HttpOnly Cookie 鉴权方案
## 后端修改
- 新增 /api/logout 接口清除认证 Cookie
## 前端修改
- 移除 localStorage 存储 token/refreshToken(防止 XSS 窃取)
- 移除所有手动 Authorization 头(共36处)
- checkLoginStatus 改为直接调用 API 验证(Cookie 自动携带)
- logout 改为调用后端接口清除 Cookie
- 简化 token 刷新逻辑
## 安全性提升
- Token 从 localStorage 迁移到 HttpOnly Cookie
- XSS 攻击无法通过 JS 读取 token
- 配合 SameSite 属性防御 CSRF 攻击
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 10:33:27 +08:00 |
|
 19174616018andClaude
|
e81b1dd89e
|
fix: 修复移动端文件列表滑动问题
- 移除 touchstart 中的 event.preventDefault(),不再阻止默认滚动
- 添加 handleLongPressMove 方法检测手指移动
- 滑动超过 10px 时自动取消长按,允许正常滚动
- 为 grid 和 list 视图的文件项添加 @touchmove 事件
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-30 10:12:46 +08:00 |
|
 19174616018andClaude
|
ae27ee3791
|
fix: 修复验证码session保存时序问题
问题原因:
- 验证码API在session.save()完成前就发送响应
- 导致客户端获取验证码图片时session可能未保存成功
修复:
- 将res.send()移到session.save()回调内
- 确保session保存成功后再返回验证码图片
- 添加验证码验证调试日志帮助诊断
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-28 14:11:36 +08:00 |
|
 19174616018andClaude
|
a9cc3a56ad
|
fix: 修复验证码请求429错误
问题:
- 短时间内多次请求验证码触发限流(429 Too Many Requests)
修复:
- 后端:验证码最小请求间隔从3秒改为1秒
- 前端:添加2秒防抖,避免重复请求
- 前端:429错误时保留已有验证码图片
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-28 14:06:23 +08:00 |
|
 19174616018andClaude
|
06f60bec06
|
fix: 修复验证码session不一致的问题
问题原因:
- 验证码图片通过<img src>加载,可能不携带session cookie
- 导致验证码生成和表单提交使用不同的session
修复方案:
- 改用axios请求获取验证码(blob格式)
- 确保验证码请求携带withCredentials
- 点击"忘记密码"时立即加载验证码
- 切换到注册模式时立即加载验证码
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-28 13:50:06 +08:00 |
|
 19174616018andClaude
|
6722d70666
|
feat: 实现Token刷新机制,缩短登录有效期
安全改进:
- Access Token有效期从7天缩短为2小时
- 添加Refresh Token机制(有效期7天)
- 关闭浏览器后较快失效,提升安全性
后端修改(auth.js):
- 添加generateRefreshToken函数生成刷新令牌
- 添加refreshAccessToken函数验证并刷新access token
- 分离ACCESS_TOKEN_EXPIRES和REFRESH_TOKEN_EXPIRES配置
后端修改(server.js):
- 登录时返回refreshToken和expiresIn
- 添加/api/refresh-token接口用于刷新token
- Cookie有效期同步调整为2小时
前端修改(app.js):
- 保存refreshToken到localStorage
- 添加自动刷新定时器(过期前5分钟刷新)
- 页面加载时若token过期自动尝试刷新
- 登出时清除refreshToken和定时器
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-28 13:46:51 +08:00 |
|
 19174616018andClaude
|
8bcd097db6
|
feat: 注册、重置密码、重发验证邮件添加验证码功能
后端修改:
- 添加通用验证码验证函数 verifyCaptcha()
- /api/register 接口添加验证码验证
- /api/password/forgot 接口添加验证码验证
- /api/resend-verification 接口添加验证码验证
前端修改:
- 注册表单添加验证码输入框和图片
- 忘记密码模态框添加验证码
- 重发验证邮件区域添加验证码输入
- 添加各表单的验证码刷新方法
- 提交失败后自动刷新验证码
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-28 13:11:03 +08:00 |
|
 19174616018andClaude
|
98d42b161c
|
✨ 新增独立的邮箱验证和重置密码页面
- 新建 verify.html: 邮箱验证专用页面,简洁美观
- 新建 reset-password.html: 重置密码专用页面,带表单验证
- 两个页面都支持亮色/暗色主题切换
- 更新 index.html 和 app.html 的重定向逻辑
- 旧链接自动重定向到新页面
用户体验改进:不再显示登录窗口背景,专注于当前操作
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-28 00:09:24 +08:00 |
|
 19174616018andClaude
|
4e0a8cd370
|
✨ 首页和登录页支持全局主题
- index.html 添加亮色主题 CSS 变量和样式
- index.html 添加 JS 自动加载全局主题
- app.js 修改 initTheme,未登录时从公开 API 获取全局主题
- 登录页面现在会跟随管理员设置的全局主题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-28 00:00:53 +08:00 |
|
 19174616018andClaude
|
38aeb18006
|
🔧 改进全局主题设置提示信息
当管理员设置了个人偏好时,提示"你设置了个人偏好,不受全局影响"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 23:49:06 +08:00 |
|
 19174616018andClaude
|
73f2f021fd
|
🔧 添加全局主题设置调试日志
添加console.log帮助诊断全局主题设置不生效的问题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 23:45:31 +08:00 |
|
 19174616018andClaude
|
1cb4d64d72
|
🐛 修复亮色主题下按钮不可见问题
- 添加 .btn-secondary 亮色主题样式(蓝色半透明背景)
- 添加 .btn-icon 亮色主题样式
- 修复管理员设置页面全局主题按钮显示问题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 23:42:52 +08:00 |
|
 19174616018andClaude
|
f1b838f5e3
|
🐛 修复亮色主题导航栏文字颜色
- 添加 .nav-item 深色文字颜色
- 修复悬停和激活状态的颜色
- 添加 .user-info 深色文字
- 修复用户头像图标颜色
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 23:35:29 +08:00 |
|
 19174616018andClaude
|
f764604fd3
|
🐛 修复亮色主题下导航栏等组件的样式问题
- 添加亮色主题导航栏样式覆盖(白色半透明背景)
- 修复导航项悬停效果在亮色主题下的显示
- 修复用户信息区域的亮色主题样式
- 添加卡片、表格、模态框、输入框的亮色主题样式
这个修复解决了亮色主题下导航栏变黑、文字不可见的问题。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 23:33:19 +08:00 |
|
 19174616018andClaude
|
376bf48bd1
|
🐛 修复主题偏好刷新后丢失的问题
原因:authMiddleware 中的 req.user 对象没有包含 theme_preference 字段,
导致 /api/user/theme 接口始终返回 undefined,用户设置的主题无法被正确读取。
修复:在 req.user 中添加 theme_preference 字段
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 23:25:25 +08:00 |
|
 19174616018andClaude
|
07618abc06
|
🐛 修复暗色主题下存储管理区域的样式冲突
- 修复存储管理外层容器的白色渐变背景
- 修复本地存储和SFTP存储卡片的白色背景
- 修复上传进度条的白色背景
- 修复SFTP配置卡片的白色背景
- 统一使用CSS变量实现主题适配
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 23:14:27 +08:00 |
|
 19174616018andClaude
|
121459f1b3
|
✨ 添加主题切换功能:支持暗色/亮色玻璃主题
功能说明:
- 管理员可在系统设置中配置全局默认主题
- 普通用户可在设置页面选择:跟随全局/暗色/亮色
- 分享页面自动继承分享者的主题偏好
- 主题设置实时保存,刷新后保持
技术实现:
- 后端:数据库添加theme_preference字段,新增主题API
- 前端:CSS变量实现主题切换,localStorage缓存避免闪烁
- 分享页:加载时获取分享者主题设置
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 23:02:48 +08:00 |
|
 19174616018andClaude
|
f0802ee89e
|
🎨 完善暗色主题:修复右键菜单、分享页面等
- 修复右键菜单白色背景问题(改为暗色玻璃效果)
- 修复分享成功链接不可见问题(添加绿色高亮)
- 修复媒体预览器白色背景
- 完全重写share.html为暗色主题(与主应用风格统一)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 22:51:24 +08:00 |
|
 19174616018andClaude
|
9be47f2009
|
🕐 修复系统日志时区问题
- 日志写入时使用 datetime('now', 'localtime') 替代 CURRENT_TIMESTAMP
- 日志统计和清理查询也使用本地时间
- 解决日志时间比实际时间慢8小时的问题(UTC → 北京时间)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 22:20:33 +08:00 |
|
 19174616018andClaude
|
b3fbd4c61f
|
🎨 将app.html全面改为暗色主题
- 添加CSS变量系统(背景色、边框色、文字颜色、强调色)
- 页面背景改为深色渐变效果
- 卡片、弹窗使用毛玻璃效果(backdrop-filter blur)
- 导航栏改为暗色玻璃样式
- 表单、按钮、表格全部适配暗色主题
- 添加自定义滚动条样式
- 统一警告/成功/错误提示框为半透明风格
- 全局替换浅色背景和文字颜色
与index.html保持一致的暗色毛玻璃设计风格
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 22:16:28 +08:00 |
|
 19174616018andClaude
|
c8d8643e07
|
feat(ui): 重新设计首页为暗色玻璃态风格
新设计特点:
- 暗色主题 + 动态渐变光斑背景
- 玻璃态卡片和导航栏效果
- 简洁两栏布局(文案+功能卡片)
- 网格背景增加科技感
- 固定底部技术栈展示
- 完整响应式适配
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 21:22:14 +08:00 |
|
 19174616018andClaude
|
94f57b5b14
|
feat(install): 添加数据库自动迁移功能
更新和修复模式会自动检测并迁移旧数据库:
- 检测 backend/ftp-manager.db(旧路径)
- 自动迁移到 backend/data/database.db(新路径)
- 同时迁移 journal/wal/shm 文件
- 新旧数据库同时存在时警告用户
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 21:08:14 +08:00 |
|
 19174616018andClaude
|
aca6a44a50
|
fix(database): 读取环境变量DATABASE_PATH而非硬编码路径
之前硬编码为 ftp-manager.db,导致 .env 中的 DATABASE_PATH 无效。
修复:
- 读取 DATABASE_PATH 环境变量
- 默认路径改为 ./data/database.db
- 自动创建数据库目录
- 启动时打印数据库路径便于确认
⚠️ 升级注意:旧用户需要迁移数据库文件:
mv backend/ftp-manager.db backend/data/database.db
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 21:07:12 +08:00 |
|
19174616018
|
11058fe9b0
|
fix(admin): 调整角色列宽度防止换行
|
2025-11-27 20:52:31 +08:00 |
|
 19174616018andClaude
|
ad9b9999ed
|
feat(admin): 用户列表添加角色列
- 新增"角色"列,显示"管理员"或"用户"标签
- 管理员显示紫色渐变背景+皇冠图标
- 普通用户显示灰色背景+用户图标
- 调整列宽适配新增列
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 20:47:47 +08:00 |
|
 19174616018andClaude
|
6a0a8ac758
|
fix(security): 修复邮箱验证绕过漏洞
之前的迁移脚本会在每次服务启动时将所有 is_verified=0 的用户
自动设为已验证,导致攻击者可以用假邮箱注册后等待服务重启绕过验证。
修复方案:仅将 is_verified IS NULL 且 verification_token IS NULL 的
用户设为已验证(这些是邮箱验证功能上线前注册的老用户)。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 20:35:01 +08:00 |
|
 19174616018andClaude
|
94662b8c07
|
feat(admin): 管理员页面改为标签页模式
- 添加5个标签页:概览、设置、监控、用户、工具
- 概览:调试模式开关、服务器存储统计
- 设置:系统设置、SMTP邮件配置
- 监控:健康检测、系统日志
- 用户:用户管理列表
- 工具:上传工具管理
优化管理员页面布局,减少滚动,提升使用体验
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 20:31:26 +08:00 |
|
 19174616018andClaude
|
c43181d983
|
fix(install): 修复更新/修复模式自动补充TRUST_PROXY配置
- 在 update_patch_env 中添加 TRUST_PROXY 检查和自动补充
- 修复模式(repair_main)现在也会调用 update_patch_env
- 更新 .env.example 添加 TRUST_PROXY 配置说明
- 更新修复模式的提示信息
解决使用Nginx反向代理时HTTPS检测失败的问题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 20:13:37 +08:00 |
|
 19174616018andClaude
|
e1943e4caa
|
feat(admin): 添加系统日志功能
## 新功能
1. **系统日志数据库**
- 新增 system_logs 表
- 支持日志级别:debug/info/warn/error
- 支持日志分类:auth/user/file/share/system/security
- 记录用户ID、用户名、IP地址、User-Agent
2. **日志记录**
- 用户注册成功/失败
- 用户登录成功/失败(密码错误)
- 系统操作(日志清理等)
3. **管理员API**
- GET /api/admin/logs - 查询日志(支持分页和筛选)
- GET /api/admin/logs/stats - 获取日志统计
- POST /api/admin/logs/cleanup - 清理旧日志
4. **前端界面**
- 日志列表展示(时间、级别、分类、内容、用户、IP)
- 筛选功能(级别、分类、关键词搜索)
- 分页导航
- 清理旧日志功能
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 19:54:46 +08:00 |
|
 19174616018andClaude
|
4d49b3a7f8
|
fix(security): 修复信任代理和HTTPS检测的安全漏洞
## 问题修复
1. **trust proxy 配置安全加固**
- 默认改为 false(不信任任何代理)
- 支持多种安全配置:数字跳数、loopback、IP/CIDR段
- 当配置为 true 时输出安全警告
2. **HTTPS 检测基于可信代理链**
- 使用 req.secure 替代直接读取 x-forwarded-proto
- Express 会根据 trust proxy 配置判断是否采信代理头
- 防止客户端伪造协议头绕过 HTTPS 强制
3. **客户端 IP 获取安全加固**
- 使用 req.ip 替代直接读取 X-Forwarded-For
- Express 会根据 trust proxy 配置正确处理代理链
- 防止客户端伪造 IP 绕过限流
4. **健康检测增加安全警告**
- trust proxy = true 时标记为严重安全问题
- 提示管理员配置更安全的代理信任策略
5. **安装脚本优化**
- 默认配置 TRUST_PROXY=1(单层Nginx场景)
- 添加详细的配置说明和安全警告
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 19:42:25 +08:00 |
|
 19174616018andClaude
|
9c62bc6bf6
|
feat(admin): 添加系统健康检测功能
新增管理员健康检测面板,可检测以下配置项:
- 安全配置:JWT密钥、CORS、HTTPS、管理员账号、登录防爆破
- 服务状态:SMTP邮件、数据库连接、存储目录
- 运行配置:反向代理支持、Node环境
修改文件:
- backend/auth.js: 新增 isJwtSecretSecure() 函数
- backend/server.js: 新增 /api/admin/health-check API
- frontend/app.js: 新增健康检测数据和方法
- frontend/app.html: 新增健康检测UI界面
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 19:37:42 +08:00 |
|
 19174616018andClaude
|
35d5e1b600
|
fix: SFTP下载使用新窗口打开直链
- app.js downloadFile: SFTP有直链时用window.open新窗口打开
- share.html downloadFile: 分享页面同样处理
- 本地存储下载保持原有方式不变
- 解决HTTPS页面下载HTTP直链的Mixed Content问题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 15:24:20 +08:00 |
|
19174616018
|
b598c99773
|
Revert "fix: 修复HTTPS页面下载HTTP直链的Mixed Content问题"
This reverts commit ef476e23d2.
|
2025-11-27 15:20:11 +08:00 |
|
 19174616018andClaude
|
ef476e23d2
|
fix: 修复HTTPS页面下载HTTP直链的Mixed Content问题
- downloadFile: 检测Mixed Content自动降级到后端代理下载
- getMediaUrl: 媒体预览同样处理Mixed Content
- 当HTTPS页面遇到HTTP直链时,自动使用服务器代理
- 添加Toast提示用户正在使用代理下载
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 14:59:09 +08:00 |
|
 19174616018andClaude
|
ffc0a4e7a2
|
fix(security): 完善SSRF防护的IP地址检查
- 完整IPv6私有地址检查:fc00::/7, fe80::/10, ff00::/8
- 添加云服务元数据地址检查:169.254.0.0/16
- 添加运营商级NAT地址检查:100.64.0.0/10
- 支持IPv4映射的IPv6地址递归检查
- 使用正则表达式优化172.16.0.0/12检查
- 代码结构更清晰,按IPv4/IPv6分类处理
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 14:56:42 +08:00 |
|
19174616018
|
fadd1fc5d7
|
chore: 更新app.js版本号强制刷新缓存
|
2025-11-27 13:47:37 +08:00 |
|
 19174616018andClaude
|
828aca897e
|
fix: 修复token过期后仍显示已登录状态的问题
- 页面加载时先向服务器验证token是否有效
- 添加axios响应拦截器,任何API返回401时自动登出
- 新增handleTokenExpired方法统一处理token失效
- token失效时显示Toast提示用户重新登录
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 13:43:11 +08:00 |
|
 19174616018andClaude
|
0bfb0a3cc9
|
feat: 添加SFTP空间使用统计功能
- 新增 /api/user/sftp-usage API,递归统计SFTP服务器空间使用情况
- 返回总使用空间、文件数、文件夹数
- 在设置页面显示SFTP空间统计信息
- 支持手动刷新统计数据
- 适配"仅SFTP"和"用户可选"两种权限模式的UI
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 13:39:51 +08:00 |
|
 19174616018andClaude
|
ba62b4e397
|
🔧 优化大文件上传支持
前端改进:
- 添加axios上传请求30分钟超时配置
Nginx改进:
- 增加代理超时时间到30分钟(1800秒)
- 添加 proxy_request_buffering off 避免大文件缓存到磁盘
- 添加 proxy_buffering off 禁用响应缓冲
- 优化 client_body_buffer_size
修复 ERR_HTTP2_PING_FAILED / Network Error 问题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-25 12:24:49 +08:00 |
|
 19174616018andClaude
|
bfe6cf05c4
|
🐛 修复邮箱验证链接无效的问题
- 修复 UserDB.create() 中 verification_token 未哈希存储的bug
- 注册时的token现在会进行SHA256哈希,与验证时的逻辑保持一致
- 解决"无效或已过期的验证链接"错误
问题原因:注册时存储原文token,验证时用哈希后的token匹配,导致永远匹配不上
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-25 12:21:11 +08:00 |
|
 19174616018andClaude
|
c3c6198a2f
|
🗑️ 移除不需要的文件
- 删除 docker-compose.yml
- 删除 restore-data.sh
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-25 11:50:04 +08:00 |
|
 19174616018andClaude
|
d8f2220613
|
🐛 修复本地存储文件删除失败的问题
问题:sanitizeInput 函数将 / 转义为 /,导致文件路径错误
修复:从 XSS 过滤中移除对 / 的转义,因为它是路径分隔符的合法字符
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-25 11:44:51 +08:00 |
|