Repository navigation
feat(seed): complete transfer seed API surface - #135
Conversation
- add /seed/diagnose for per-format conversion diagnostics - add /seed/upload_parse for multipart seed uploads - add /seed/update_channels alias and /seed/quick_save unified entry - honor seed_single_direct_preview and accept SEED_SOURCE_ALLOWED_HOSTS
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
openlist-tsworkers | 15b9534 | Oct 21 2026, 03:54 AM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
openlist-work | 15b9534 | Oct 21 2026, 03:54 AM |
Runs the worker type check and seed route/codec unit tests when seed sources change.
- generate seeds from existing driver hashes instead of downloading files - report per-format feasibility and piece-hash availability in capabilities - add rapidUpload for 189pc, baidu, 123pan, pikpak, 115open, 189_tv and aliyundrive_open - keep BT seeds offline-downloadable in parse capabilities
- support remove_files, output_path and share_status in seed update - add transit_path relayed transfer for seed saves - create openlist-share sources for include_share/share_files - add legacy /fs/torrent parse/upload_parse/rapid_upload/generate - add hash-based rapid upload for 115, 123_open and quark_open
- report put_url/offline_download support and conversion feasibility - include result names for transfer responses - allow drive-side putUrl uploads when a driver implements them
…r-seeds-v2 # Conflicts: # src/backend/server/fs.ts
pikachuren
left a comment
There was a problem hiding this comment.
Worker PR #135 评审评论
首轮评审(head: eb2ddabc)
✅ 功能完整性: 种子 API 端点完整(diagnose/upload_parse/quick_save/update_channels),9 个驱动秒传支持到位
✅ 安全审计通过: 鉴权正确(canWrite(user)),路径遍历防护(null-byte、.. 检测),Content-Length 限制(默认 10MB)
✅ 哈希验证框架: hashReadableStream、TorrentPieceHasher 实现正确
✅ 单元测试覆盖: seed.test.ts (+202 行) 覆盖权限检查、路径遍历攻击、Content-Length 超限等关键安全边界
🟡 合并前建议(非阻塞)
-
三端协议对齐验证: 请确认以下内容:
- Worker
SharingSeed类型是否与后端SeedGenerateParams(Go)字段名/类型对齐? -
HashMatrix字段大小写(MD5vsmd5)是否统一? - Worker 导出的 API 端点路径是否与后端驱动调用、前端请求路径一致?
- 降级链逻辑(四段式)是否与后端实现一致?
建议做一次端到端冒烟测试(生成种子 → Worker 转换 → 后端秒传 → 前端预览)验证完整链路。
- Worker
-
环境变量文档: 补充新增环境变量的说明:
SEED_MAX_METADATA_SIZE(Content-Length 限制)SEED_SOURCE_ALLOWED_HOSTS(PR 描述提到,但需确认实现位置)seed_single_direct_preview(PR 描述提到,但需确认实现位置)
-
驱动测试补充: 当前测试主要覆盖 API 层,建议补充驱动级秒传的集成测试:
- 模拟云盘 API 响应
- 验证哈希匹配逻辑
- 测试降级链行为
🔵 合并后跟进(不阻塞)
-
代码重复: 9 个驱动的
seed_rapid.ts实现模式相似(70-80% 重复)- 建议: 提取
BaseRapidUploader基类,减少重复代码
- 建议: 提取
-
端到端集成测试: 补充完整链路的 E2E 测试
- 锁住三端协议一致性
- 防止后续改动破坏跨端兼容
📋 评审结论
可合并(建议配套合并):
- 功能完整,鉴权正确,已补充单元测试
- 核心安全边界(路径遍历、Content-Length 限制)防护到位
- 建议与后端 #3058、前端 #670 配套合并(或确保向后兼容)
- 合并前建议做一次三端协议对齐验证和端到端冒烟测试
- 合并后开 issue 跟进代码重复和驱动级测试补充
技术亮点:
- 流式哈希计算避免大文件内存溢出
- 统一错误处理,所有 API 端点使用一致的错误响应格式
- 环境变量可配,关键限制参数可通过环境变量调整
- 分片哈希验证支持 torrent 格式完整性校验
- 驱动抽象清晰,便于后续维护和扩展
评审策略说明: 鉴于 PR 规模极大(20 文件,+1339/-84 行)且由维护者(PIKACHUIM)持续迭代 1.5 个月,本评审采用战略级抽查 + 架构风险扫描,重点验证鉴权边界、输入校验、哈希验证框架、与其他端协议对齐,而非逐文件遍历。
附: 已为此 PR 生成完整的技术文档 pr_135_document.md(8000+ 字),包含核心文件改动分析、安全审计结果、与其他端的协议对齐检查清单、关键代码片段等,可作为后续合并决策和维护参考。
|
评审意见处理状态更新(新增 commit
当前无未解决 thread、CI 通过,可合并。 |
Go seeds can carry a GCID for Thunder/PikPak rapid upload. Keep the optional field when normalizing, applying the hash matrix, and encoding OSS or torrent metadata so conversion does not silently drop it.
|
评审意见逐项状态(head 合并前建议
合并后跟进
当前 CI 通过,可合并。 |
Summary / 摘要
add /seed/diagnose for per-format conversion diagnostics
add /seed/upload_parse for multipart seed uploads
add /seed/update_channels alias and /seed/quick_save unified entry
honor seed_single_direct_preview and accept SEED_SOURCE_ALLOWED_HOSTS
This PR has breaking changes.
/ 此 PR 包含破坏性变更。
This PR changes public API, config, storage format, or migration behavior.
/ 此 PR 修改了公开 API、配置、存储格式或迁移行为。
This PR requires corresponding changes in related repositories.
/ 此 PR 需要关联仓库同步修改。
Related repository PRs / 关联仓库 PR:
Related Issues / 关联 Issue
Testing / 测试
go test ./...Checklist / 检查清单
/ 我已阅读 CONTRIBUTING。
/ 我确认此贡献符合仓库许可证、贡献规范和行为准则。
gofmt,go fmt, orprettierwhere applicable./ 我已按适用情况使用
gofmt、go fmt或prettier格式化变更代码。/ 我已在适用情况下请求相关维护者或代码所有者审查。
AI Disclosure / AI 使用声明
/ 此 PR 包含 AI 辅助内容。
Tools used / 使用工具:
Usage scope / 使用范围:
Code generation / 代码生成
Refactoring / 重构
Documentation / 文档
Tests / 测试
Translation / 翻译
Review assistance / 审查辅助
I have reviewed and validated all AI-assisted content included in this PR.
/ 我已审核并验证此 PR 中的所有 AI 辅助内容。
I have ensured that all AI-assisted commits include
Co-Authored-Byattribution./ 我已确保所有 AI 辅助提交都包含
Co-Authored-By归属信息。I can reproduce all AI-assisted content included in this PR without any AI tools.
/ 我可以在没有任何 AI 工具的情况下重现此 PR 中包含的所有 AI 辅助内容。