Hermes Agent
|
057d72b264
|
fix: 上次同步时间转为本地时区显示,修正时区混淆问题
AppConfig 存储 UTC 时间,模板直接输出导致用户在上海(UTC+8)看到错误时刻。
新增 get_last_sync_at_local() 转本地时区,logs_view 采用本地时间显示。
|
2026-07-16 15:50:03 +08:00 |
|
Hermes Agent
|
a7a637b0c6
|
fix: 日志查询时间列显示本地时间而不是 raw unix timestamp
根因: logs_view 持久化分支直接用 query_logs 返回的 dict
list 当模板变量,但模板里 e.timestamp_local 是 LogEntry 类
的属性。普通 dict 没有这个属性,Jinja 的 if 条件里抛
UndefinedError 后静默走 else e.time 分支,显示原始 float
时间戳 1784184579.49。
修法: 在持久化分支把 page_items 包成 LogEntry 实例
(用 **r 展开),让 timestamp_local property 生效。
非持久化分支没这个问题,因为 get_parsed_logs() 内部
已经做了 LogEntry(**r) wrap。
|
2026-07-16 15:16:17 +08:00 |
|
Hermes Agent
|
0d413cfeaf
|
fix: 缓存目录保存 404 + 日志时间显示为本地时区 + 持久化同步
修复 4 个相关 bug:
1. **缓存目录配置保存后 404 (核心 bug)**
- 原因: _show_config_preview 把 endpoint 名 'config_cache' 存进 session 作
为 return_to,config_preview 把它当 URL 跳到 'config_cache' 报 404
- 修法: _show_config_preview 自动用 url_for() 解析 endpoint 名
2. **日志时间显示 UTC 而不是本地时间 (次生 bug)**
- 原因: log_parser 把 timestamp 解析成 UTC datetime,模板直接
e.timestamp.strftime('%H:%M:%S') 显示 UTC
- 修法: LogEntry 新增 timestamp_local 属性 (astimezone()),
3 个模板改用 e.timestamp_local
3. **DB 同步永远不工作 (次生 bug)**
- 原因: _should_auto_sync 调 get_config('log_sync_interval') ->
_resolve_active_instance -> session.get 在 app_context 里炸,
try/except 静默吞,永远返回 False
- 修法: 新增 _resolve_access_log_path() 不走 session 链,
_should_auto_sync 直接查 AppConfig 表
4. **default_struct 规则引用 Safe_ports/SSL_ports 但 ACL 是 safeports/sslports**
- 大小写不一致导致 squid -k parse 报 FATAL
- 修法: 改成小写统一
测试: cache save 流程全链路跑通 (POST -> preview -> confirm -> /config/cache 200)
所有 config 页面 (main/acls/rules/cache/refresh/auth/peers) 的 preview+confirm
return_to 字段都正确解析为 URL
|
2026-07-16 15:08:18 +08:00 |
|
Hermes Agent
|
43d00d1eda
|
fix: 修复6个配置路由500错误 + 实时日志直读文件 + 开启自动同步
- 修复 config_cache/config_refresh/config_acls/config_rules/config_auth/config_peers
6个路由缺少 save_struct() 调用导致 NameError: name 'ok' is not defined
- logs_live 改为直接读 access.log 文件,不经过 SQLite 缓存,确保实时性
- 仪表盘调整调用顺序:先同步日志再计算统计
- 设置 log_sync_interval=30 开启自动同步(原为0=关闭)
|
2026-07-16 14:41:30 +08:00 |
|
Hermes Agent
|
4a1d949e41
|
feat: 完整 Squid Web Manager 平台 - P0-P3 全功能
完整 Web 管理平台,涵盖:
P0 生产加固:
- 会话超时(空闲+绝对) + CSRF 防护 + 登录失败限流
- HTTPS/TLS 证书管理(自签生成/上传/删除/过期提醒)
- SSL Bump (HTTPS 透明代理) 可视化配置
- 配置文件 diff 预览 + 二次确认才写入
- 服务控制二次确认 + 操作期间按钮锁定
P1 运维能力:
- 日志轮转管理(logrotate) + 日志状态监控
- 告警规则(5xx/命中率/磁盘/客户端流量)
- 多 Squid 实例管理 + 一键切换
- squidclient mgr 实时性能指标
- 流量异常检测(突增/大文件/高频小包/新客户端)
P2 日志分析增强:
- 日志持久化到 SQLite + 历史时间范围查询
- 导出 CSV/JSON(日志/KPI/异常/审计)
- GeoIP 地图(Leaflet + ip-api.com 离线可选 GeoLite2)
- 每客户端 24h 趋势图
- 自定义 Squid logformat 解析器
P3 体验锦上添花:
- 暗/亮主题切换(cookie 持久化)
- WebSSH 终端(xterm.js + paramiko)
- 完整审计日志 + 用户管理
技术栈: Flask 3.0 + SQLAlchemy 2.0 + SQLite + Chart.js + Leaflet
总代码量: ~16500 行 (15 Python 模块 + 34 模板 + CSS)
路由数: 73
|
2026-07-15 10:19:21 +08:00 |
|