Files
LinkPort/docs/sqlite.md
T
曾志威 408f346ab1 feat: add WebDAV sync backups and unauthenticated targets
Replace active S3 sync with encrypted WebDAV synchronization and independent backups. Support explicit empty passwords and unauthenticated MongoDB, Redis, HTTP and HTTPS targets. Include migration, design and validation documentation.

Validation: build and go vet passed; Playwright 113 passed with 4 existing failures. Full Go run reproduced the existing cluster discovery test failure. Preserve unrelated SSH fingerprint changes outside this commit.
2026-09-22 14:00:42 +08:00

3.0 KiB
Raw Blame History

本地 SQLite 文件

在侧边栏选择 SQLite 文件,填写 ServicePort 所在机器上已有数据库的绝对路径,例如 C:\data\example.sqlite 或 /var/data/example.db,点击“测试连接 / 刷新表”。页面显示当前内置 SQLite 引擎版本、用户表及视图;选择表后自动生成查询,并可展开查看建表或视图定义。点击“执行查询”读取数据,也可自行输入单条 SELECT 或 WITH 查询。

文件由运行 ServicePort 的系统账号读取;浏览器连接另一台机器时,路径仍指向服务端。此功能只读打开现有 SQLite 3 文件,不创建空库,不上传文件,不接入网关或代理,也不要求数据库用户名和密码。路径、SQL 和结果仅保留在当前页面内存中,离开页面后清空,不加入配置备份、WebDAV 同步或命令审计。加密 SQLite / SQLCipher 文件不支持。正在使用 WAL 的数据库应保留匹配的 WAL/SHM 文件及所需读取权限,不能只复制主文件后期待包含未检查点的数据。

默认返回前 200 行,可设置 1–1000 行,达到上限且仍有数据时显示截断提示;可通过 WHERE、ORDER BY、LIMIT / OFFSET 查询需要的范围。查询超时 5 秒,最多 256 列,SQL 最长 64 KiB,单个 SQLite 值或记录、结果字段内容总量限制为 2 MiB。超过限制报错,不返回看似完整的部分内容。最多列出 1000 个用户表或视图、2 MiB 结构定义;没有用户表时显示空状态。

数据库使用 SQLite mode=ro 和 query_only,查询入口限制单条语句,禁止修改、附加数据库、加载扩展或修改 PRAGMA。与受限关键字同名的表或列可使用双引号标识符。SQL 字符串中的分号和关键字正常处理。查询结果中的整数以十进制字符串传输,避免浏览器丢失 64 位整数精度;NULL 显示为 NULL,BLOB 显示为 Base64;浮点数和文本也以字符串展示。重复列名按位置保留。

接口为 POST /api/v1/tools/sqlite/inspect({"path":"绝对路径"})和 POST /api/v1/tools/sqlite/query(增加 sql、可选 limit)。复用管理会话、CSRF 和本地免登录模式的回环限制;API Token 不允许访问本地数据库文件。响应不缓存,错误保留 SQLite 的查询诊断供排错。

此功能复用现有 SQLite 驱动,不增加依赖或数据库迁移,不改变目标服务及网关配置结构。新增浏览器测试使用 Node.js 内置 node:sqlite 生成隔离数据库,运行测试需要 Node.js 22.13 或更新版本;发布程序无需 Node.js。

验证使用临时生成的真实 SQLite 文件,覆盖文件格式、路径转义、表和视图、64 位整数、NULL、BLOB、空结果、截断、写入拒绝、缺失文件不创建、结果上限、超时和 API 会话/CSRF 校验。浏览器测试覆盖表结构与查询操作、路径切换后的旧响应失效及小屏幕布局。实际全量运行结果见 变更记录。