2.0 KiB
2.0 KiB
Research: Hub 配置凭证字段
Credential Handling in config.toml
- Decision: 允许在
[[Hub]]中以明文写入Username/Password,CLI 读取后立即掩码写日志,并鼓励与外部 Secret 管理(环境变量/Ansible Vault)组合。 - Rationale: 代理以 CLI 形式部署,最简单可靠的方式是继续沿用 TOML;通过
config --check-config校验与日志掩码即可满足大多数场景。 - Alternatives considered:
- 单独的凭证文件:需要额外路径与权限管理,易造成部署复杂化。
- 环境变量注入:缺乏结构化校验,且与当前 TOML 驱动原则冲突。
Hub Type 枚举与扩展
- Decision: 首批仅支持
docker、npm、go,在internal/config中实现枚举校验,并在internal/proxy/internal/server中通过switch type执行类型特定逻辑;保留default分支抛出“未支持类型”错误,为 apt/yum/composer 等新增项预留 hook。 - Rationale: 明确 types 可让日志/策略按仓库协议定制,同时使用枚举校验可避免错误输入;
switch+ 独立 helper 便于未来拆分成策略表。 - Alternatives considered:
- 自定义字符串+运行期反射:增加复杂度且容易出错。
- 大型插件机制:当前范围只需声明式扩展,无需插件框架。
单端口 Host 路由迁移
- Decision: 将监听端口移至全局(如
ListenPort),Fiber 仅在该端口启动一次;Hub 级Port字段在配置加载阶段报错提示迁移。路由层严格依赖Host/Host:port解析,必要时通过SERVER_PORT环境变量或 CLI flag override。 - Rationale: 单端口可简化暴露面并符合“Host 区分仓库”的目标;在
internal/server中已有 Host registry,可直接复用。 - Alternatives considered:
- 同时保留 per-Hub 端口:违背“统一端口”诉求且增加监听资源。
- 动态多端口监听:需要额外 goroutine/生命周期管理,复杂度高。