Skip to content

TG Vault v2.4.0

Choose a tag to compare

@hicocos hicocos released this 01 Sep 05:27
· 7 commits to main since this release

TG Vault v2.4.0

Important

严重安全优化:强烈建议所有用户尽快升级并使用 v2.4.0。

本版本重点收紧 Telegram Bot 凭证与账号运行时的生命周期边界,避免保存、迁移或更换 Bot 凭证时意外触发 Telegram 用户账号、订阅扫描、任务恢复或主动消息等自动化行为。

重要行为变化:这不是“零影响”升级。 为消除隐式自动化带来的安全风险,升级后 Telegram 订阅扫描、任务恢复和定期清理不再随 Bot 启动而自动运行;依赖这些自动化的用户会看到相关任务停止。请优先完成安全升级,并留意后续采用明确应用级编排的版本。

严重安全优化

  • 严格隔离 Telegram Bot 与用户账号运行时:保存、迁移、停用或删除 Bot 配置时,不再初始化、刷新或扫描 Telegram 用户账号。
  • Bot Token 更换不再复用旧会话:每次启动均从空 Bot Session 完成身份认证,避免旧 Session 与新 Token 混用。
  • 启动完整性校验:Bot 只有在认证、身份读取、命令菜单注册和事件处理器安装全部成功后才进入 ready 状态。
  • 失败即清理:Bot 启动失败会立即断开并销毁失败客户端,清除运行时引用,防止半初始化实例残留。
  • 失效凭证识别更准确ACCESS_TOKEN_EXPIREDACCESS_TOKEN_INVALID 等错误会明确归类为凭证失效,并提示在网页端更换 Token。
  • 用户账号改为显式激活:仅在“登录完成”或用户明确点击“启用”时连接对应账号;停用账号会立即关闭其运行时客户端。
  • 登录凭据作用域收紧:二维码/手机号登录流程携带本次显式凭据,只激活刚完成登录的账号,不再刷新整个账号池。
  • 杜绝隐式后台自动化:Bot 凭证绑定过程不再自动启动订阅扫描、任务恢复或定期清理任务。
  • 不再持久化 Bot Session:Bot 每次使用当前 Token 从空 Session 认证,不再将额外的 Bot Session 凭据写入磁盘。
  • 启动副作用延后提交:通知器和摘要定时器仅在 Bot 完整进入 ready 后安装;任何启动失败都会撤销相关运行时副作用。
  • 旧版手机号登录同样定向激活:旧版登录流程保存并传递本次 Telegram API 凭据,只连接刚刚完成登录的账号。

稳定性改进

  • Telegram Bot 连接与重连策略改为有界重试,关键启动步骤增加超时保护,降低网络异常时长期阻塞的风险。
  • 可选 Bot 启动失败时继续以 degraded 状态提供 Web 服务,同时保留可操作的错误原因;必需模式仍会阻止就绪。
  • 多账号适配器在应用启动时以无账号连接副作用的方式安装,账号连接只由明确操作触发。

升级方法

使用官方安装脚本部署

cd /opt/tg-vault
sudo bash deploy/install.sh

使用 Git / Docker Compose 手动部署

cd /path/to/tg-vault
git fetch --tags origin
git checkout main
git pull --ff-only origin main
git checkout v2.4.0
version="v$(node -p "require('./backend/package.json').version")"
revision="$(git rev-parse HEAD)"
IMAGE_VERSION="$version" SOURCE_REVISION="$revision" SOURCE_VERSION="$version" docker compose build backend frontend
IMAGE_VERSION="$version" SOURCE_REVISION="$revision" SOURCE_VERSION="$version" docker compose up -d --no-build --no-deps backend frontend
  • 升级前建议备份 PostgreSQL 数据库和 .env
  • 升级后请进入 Web 设置检查 Telegram Bot 状态;若提示 Token 失效,请更换 Bot Token。

验证

  • Backend:470/470 项测试通过,TypeScript 类型检查通过,生产构建通过。
  • Frontend:203/203 项测试通过,ESLint 通过,生产构建通过。
  • 数据库 schema 一致性检查:通过。
  • 安装脚本测试:通过。
  • 新增安全回归覆盖:Bot/用户账号生命周期隔离、旧 Session 不复用、失败客户端清理、显式账号激活、失效 Token 分类。