From 6e1ce97f14cd9281ff8f8c45beff59e812f4ab1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sun, 9 Aug 2026 10:03:53 +0400 Subject: [PATCH] =?UTF-8?q?doc:=20=D1=80=D0=B5=D0=B7=D1=83=D0=BB=D1=8C?= =?UTF-8?q?=D1=82=D0=B0=D1=82=D1=8B=20=D0=BA=D0=BE=D0=B4-=D1=80=D0=B5?= =?UTF-8?q?=D0=B2=D1=8C=D1=8E=20v2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HISTORY/code-review-results-v2.md | 43 +++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 HISTORY/code-review-results-v2.md diff --git a/HISTORY/code-review-results-v2.md b/HISTORY/code-review-results-v2.md new file mode 100644 index 0000000..8a5dd24 --- /dev/null +++ b/HISTORY/code-review-results-v2.md @@ -0,0 +1,43 @@ +# Code Review v2 — Результаты (Соннет, 2026-08-09) + +## 1. proxyHandler стриминг — ✅ OK + +Цикл Read/Write/Flush корректен. Обрыв соединения обработан. +⚠️ Нет таймаута — `context.Background()` без дедлайна. При зависании S3 горутина повиснет навсегда. +📎 `?bucket=` в URL игнорируется (безопасно), можно убрать из download_url. + +## 2. /debug — 🔴 КРИТИЧНО + +**Утечка секретов.** Фильтр `strings.Contains(e, "S3_")` захватывает `S3_ACCESS_KEY` и `S3_SECRET_KEY` — выводятся в открытом виде. + +**Фикс:** исключить ключи из вывода. + +## 3. main.go ~430 строк — ✅ OK + +Дробить рано. Порог ~700-1000 строк. gpg_key.go и docs.go уже выделены правильно. + +## 4. embed logo.svg — ✅ OK + +Нормально. SVG < 5KB на бинарник не влияет. + +## 5. S3_PREFIX в Dockerfile — ✅ Конфиг + +ENV в Dockerfile = default, переопределяется через jsonEnv. Не хардкод. + +## 6. defer внутри if — ✅ OK + +defer привязан к функции, не к блоку. Корректно. + +## 7. Dockerfile go.mod/go.sum — ✅ OK + +Канонический паттерн. Билд воспроизводимый. + +## 8. Перед продом + +| # | Проблема | Риск | +|---|----------|------| +| 1 | `/debug` — утечка S3 ключей | 🔴 Критично | +| 2 | `proxyHandler` — нет таймаута на S3 | 🟡 | +| 3 | `proxyHandler` — key не валидируется по s3Prefix | 🟡 | +| 4 | Платформы hardcoded | 🟢 | +| 5 | `readyz` BucketExists без таймаута | 🟡 |