Skip to content

feat(config): 支持按归档格式启用在线解压能力 #223

Description

@AptS-1547

背景

PR #221 引入 7z 预览和在线解压支持后,在线解压不再只是 ZIP 单一格式。不同归档格式的解析器、解压器和安全边界不一样,管理员需要能按格式控制是否允许在线解压,避免某个格式的依赖实现或资源模型不适合当前部署环境时只能整体关闭归档能力。

尤其是当前评估到的 7z 依赖实现:即使业务层按 chunk 写出解压后的 entry 数据,底层 reader 仍可能按 7z folder 的 compressed pack stream 分配内存。这个风险应该能通过 system_config 层面的格式开关被部署方主动规避。

目标

在 system_config 中增加按归档格式启用/禁用在线解压能力的配置,让管理员可以独立控制 ZIP、7z 等格式是否允许进入在线解压流程。

建议范围

  • 新增运行时配置,例如:
    • archive_extract_enabled_formats = zip,7z
    • 或 archive_extract_zip_enabled / archive_extract_7z_enabled
  • 默认值应保持兼容,同时对新增高风险格式保持可审计、可关闭。
  • 在线解压入口根据 source file 识别出的 ArchiveFormat 检查配置,禁用时返回明确 validation error。
  • 后台任务 payload / retry / task status 中应能体现格式被禁用,而不是表现为通用失败。
  • 管理端 system settings 展示该配置,并说明不同格式的资源风险差异。
  • 补充测试:
    • ZIP enabled / disabled
    • 7z enabled / disabled
    • 配置热更新后无需重启生效
    • 禁用格式不会创建或执行 archive extract task,或 task 会以明确错误终止(按现有架构选一种一致行为)

非目标

  • 不在这个 issue 里决定是否移除 7z 支持。
  • 不在这个 issue 里替换 7z 解析库。
  • 不要求影响 archive build;这里只讨论在线解压。若后续需要,也可以扩展成归档模块能力矩阵。

相关

Metadata

Metadata

Assignees

Labels

EnhancementNew feature or requestPriority: LowLow priority issueRustPull requests that update Rust codeTypeScriptPull requests that update JavaScript code

Type

No type

Fields

No fields configured for issues without a type.

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions