10 Commits

Author SHA1 Message Date
Your Name 76dca88ee7 fix: 服务器停止时优雅等待连接关闭
问题: stop() 只调用 server.close() 后立即停止事件循环
导致活跃连接收到 GeneratorExit,产生大量 Task destroyed 警告

修复: 使用 run_coroutine_threadsafe 在子线程事件循环中执行
server.wait_closed(),最多等待5秒优雅关闭
2026-07-17 00:09:27 +08:00
Your Name ae8334140d fix: 修复 GeneratorExit 和 Task destroyed 警告
问题: 协程被取消/销毁时,finally 块中的异步操作触发 GeneratorExit
原因: GeneratorExit 是 BaseException 子类,不会被 Exception 捕获

修复内容:
- server.py handle(): 捕获 CancelledError + GeneratorExit
- server.py _tunnel(): 被取消时不执行 _record_stats() 异步操作
- instances.py _accept_connection(): 添加异常处理和 writer 关闭
- 所有取消场景都静默处理(不抛异常/不记录错误日志)
2026-07-17 00:06:01 +08:00
Your Name 5c1f0122a2 fix: 修复 asyncio 任务清理和 StreamWriter.write() 协程错误
问题1: StreamWriter.write() 不是协程,不需要 await,错误使用会导致 TypeError
问题2: 隧道关闭时未正确取消转发任务,导致 'Task was destroyed but it is pending!' 警告
问题3: 未对 None 的 reader/writer 做前置检查,导致空指针异常

修复内容:
- 移除 dst.write(data) 前的 await
- _tunnel() finally 块中主动取消转发任务并 await
- _forward() 开头添加 None 检查
- _close_streams() 增加 None 检查
- 添加异常捕获日志
2026-07-17 00:02:14 +08:00
Your Name b32256930f fix: 修复 SOCKS5 账号密码认证时的 TCP 流读取 bug
问题原因:RFC 1929 认证请求是一个连续的 TCP 数据包,
原代码多次独立调用 reader.read(),第一次 read 已经把
整个认证请求都读入了,后续 read 调用阻塞超时。

修复方案:改用累积缓冲区方式解析认证请求,先累积所有
到达的数据,再逐步解析用户名和密码,避免不必要的阻塞
2026-07-16 23:50:41 +08:00
Your Name 0bd9bcac12 fix: 修复暗色主题UI对比度、端口占用死循环及多项Web表单bug
后端修复:
- engine/instances.py: Socks5Server.start() 端口占用时死循环, 增加超时和异常透传
- engine/instances.py: import time 移至顶层
- engine/instances.py: sync_instances/start_instance 容忍单实例启动失败
- run.py: 启动时 sync_instances 失败不退出进程
- web/routes.py: instances start/restart/edit 路由捕获 OSError, flash 友好提示
- api/v1.py: instances start/restart/update API 返回 JSON 错误而非 500 崩溃
- web/routes.py: toggle_user/ban_user 支持 hidden 字段语义, 缺字段时切换状态
- web/routes.py: inject_nav 增加独立 nav.dashboard 和 page_name, 修复双 active bug
- auth.py: login 路由添加 logging import, 修 NameError

前端重构:
- templates/base.html: 全局对比度提升(--text #f1f5f9, --accent #a5b4fc), 标题色显式声明, alert/modal/progress/table 完整暗色样式
- templates/base.html: main-content padding-top 修复 navbar 遮挡内容
- templates/base.html: 侧边栏 active 高亮 (白字 + elevated bg + 左边框)
- templates/base.html: 顶栏动态显示当前页面名
- templates/*.html: 统一 page-header 类, 所有图标按钮添加 title tooltip
- templates/users.html: toggle/ban 表单添加 hidden enabled/ban 字段
- templates/connections.html: fmtBytes 改为 Jinja macro, 时间格式化
- templates/dashboard.html: 时间格式化为 YYYY-MM-DD HH:MM:SS, chart canvas 高度调整
- templates/logs.html: 时间格式化为可读格式
- templates/stats.html: 提升 chart 颜色对比度
- templates/system.html: 使用 time.localtime() 显示本地时间
2026-07-16 23:01:39 +08:00
Your Name 06470512f6 深度优化: 修复跨服务器登录、密码哈希、仪表盘UI、流量趋势等12项问题
### 严重修复
1. 跨服务器无法登录 - 新增SESSION_COOKIE_DOMAIN/SECURE/NAME配置
2. SOCKS5用户密码明文存储→bcrypt哈希(兼容自动迁移)
3. 仪表盘审计日志不显示→替换为空循环为真实API加载
4. 管理员登录防爆破未生效→auth.py集成check_fail2ban

### 中等问题修复
5. 流量趋势图表无数据→新增record_traffic_snapshot后台线程
6. 网络流量累计值跳变→新增基线差值机制
7. asyncio连接计数非线程安全→加锁保护

### 优化改进
8. API密钥页面截断文本修复
9. 新增gunicorn/bcrypt依赖
10. 更新README环境变量文档和生产建议
11. 登录密码常量时间对比防时序攻击
12. 仪表盘图表添加animation:false防卡顿
2026-07-16 22:13:14 +08:00
Your Name 5ab5366534 fix: SOCKS5 隧道修复 - 子线程事件循环兼容性
1. 去掉 asyncio.wait_for 包装 open_connection,改用直接调用
2. ConnectionHandler 增加 flask_app 参数,数据库操作使用 app context
3. InstanceManager 传递 flask_app 到 Socks5Server
4. 修复 _reply 中 writer.write 不需要 await 的问题

验证:
- 直连测试: HTTP/1.1 200 OK (ifconfig.me)
- 端口监听: 10800 正常工作
2026-07-16 19:00:53 +08:00
Your Name 4fbb63e0b9 fix: SOCKS5 隧道连接超时
修复子线程事件循环中 asyncio.wait_for 包装 open_connection 导致的读取取消问题。
改用 socket 层面的 timeout 设置,不再用 wait_for 包装。

同时修复 _reply 中 writer.write 不需要 await 的问题。
2026-07-16 18:50:43 +08:00
Your Name c8230f0d16 fix: 修复3个问题
1. 对比度: --text-muted 从 #94a3b8 改为 #c8d6e5 (文字更亮)
2. 登录: auth.py 从 .env 文件读取密码,解决后台进程环境变量丢失
3. 实例创建: 同步 instances.py 的 db import (之前缺 import db)
2026-07-16 18:35:03 +08:00
Your Name 558bd8153f feat: 重构为 SOCKS5 代理管理平台 v2.0
架构:
- engine/server.py: asyncio SOCKS5 服务器引擎(含隧道/认证/限速)
- engine/instances.py: 多实例管理器(独立事件循环/热启动/热停止)
- services/user_service.py: 用户认证/流量统计/IP白名单/防爆破
- services/stats_service.py: 实时监控/流量趋势/连接追踪
- services/backup_service.py: 数据库备份与恢复
- api/v1.py: 完整 RESTful API
- web/routes.py: Web 管理面板(暗色 Bootstrap 5 主题)

功能覆盖:
 多实例 SOCKS5 管理(创建/启动/停止/重启/热加载)
 用户认证(无认证/账号密码/流量上限/限速/并发限制)
 IP 白名单/黑名单/防爆破
 实时仪表盘(CPU/内存/网络/活跃连接)
 流量统计(30天趋势图/用户排名/实例统计)
 活跃连接追踪
 审计日志(事件/用户/IP 筛选)
 数据库备份与恢复
 管理员密码保护
 16 项功能测试全部通过
2026-07-16 17:31:53 +08:00