feat: 支持自定义订阅节点并兼容现有数据库
This commit is contained in:
@@ -159,3 +159,21 @@ npm run test:e2e
|
||||
```
|
||||
|
||||
测试自动启动 3106 端口的开发服务,使用 `/tmp` 中独立的临时数据库并关闭节点轮询,不访问现有数据库。覆盖排序持久化、鼠标/键盘/模拟触屏、列表筛选、用户编辑、复制链接、删除确认、失败保留输入和移动端溢出检查。截图输出在 `test-results/`。运行前请停止同一工作目录的其他 Next 开发服务。
|
||||
|
||||
## 自定义订阅节点与数据库兼容
|
||||
|
||||
在「节点管理 → 新增自定义订阅节点」填写显示名、Slug 和单个 Clash/Mihomo proxy 的 YAML。支持单对象、单节点列表,以及 `proxies:` 包装。协议参数(例如 AnyTLS 的 password、sni、alpn)由 YAML 提供;订阅名使用 YAML `name`,面板显示名独立。原始 YAML 和注释按原样保存,输出订阅时才解析、序列化。格式错误会在表单内提示并保留输入。
|
||||
|
||||
自定义节点与 HY2 节点共用列表、启停、删除、主组拖拽排序及自定义分组。自定义节点仅分发配置,不参与 HY2 HTTP 鉴权、轮询或面板流量计量,也不生成 HY2 服务端配置。代理的访问控制和流量限制由该代理服务自身负责。
|
||||
|
||||
数据库升级沿用服务器现有的 **SQLite `user_version = 4`**,保留 `hy2_nodes.node_type`(默认 `hy2`)和 `hy2_nodes.custom_config_yaml`(默认空字符串)的原名称、类型和默认值:
|
||||
|
||||
- 全新数据库、版本 1–3 的数据库在启动时自动迁移。
|
||||
- 服务器已有的完整版本 4 不再重复添加列,也不重写现有记录。
|
||||
- 对于版本 3/4 中已部分添加的自定义节点字段,只补充缺失列。
|
||||
- 迁移在一个 SQLite 写事务中执行,失败回滚;更高版本的数据库会拒绝启动,避免错误降级。
|
||||
- 节点 ID、用户 ID、订阅 token、加密凭据、额度、会话、历史流量和代理分组 JSON 都不因迁移而重建。
|
||||
|
||||
升级时保留原 `.env`、`DATABASE_PATH`、`SESSION_SECRET` 和管理员配置。尤其不能更换 `SESSION_SECRET`,现有 HY2 用户凭据依赖它解密。发布前应停服务并通过 SQLite backup API 备份数据库(包含 WAL 中已提交的数据),不要仅复制正在写入的 `.db` 文件。随后更新代码、安装锁定依赖、构建并启动;无需导出导入业务数据,也无需手工执行 `ALTER TABLE`。
|
||||
|
||||
`tests/fixtures/remote-v4-schema.sql` 是从服务器只读获取的实际表结构,不含生产数据。`npm test` 使用该结构和模拟业务数据验证兼容性、重复迁移、失败回滚、原始 YAML 保留、订阅生成,以及自定义节点不参与鉴权和轮询。`npm run test:e2e` 验证新版 UI 的新增、校验、编辑、分组、禁用和删除流程。
|
||||
|
||||
Reference in New Issue
Block a user