Your Name
|
70b6da45c2
|
docs: 添加详细的生产部署文档(Gunicorn + Systemd + Nginx)
- WSGI 生产服务器配置说明
- 完整的 Systemd service 配置
- Nginx 反向代理 + SSL 配置示例
- 生产环境检查清单
- 优雅关闭特性说明
0.0.1
0.0.2
|
2026-07-17 00:10:25 +08:00 |
|
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
|
e44802ae40
|
fix: 修复添加用户 500 错误 (expire_at 字符串 vs datetime)
web form 提交时 expire_at 字段是 HTML datetime-local 字符串 (如 '2027-12-31T23:59'),
SQLAlchemy 直接写入 datetime 列会抛 TypeError. 同样, API 路径里如果传 ISO
字符串而不带 tzinfo, 写入后再读出是 naive datetime, is_active() 比较时
会抛 'can't compare offset-naive and offset-aware datetimes'.
修复:
- services/user_service.py: 增加 _parse_expire_at() helper, 统一转成
UTC-aware datetime, 支持 datetime-local 'T'/' ' 多种分隔符 + ISO 格式
- services/user_service.py: create_user/update_user 调用 helper
- models.py: User.is_active() 兼容 naive datetime (SQLite 不存 tzinfo)
|
2026-07-16 23:12:45 +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
|
6504726431
|
修复深色主题对比度:副标题#9ca3af(7.6:1) 标签#cbd5e0(13:1) 输入框背景#1a1d2b边框#4b5563(2.56:1) 卡片边框#374151
|
2026-07-16 22:20:24 +08:00 |
|
Your Name
|
92a0d60198
|
更新README:新增FAQs、密码安全说明、跨服务器登录排查、环境变量详解、生产部署示例
|
2026-07-16 22:15:47 +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
|
00d9750662
|
fix: 首次启动自动设置默认密码
新服务器无 .env 文件时,get_or_set_password() 自动:
1. 设置默认密码 admin123
2. 写入 .env 文件
3. 控制台打印提示
解决新服务器无法登录的问题。
|
2026-07-16 19:06:37 +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
|
a65ee75894
|
fix: .btn-primary 缺少文字颜色导致按钮不可见
给 .btn-primary 添加 color:#fff,确保按钮文字在紫色背景上清晰可见。
同时添加 :active 和 :focus 状态样式。
|
2026-07-16 18:41:04 +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
|
cea6c54e78
|
docs: comprehensive README with architecture diagram
|
2026-07-16 17:33:00 +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 |
|
Your Name
|
d59699b5ce
|
docs: add README with setup guide and API reference
|
2026-07-16 16:41:17 +08:00 |
|
Your Name
|
aa8af6c2e0
|
feat: SOCKS5 代理管理系统 v1.0
Flask + SQLite + Bootstrap5 暗色主题
- 仪表盘: 在线/离线统计 + 最近代理 + 操作日志
- 代理 CRUD: 增删改 + 启用/禁用 + 单/批量健康检测(SOCKS5)
- 分组管理: 创建/删除/筛选
- 操作日志: 分页查询
- RESTful API + Web 界面
- 管理员登录认证 (SM_ADMIN_PASSWORD 环境变量)
|
2026-07-16 16:40:20 +08:00 |
|