From ba14d4a767e14420a0438ea21ea14a34525ec301 Mon Sep 17 00:00:00 2001 From: Repinoid Date: Sun, 11 Oct 2026 07:53:02 +0300 Subject: [PATCH] =?UTF-8?q?fix(iot):=20=D0=BA=D0=BE=D0=BD=D1=81=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=20=E2=80=94=20=D1=83=D0=B1=D1=80=D0=B0=D1=82=D1=8C?= =?UTF-8?q?=20=D1=81=D1=82=D0=B0=D1=80=D1=8B=D0=B5=20=D0=B4=D0=BE=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20kube5s/sless?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - apiBase → window.location.origin (same-origin с API: консоль и /v1 раздаёт один iot-service). - mqttBase → wss://exqx.containerk8s.dev.nubes.ru/mqtt (как в landing.html). - Убраны упоминания «оператор»/k8s в комментариях; MQTTX-инструкция — новый хост. --- internal/service/api/ui/iot-console.html | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/internal/service/api/ui/iot-console.html b/internal/service/api/ui/iot-console.html index 12e8398..f459310 100644 --- a/internal/service/api/ui/iot-console.html +++ b/internal/service/api/ui/iot-console.html @@ -4,8 +4,7 @@ IoT Консоль — SPA для управления IoT устройствами. Стек: ванильный HTML/CSS/JS + mqtt.js (CDN). Функционал: вход, список устройств, credentials, эмулятор MQTT, заглушка телеметрии. - Встраивается в оператор через go:embed, раздаётся по GET /console. - Доступна по: https://iot.kube5s.ru/console --> + Встраивается в iot-service через go:embed, раздаётся по GET /console. --> @@ -252,8 +251,10 @@ const S = { token: localStorage.getItem('iot_token') || '', // ns вычисляется из токена автоматически (SHA256(sub) → "sless-{hex}"), не вводится вручную ns: localStorage.getItem('iot_ns') || '', - apiBase: localStorage.getItem('iot_api_base') || 'https://sless.kube5s.ru', - mqttBase: localStorage.getItem('iot_mqtt_base')|| 'wss://iot.kube5s.ru/mqtt', + // apiBase — same-origin с API (консоль и /v1 раздаёт один iot-service); + // mqttBase — отдельный хост EMQX (как в landing.html). + apiBase: localStorage.getItem('iot_api_base') || window.location.origin, + mqttBase: localStorage.getItem('iot_mqtt_base')|| 'wss://exqx.containerk8s.dev.nubes.ru/mqtt', // Рабочие данные devices: [], @@ -308,7 +309,7 @@ function displayNameFromToken(token) { return token; } -// namespaceFromToken — вычисляет k8s namespace из токена. +// namespaceFromToken — вычисляет namespace из токена. // Алгоритм ИДЕНТИЧЕН Terraform провайдеру (client.NamespaceFromSub): // SHA256(sub) → первые 8 байт → "sless-{16 hex символов}" // @@ -371,7 +372,7 @@ function sanitizeApiError(msg) { return msg; } -// apiCall — универсальная обёртка для REST запросов к оператору +// apiCall — универсальная обёртка для REST запросов к API iot-service async function apiCall(method, path, body) { const opts = { method, @@ -636,8 +637,8 @@ async function doLogin() { return; } - S.apiBase = 'https://sless.kube5s.ru'; - S.mqttBase = 'wss://iot.kube5s.ru/mqtt'; + S.apiBase = window.location.origin; + S.mqttBase = 'wss://exqx.containerk8s.dev.nubes.ru/mqtt'; S.ns = ns; S.token = tok; S.displayName = displayNameFromToken(tok); @@ -996,7 +997,7 @@ function credsTab(d) {  — браузерный MQTT-клиент, ничего не нужно устанавливать
1.  - Host: iot.kube5s.ru  + Host: exqx.containerk8s.dev.nubes.ru  Port: 443  Protocol: wss  Path: /mqtt