- GET /iot-admin — HTML страница администратора (go:embed) - GET /iot-admin/stats — JSON API с данными (Bearer ADMIN_STATS_TOKEN) - Источники: Kafka consumer lag, K8s pod statuses, PostgreSQL per-tenant stats - Авторизация: ADMIN_STATS_TOKEN env var - Auto-refresh каждые 30 секунд - Nubes brand style
28 lines
1.2 KiB
Go
28 lines
1.2 KiB
Go
// Создано: 2026-04-06
|
|
// admin_embed.go — встраивает HTML страницы администратора IoT в бинарник через go:embed.
|
|
//
|
|
// Страница /iot-admin доступна без JWT — данные не содержит.
|
|
// Все данные загружаются через /iot-admin/stats (защищён ADMIN_STATS_TOKEN).
|
|
// Почему go:embed: единый деплой, нет отдельных pod-ов, нет nginx drift.
|
|
|
|
package api
|
|
|
|
import (
|
|
_ "embed"
|
|
"net/http"
|
|
)
|
|
|
|
// iotAdminHTML — бинарное содержимое страницы администратора IoT, встроенное при сборке.
|
|
//
|
|
//go:embed ui/iot-admin.html
|
|
var iotAdminHTML []byte
|
|
|
|
// ServeIoTAdmin обрабатывает GET /iot-admin — отдаёт HTML страницу администратора.
|
|
// Auth не нужен для HTML — сама страница ничего не содержит, только UI оболочка.
|
|
func ServeIoTAdmin(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
|
w.Header().Set("Cache-Control", "no-cache, must-revalidate")
|
|
w.WriteHeader(http.StatusOK)
|
|
_, _ = w.Write(iotAdminHTML)
|
|
}
|