73278667e0
A→B SFTP 中继与一键 tar 打包 curl 拉取;含审计修复与 18 项单测。
47 lines
1.9 KiB
Markdown
47 lines
1.9 KiB
Markdown
# 审计 — 2026-06-21 跨服务器文件传输
|
||
|
||
**Changelog**: `docs/changelog/2026-06-21-server-file-transfer.md`、`docs/changelog/2026-06-21-server-file-transfer-audit-fixes.md`
|
||
|
||
## Step 3 规则扫描
|
||
|
||
| 文件 | 规则 | 结论 |
|
||
|------|------|------|
|
||
| `server_file_transfer_service.py` | 路径 `shlex.quote`、直传 500MB 上限、deliver 失败回滚 | PASS |
|
||
| `transfer-download` | token Redis TTL;JWT 前缀白名单 | PASS(已知:前缀对所有 method 生效) |
|
||
| `useFilesActions.ts` | 模式推荐基于 `transferItems`;relay/deliver 分路径缓存 | PASS |
|
||
| `test_server_file_transfer.py` | deliver 成功/回滚/超限、relay、store | PASS |
|
||
|
||
## Closure
|
||
|
||
| 项 | 状态 | 说明 |
|
||
|----|------|------|
|
||
| deliver 失败泄漏归档/token | FIXED | rollback cleanup |
|
||
| deliver 成功 token 残留 | FIXED | delete_package_meta |
|
||
| 右键传输模式误判 | FIXED | transferItems |
|
||
| 直传多项中途失败无回滚 | ACCEPT | v1 文档化 |
|
||
|
||
## 文件清单
|
||
|
||
- `server/application/services/server_file_transfer_service.py`
|
||
- `server/infrastructure/redis/transfer_package_store.py`
|
||
- `server/api/sync_v2.py`
|
||
- `server/api/schemas.py`
|
||
- `server/api/auth_jwt.py`
|
||
- `frontend/src/composables/files/useFilesActions.ts`
|
||
- `frontend/src/composables/files/useFilesPage.ts`
|
||
- `frontend/src/components/files/FilesDialogs.vue`
|
||
- `frontend/src/components/files/FilesList.vue`
|
||
- `frontend/src/components/files/FilesToolbar.vue`
|
||
- `frontend/src/utils/auditLabels.ts`
|
||
- `tests/test_server_file_transfer.py`
|
||
- `docs/design/specs/2026-06-21-server-file-transfer-design.md`
|
||
- `docs/design/plans/2026-06-21-server-file-transfer.md`
|
||
- `docs/changelog/2026-06-21-server-file-transfer.md`
|
||
- `docs/changelog/2026-06-21-server-file-transfer-audit-fixes.md`
|
||
|
||
## DoD
|
||
|
||
- [x] 直传 + 打包投递 API 与前端对话框
|
||
- [x] `pytest tests/test_server_file_transfer.py` 18 passed
|
||
- [x] changelog ≥10 行
|