Skip to content

fobe 0.1.7

Choose a tag to compare

@fonlan fonlan released this 18 Sep 15:41
· 41 commits to main since this release

fobe 0.1.7

自 v0.1.6 以来的 6 个提交:流量与缴费周期支持按季、探针上/下线与通知投递写入审计、sing-box 安装不再把监听端口搬回旧端口,外加 AI 思考档位与面板细节两处修正。

流量与缴费周期支持按季(design §14/§15)

  • quota.CycleWindow 把「季」当作 3 个月步长,与按月共用月末/闰日钳制;PATCH /api/nodes 接受 quarter
  • 编辑页的流量周期与缴费周期两个下拉都增「按季」,缴费周期长度单位补「周期(季)」,「已续费」按 3 个月滚动。

审计(design §4.4/§7/§15)

  • 探针上/下线写入审计node_online / node_offline 只记状态跃迁 —— 90s 心跳窗口内的重连没有离开过 online,不记账;正文带 agent_version 与静默时长。
  • 通知投递写入审计notify_sent / notify_failed 按 (告警, 渠道, 结果) 去重(失败的告警每分钟重试,不去重会灌出一整天记录);被事件开关有意拦下的告警不记账。
  • 顺带堵住凭据泄漏:投递错误里的完整 URL 会带上 Telegram bot token / 飞书 webhook token,现统一经 notify.SafeError 脱敏后才写审计与日志。

sing-box(design §9.2/§9.3 修订 2026-09-18c)

  • 修复:安装/更新不再把监听端口搬回旧端口。 端口此前取自记账列 node_singbox.port,而编辑器搬端口不会更新那一列。实测后果有二:面板装过后在编辑器把 22039 改成 22040,再点安装会把监听搬回 22039,而该端口下已无凭据 ⇒ 静默 mint 一份新密码,端口与凭据同时变,所有客户端立刻失效;纯 one-sing.sh 的发现型节点该列恒 0 ⇒ 安装落到随机端口,脚本入站一并消失。
  • 现在端口按「显式请求 → 探针上报文件里那条 anytls 的 listen_port → 记账列 → 随机」解析,安装/更新与启动模板同步共用同一支逻辑;凭据查找同步改为按序多端口(正在重建的端口优先、旧记账端口兜底),两者都没有才生成。
  • 新增 4 条回归测试覆盖(编辑器搬移后安装、发现型节点按上报端口、全新节点仍随机、启动同步不搬端口)。

AI 助手(design §12.1/§12.5 修订 2026-09-18g)

  • 思考档位下拉统一按所选模型实际支持的档位填充:此前设置页列的是全局词表,能选到该模型根本不支持的档位、选完被服务端静默吃掉;终端页侧栏也不会预选已配置的默认档位。
  • 现在档位集合 = 该 (provider, model) 的有效档位;面板预选默认档位(模型不支持则留「默认(不指定)」),设置卡片按所选模型填充,不支持的档位既不显示也不写回。服务端「未指定即补默认档位」的回退一字未改。

面板

  • 设置 → 服务器列表的「主 IP」列加复制按钮(§16)。

升级注意

  • 无数据库 schema 变更(仍为 15,本次 schema.sql 只改了枚举注释);按季周期是新增取值,降级回 v0.1.6 时该栏位不再生效。
  • 镜像只发 linux/amd64;探针按 §5.5 跟随服务端版本,本次会自更新一次(短暂掉线属预期)。
  • 唯一必填环境变量仍为无(compose 默认拉 ghcr.io/fonlan/fobe)。