1.8 KiB
1.8 KiB
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 без таймаута |
🟡 |