23 lines
2.0 KiB
Markdown
23 lines
2.0 KiB
Markdown
# 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/生命周期管理,复杂度高。
|