diff --git a/HISTORY/code-review-request-v2.md b/HISTORY/code-review-request-v2.md new file mode 100644 index 0000000..dda0bf4 --- /dev/null +++ b/HISTORY/code-review-request-v2.md @@ -0,0 +1,33 @@ +# Code Review Request v2 — Go Terraform Registry + +## Контекст + +После первого ревью исправлено: SSRF в proxyHandler, go.sum, readyz, сортировка версий, graceful shutdown, gofmt. Добавлен /debug и дизайн Nubes. + +Продакшен: `https://tf-registry.containerk8s.services.ngcloud.ru` +S3: Ceph `s3.msk-1.ngcloud.ru`, бакет `nubes-terraform-registry` + +## Файлы для ревью + +- `server/main.go` — всё в одном файле (~430 строк) +- `server/gpg_key.go` — GPG-ключи +- `server/docs.go` — статика +- `Dockerfile` — сборка + +## Вопросы + +1. **proxyHandler** — новый стриминг с ручным `Read/Write/Flush` циклом и 64KB буфером. Нормально ли это? Не упущены ли edge-cases (обрыв соединения, таймаут)? + +2. **/debug endpoint** — показывает ENV, DNS, TCP, S3 статус. Безопасно ли это на проде? DNS-резолв и TCP-dial из пода могут быть использованы для SSRF? + +3. **Один файл** — main.go разросся до ~430 строк (роуты + S3 + debug + HTML-шаблон). Стоит ли дробить или пока ок? + +4. **embed для logo.svg** — нормальный подход? Не раздует ли бинарник? + +5. **S3_PREFIX hardcode в Dockerfile** — `tf-registry.containerk8s.services.ngcloud.ru` зашит в Dockerfile ENV. Это конфиг или хардкод? + +6. **downloadVersion** — `defer` внутри `if err == nil` (с прошлого ревью сказали что ок). Перепроверь — defer внутри if-блока точно не проблема? + +7. **Dockerfile** — есть `go.mod`/`go.sum`, билд воспроизводимый. Всё ок? + +8. **Общее** — перед деплоем в прод, что ещё проверить?