# Ревью проекта awg_profiler *Дата: 2026-07-18. Метод: сверка каждого утверждения README.md с кодом (все 13 Go-файлов, оба Dockerfile, compose-файлы, entrypoint'ы, webui).* Общий вердикт: **README точен, проект добротный** — атомарные записи, продуманная схема статистики, аккуратное разделение CLI/web. Но при сверке нашлись реальные расхождения и проблемы в самом коде. ## Точность README: подтверждено кодом - Окно «онлайн» ≤ 150 с — совпадает (`onlineWindow = 150s`, stats.go:29), обновление UI каждые 10 с (`setInterval(refreshAll, 10000)`), фоновый замер раз в 20 с (`time.Tick(20s)`). - Накопление статистики: дельты неотрицательны, сброс счётчика распознаётся, atomic write (temp+rename), битый файл → `.bad` — всё как описано (stats.go). - Секреты не отдаются в JSON API (`clientOut` без private/psk), Basic auth через `subtle.ConstantTimeCompare`, `die()` в web-режиме превращается в HTTP-ошибку — совпадает. - `go vet` чистый, `go test ./...` — ok (9 тестов). ## Найденные проблемы ### 1. CSRF на мутирующих POST-эндпоинтах (средняя серьёзность) Web API защищён только Basic auth, а браузер прикладывает эти credentials автоматически. Cross-origin `