From 3d290ba317897ac44c620a8f46327dd5f98b1729 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sun, 9 Aug 2026 10:01:24 +0400 Subject: [PATCH] =?UTF-8?q?doc:=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B2=D1=82=D0=BE=D1=80=D0=BE=D0=B5=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=B4-=D1=80=D0=B5=D0=B2=D1=8C=D1=8E=20=D0=A1=D0=BE?= =?UTF-8?q?=D0=BD=D0=BD=D0=B5=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HISTORY/code-review-request-v2.md | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 HISTORY/code-review-request-v2.md 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. **Общее** — перед деплоем в прод, что ещё проверить?