Компоненты: - iot-operator: controller-manager (IoTDevice CRD) + REST API (порт 9090) - mqtt-bridge: MQTT (EMQX) → Kafka bridge - kafka-consumer: Kafka → Postgres pipeline Модуль: gitea.services.ngcloud.ru/Nail/IoT Все 3 бинарника собираются, import paths адаптированы.
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)
|
|
}
|