|
|
7cfb76abf2
|
修复12项安全漏洞和代码质量问题
安全修复:
- 使用secrets替代random生成验证码,提升安全性
- 添加内存清理调度器,防止内存泄漏
- PIL缺失时返回503而非降级服务
- 改进会话安全配置,支持环境自动检测
- 密钥文件路径支持环境变量配置
Bug修复:
- 改进异常处理,不再吞掉SystemExit/KeyboardInterrupt
- 清理死代码(if False占位符)
- 改进浏览器资源释放逻辑,使用try-finally确保关闭
- 重构数据库连接池归还逻辑,修复竞态条件
- 添加安全的JSON解析方法,处理损坏数据
- 日志级别默认值改为INFO
- 提取魔法数字为可配置常量
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-11 20:00:19 +08:00 |
|
|
|
2e4b64dcb2
|
修复37项安全漏洞和Bug
高危修复:
- app.py: 添加ip_rate_limit_lock线程锁保护IP限流字典
- app.py: 添加validate_ip_port()验证代理IP/端口范围
- database.py: SQL字段名白名单验证防止注入
- playwright_automation.py: 改进浏览器进程强制清理逻辑
中危修复:
- database.py: 统一时区处理函数get_cst_now()
- database.py: 消除循环导入,移动app_security导入到顶部
- playwright_automation.py: 所有bare except改为except Exception
- app_config.py: dotenv导入失败警告+安全配置检查
- db_pool.py: 添加详细异常堆栈日志
- app_security.py: 用户名过滤零宽字符
- database.py: delete_old_task_logs分批删除避免锁表
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-11 19:35:29 +08:00 |
|
|
|
de51e1b7c7
|
修复多项安全漏洞和Bug
1. 安全修复:
- 修复密码重置接口用户枚举漏洞,统一返回消息防止信息泄露
- 统一密码强度验证为8位以上且包含字母和数字
- 添加第三方账号密码加密存储(Fernet对称加密)
- 修复默认管理员弱密码问题,改用随机生成强密码
- 修复管理员回复XSS漏洞,添加HTML转义
- 将MD5哈希替换为SHA256
2. 并发Bug修复:
- 修复日志缓存竞态条件,添加锁保护
- 修复截图信号量配置变更后不生效问题
3. 其他改进:
- 添加API参数类型验证和边界检查
- 新增crypto_utils.py加密工具模块
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-11 19:14:14 +08:00 |
|
|
|
b9edc4aaa2
|
修复多项安全漏洞
安全修复清单:
1. 验证码改为图片方式返回,防止明文泄露
2. CORS配置从环境变量读取,不再使用通配符"*"
3. VIP API添加@admin_required装饰器,统一认证
4. 用户登录统一错误消息,防止用户枚举
5. IP限流不再信任X-Forwarded-For头,防止伪造绕过
6. 密码强度要求提升(8位+字母+数字)
7. 日志不���记录完整session/cookie内容,防止敏感信息泄露
8. XSS防护:日志输出和Bug反馈内容转义HTML
9. SQL注入防护:LIKE查询参数转义
10. 路径遍历防护:截图目录白名单验证
11. 验证码重放防护:验证前删除验证码
12. 数据库连接池健康检查
13. 正则DoS防护:限制数字匹配长度
14. Account类密码私有化,__repr__不暴露密码
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-11 17:53:48 +08:00 |
|
|
|
4d3e4a09fd
|
修复代码质量问题(Bug #20, #1, #2)
修复的Bug:
- Bug #20: 删除重复函数定义 (update_admin_username重复定义)
- Bug #1: 删除类型转换冗余 (APIBrowseResult->BrowseResult无意义转换)
- Bug #2: 统一时区处理
主要改进:
1. 删除重复函数:
- 删除app.py:1023处重复的update_admin_username函数定义
- 避免函数覆盖导致的潜在问题
2. 删除冗余类型转换:
- APIBrowseResult和BrowseResult字段完全相同
- 删除run_task中的冗余转换代码
- 提升性能,减少维护成本
3. 统一时区处理:
- 新增BEIJING_TZ常量和get_beijing_now()辅助函数
- 替换所有分散的beijing_tz创建为统一函数调用
- 删除重复的datetime/pytz导入
- 涉及6处代码统一:
* log_to_client - 日志时间戳
* take_screenshot_for_account - 截图文件名
* get_screenshots - 文件修改时间
* run_scheduled_task - 定时任务星期检查
* check_user_schedules - 用户定时任务检查
* get_server_info_api - 服务器运行时长
影响:
- 提升代码质量和可维护性
- 统一时区处理,避免时间混淆
- 减少内存占用和CPU开销
受影响文件:
- app.py (所有修复)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-11 14:25:08 +08:00 |
|
|
|
6a905909d9
|
修复关键安全漏洞(Bug #19和Bug #13)
修复的Bug:
- Bug #19: 路径遍历漏洞
- Bug #13: 浏览器上下文竞态条件
主要改进:
1. 路径遍历防护:
- /screenshots/<filename> 端点添加is_safe_path()验证
- /static/<path:filename> 端点添加is_safe_path()验证
- 防止攻击者通过../等序列访问系统文件
2. 浏览器资源并发保护:
- PlaywrightAutomation类添加_lock线程锁
- get_iframe_safe()方法使用锁保护main_page访问
- close()方法使用锁保护资源释放
- _cleanup_on_exit()使用非阻塞锁避免退出死锁
- 解决TOCTOU(Time-of-Check-Time-of-Use)竞态条件
影响:
- 防止路径遍历攻击,保护系统文件安全
- 防止多线程环境下的浏览器资源竞争
- 提升系统安全性和稳定性
受影响文件:
- app.py (路径验证)
- playwright_automation.py (线程锁)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-11 14:12:01 +08:00 |
|
|
|
114a4107bb
|
修复所有资源泄漏问题(P0级bug)
修复的Bug:
- Bug #21: Playwright浏览器实例泄漏
- Bug #22: 数据库连接泄漏(已由连接池解决)
- Bug #23: 截图文件句柄泄漏
- Bug #24: 线程资源未清理
- Bug #25: requests.Session对象泄漏
主要改进:
1. PlaywrightAutomation类:
- 添加atexit注册,确保进程退出时关闭浏览器
- 添加__enter__/__exit__支持context manager
- 添加_closed标志防止重复关闭
- 添加_cleanup_on_exit静默清理方法
2. APIBrowser类:
- 添加atexit注册,确保Session正确关闭
- 添加__enter__/__exit__支持context manager
- 添加_closed标志防止重复关闭
3. 截图功能增强:
- 使用临时文件机制
- 添加文件大小验证
- 失败时自动清理临时文件
- 确保不产生垃圾文件
4. 应用关闭清理:
- 添加cleanup_on_exit()函数
- 注册SIGINT/SIGTERM信号处理器
- 停止所有运行中的任务
- 等待线程优雅退出
- 关闭浏览器线程池
- 关闭数据库连接池
影响:
- 防止长期运行导致的内存泄漏
- 确保进程异常退出时正确清理资源
- 提升系统稳定性和可靠性
受影响文件:
- playwright_automation.py
- api_browser.py
- app.py
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-11 13:48:06 +08:00 |
|
|
|
e07544784c
|
🐛 修复定时任务执行耗时显示为0的问题
- 启动监控线程等待所有任务完成后再更新日志
- 通过参数传递避免闭包问题
- 耗时现在正确反映实际任务执行时间
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-10 22:09:30 +08:00 |
|
|
|
d811fc7c56
|
✨ 添加注册自动审核功能
- 系统配置新增:自动审核开关、每小时注册限制、赠送VIP天数
- 数据库:添加 auto_approve_enabled, auto_approve_hourly_limit, auto_approve_vip_days 字段
- 后端API:支持保存和读取自动审核配置
- 管理后台:新增注册自动审核配置区域(绿色背景)
- 注册逻辑:支持自动审核通过并赠送VIP
功能说明:
1. 启用自动审核后,新用户注册自动通过,无需管理员审批
2. 每小时注册限制防止恶意注册
3. 可配置注册赠送VIP天数(设为0则不赠送)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-10 21:42:28 +08:00 |
|
|
|
3e8988896a
|
✨ 添加用户修改密码功能
- 左边栏添加修改密码按钮
- 添加修改密码弹窗
- 添加 /api/user/password API
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-10 20:37:27 +08:00 |
|
|
|
32a29e61e9
|
✨ 优化浏览器池和并发配置
1. 浏览器池改为按需启动模式
- 启动时不创建浏览器,有截图任务时才启动
- 空闲5分钟后自动关闭浏览器释放资源
2. 修复截图并发数保存问题
- 修复database.py中缺少保存max_screenshot_concurrent的代码
3. 去掉并发数上限限制
- 管理员可自由设置并发数,不再限制1-20/1-5
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-10 20:31:49 +08:00 |
|
|
|
7954aeaf59
|
✨ 添加定时任务日志管理功能
- 添加用户清空日志按钮
- 添加30天自动清理定时任务执行日志
- 简化日志API代码,移除调试日志
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-10 20:20:44 +08:00 |
|
|
|
f3c6a4d704
|
🧹 清理调试日志
- 移除日志弹窗调试日志
- 移除openModal调试日志
- 移除账号API调试日志
- 移除账号加载调试日志
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-10 20:11:18 +08:00 |
|
|
|
987c4f88e6
|
🔍 增强账号API诊断日志
添加更详细的日志输出,帮助排查问题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-10 20:02:13 +08:00 |
|
|
|
ef747cfb5f
|
🔍 添加账号加载诊断日志
帮助排查容器重启后账号丢失的问题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-10 19:55:56 +08:00 |
|
|
|
78a827c801
|
🔇 减少定时任务调试日志输出
- 移除每5秒的时间检查详细日志
- 移除星期/时间匹配的调试日志
- 移除账号ID类型和user_accounts内容的调试日志
- 保留关键的执行状态和错误日志
日志从45行减少到4行,降低服务器资源占用。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-10 19:45:33 +08:00 |
|
|
|
657634f028
|
🐛 修复定时任务日志和执行问题
- 修复日志按钮点击无反应(类型匹配和错误处理)
- 修复定时任务到时间不执行(时间格式标准化)
- 增强所有检查点的调试日志输出
- 改进今日执行检查逻辑(支持同一天不同时间执行)
Bug 1: 日志按钮完全没反应
- 将严格相等(===)改为宽松相等(==)避免类型不匹配
- 添加详细的错误日志和用户提示
- 添加容器元素存在性检查
Bug 2: 定时任务到时间不会被执行
- 标准化时间格式(8:00 -> 08:00)
- 增强所有检查点的日志输出(时间、星期、账号)
- 改进今日执行检查(同一天不同时间可再次执行)
- 前端添加时间格式验证和标准化
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-10 19:12:48 +08:00 |
|
root
|
6de3d916f4
|
彻底修复定时任务日志500错误
采用最保守的错误处理策略:
1. 外层、中层、内层三重try-except保护
2. 每个可能出错的步骤独立包装
3. 任何错误都返回空数组[],绝不抛出500错误
4. 每个步骤都有详细的调试日志
错误处理策略:
- 查询定时任务失败 → 返回[]
- 定时任务不存在 → 返回[]
- 权限检查失败 → 返回[]
- 查询日志失败 → 返回[]
- 任何未知错误 → 返回[]
这样可以保证即使有任何问题,前端也会看到
"暂无执行日志"而不是500错误。
位置: app.py 第3274-3323行
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-10 16:53:59 +08:00 |
|
root
|
5ad1e18bcd
|
添加定时任务日志API错误处理和调试日志
为了诊断500错误,在日志API中添加:
1. 完整的try-except错误捕获
2. 详细的调试日志输出:
- 请求用户和任务ID
- 权限检查结果
- 查询过程和结果
- 具体的错误信息和堆栈跟踪
3. 返回详细错误信息给前端(开发模式)
现在可以通过应用日志查看具体的500错误原因。
位置: app.py 第3274-3301行
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-10 16:37:23 +08:00 |
|
root
|
bb7d38f4a5
|
添加详细的定时任务调试日志
为了帮助诊断用户定时任务无法执行的问题,在每个检查点添加详细日志:
1. 任务ID和名称
2. 时间匹配检查结果
3. 星期匹配检查结果
4. 今日执行状态检查结果
5. 最终是否通过所有检查
现在可以通过应用日志清晰看到每个任务在哪个检查点被跳过。
位置: app.py 第2872-2906行
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-10 16:27:13 +08:00 |
|
root
|
726e0d01bf
|
修复定时任务日志和增强功能
1. 修复定时任务日志字段映射问题
- 修正execute_time → created_at
- 修正success_accounts → success_count
- 修正failed_accounts → failed_count
- 修正duration_seconds → duration
- 位置: database.py 第1661-1686行
2. 添加定时任务调试日志
- 显示当前检查时间和任务匹配情况
- 帮助诊断定时任务不执行问题
- 位置: app.py 第2869-2875行
3. 新增VIP权限对比表格
- 在VIP信息弹窗中添加权限对比
- 对比普通用户和VIP用户的6项权限
- 位置: templates/index.html 第549-593行
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-10 16:16:45 +08:00 |
|
root
|
4e5aa70359
|
修复三个关键Bug
1. 修复定时任务设置时间不执行问题
- 将定时任务检查频率从60秒提升到5秒
- 确保定时任务在设定时间准时执行
- 位置: app.py 第3010-3011行
2. 修复账号管理卡片设置按钮无法点击问题
- 修正JavaScript引号转义错误
- 位置: templates/index.html 第886行
3. 修复用户反馈和后台反馈进度不同步问题
- 前端改为检查status字段而非reply字段
- 新增closed状态支持
- 正确显示待处理/已回复/已关闭三种状态
- 位置: templates/index.html 第249-251行, 第1550-1567行
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-10 15:53:53 +08:00 |
|
Yu Yon
|
8fd6923453
|
修复所有bug并添加新功能
- 修复添加账号按钮无反应问题
- 添加账号备注字段(可选)
- 添加账号设置按钮(修改密码/备注)
- 修复用户反馈���能
- 添加定时任务执行日志
- 修复容器重启后账号加载问题
- 修复所有JavaScript语法错误
- 优化账号加载机制(4层保障)
🤖 Generated with Claude Code
|
2025-12-10 11:19:16 +08:00 |
|
Yu Yon
|
1723e35fbc
|
Initial commit: 知识管理平台
主要功能:
- 多用户管理系统
- 浏览器自动化(Playwright)
- 任务编排和执行
- Docker容器化部署
- 数据持久化和日志管理
技术栈:
- Flask 3.0.0
- Playwright 1.40.0
- SQLite with connection pooling
- Docker + Docker Compose
部署说明详见README.md
|
2025-11-16 19:03:07 +08:00 |
|