Repository navigation
Upgrade
v3.1.2 → v3.1.3(2026-10-15)速览:性能与并发健壮性版本(GitCode issue #3 四项中危 M7-M10):Setting 请求级整表缓存(同请求首查建映射、后续读零 SQL,
set()写后失效)、浏览量缓存累加 + 周期(60s)/阈值(200 次)合并回库(消除逐请求写事务,并修复整页缓存命中时计数不增长)、首页 N+1 治理(9 个行业区块收口 3 条 SQL + 栏目树请求级缓存)、用户名唯一性竞态兜底(并发重名捕获IntegrityError回退「用户名已存在」而非 500)。无数据库结构变更、无新增依赖,覆盖代码重启即可;注意浏览量统计语义变为近似值(误差窗口 ≤ 60s 或 200 次)。详见项目根目录UPGRADE.md与CHANGELOG.md。
v3.1.1 → v3.1.2(2026-10-13)速览:安全修复版本(GitCode issue #2 五项中危 M1-M5):表单整数输入保护(
safe_int)、上传子目录白名单(_safe_sub_dir二次校验防../穿越到任意目录写文件)、CKEditorFuncNum 反射型 XSS 防护(仅^\d{1,6}$+html.escape)、SVG 上传管控(默认upload_allow_svg=off,开启后内容嗅探拒绝<script>/onload=/<foreignObject>等 + 512KB 大小上限 +.svg静态响应附加 sandbox CSP 兜底)、登录验证码一次性消费(无论密码对错先session.pop('captcha')杜绝同码复用枚举密码)。无数据库结构变更、无新增依赖,覆盖代码重启即可;曾使用 SVG 作为 LOGO 的站点需到后台「上传安全」勾选「允许上传 SVG」。详见项目根目录UPGRADE.md与CHANGELOG.md。
v3.0.x → v3.1.0(2026-10-10)速览:新增官方内置插件
db_migrator(数据库迁移,默认不启用),后台一键把 SQLite 开发库迁移到 MySQL/PostgreSQL(建表、按外键依赖逐表复制、PostgreSQL 重置序列、同步 Alembic 版本号),支持迁移后免重启热切换;修复文章批量操作不更新搜索索引、后台用户管理表单字段脱节问题。无数据库结构变更、无新增依赖,覆盖代码重启即可;需用迁移插件请在「插件管理」中手动启用。详见项目根目录UPGRADE.md与CHANGELOG.md。
运行 v1.1 及更早版本升级到 v2.0+ 前,请务必阅读项目根目录 UPGRADE.md。本章为速览。
| 变化 | 说明 | 需做的事 |
|---|---|---|
| 用户权限语义 | v1.1 所有用户默认超管;v2.0 引入 RBAC | 升级后审查超管标志并分配角色 |
| 文章状态机 |
is_enabled 升级为工作流状态 |
迁移自动回填,确认隐藏文章仍不可见 |
| 登录安全 | 失败 5 次锁定 10 分钟、验证码、异地提醒 | 告知后台用户;弱密码建议改密 |
| 上传行为 | MIME 双重校验/去重/压缩默认开启 | 伪装脚本将无法上传 |
`# 0. 备份站点目录与数据库(必做!)
# 1. 停服并更新代码
git fetch && git checkout v2.4.0
# 2. 更新依赖
pip install -r requirements.txt
# 3. 执行迁移(幂等,可重复运行)
.venv/bin/python scripts/upgrade_v2.py
# 4. 启动服务,按 UPGRADE.md 逐项核对`
⚠️ v2.0 新增 9 张表、旧表补 12 列。仅启动程序无法完成迁移:db.create_all()只建新表、不给旧表加列;跳过数据回填会让原本隐藏的文章被错误公开。
- v2.2.x → v2.3.0:无数据库变更,覆盖代码即可;首次启动自动启用表单插件一次。
- v2.3.x → v2.4.0:覆盖代码 + 装依赖;首次启动自动 stamp Alembic baseline 并执行增量迁移。
- v2.6.2 → v2.6.3:无数据库变更,覆盖代码 + 装依赖(Flask-JWT-Extended、Flask-Limiter)即可。
-
v2.6.3 → v2.6.4:需执行迁移
0008(columns.member_only列),无新增依赖;可选启用 member 插件(首次启用自动建 3 张会员表)。插件系统新增requires/extends/min_core_version强校验,现有插件无需改动。