fix(iot): консоль — убрать старые домены kube5s/sless

- apiBase → window.location.origin (same-origin с API: консоль и /v1 раздаёт один
  iot-service).
- mqttBase → wss://exqx.containerk8s.dev.nubes.ru/mqtt (как в landing.html).
- Убраны упоминания «оператор»/k8s в комментариях; MQTTX-инструкция — новый хост.
This commit is contained in:
Repinoid
2026-10-11 07:53:02 +03:00
parent 3e1d981614
commit ba14d4a767
+10 -9
View File
@@ -4,8 +4,7 @@
IoT Консоль — SPA для управления IoT устройствами. IoT Консоль — SPA для управления IoT устройствами.
Стек: ванильный HTML/CSS/JS + mqtt.js (CDN). Стек: ванильный HTML/CSS/JS + mqtt.js (CDN).
Функционал: вход, список устройств, credentials, эмулятор MQTT, заглушка телеметрии. Функционал: вход, список устройств, credentials, эмулятор MQTT, заглушка телеметрии.
Встраивается в оператор через go:embed, раздаётся по GET /console. Встраивается в iot-service через go:embed, раздаётся по GET /console. -->
Доступна по: https://iot.kube5s.ru/console -->
<html lang="ru"> <html lang="ru">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
@@ -252,8 +251,10 @@ const S = {
token: localStorage.getItem('iot_token') || '', token: localStorage.getItem('iot_token') || '',
// ns вычисляется из токена автоматически (SHA256(sub) → "sless-{hex}"), не вводится вручную // ns вычисляется из токена автоматически (SHA256(sub) → "sless-{hex}"), не вводится вручную
ns: localStorage.getItem('iot_ns') || '', ns: localStorage.getItem('iot_ns') || '',
apiBase: localStorage.getItem('iot_api_base') || 'https://sless.kube5s.ru', // apiBase — same-origin с API (консоль и /v1 раздаёт один iot-service);
mqttBase: localStorage.getItem('iot_mqtt_base')|| 'wss://iot.kube5s.ru/mqtt', // 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: [], devices: [],
@@ -308,7 +309,7 @@ function displayNameFromToken(token) {
return token; return token;
} }
// namespaceFromToken — вычисляет k8s namespace из токена. // namespaceFromToken — вычисляет namespace из токена.
// Алгоритм ИДЕНТИЧЕН Terraform провайдеру (client.NamespaceFromSub): // Алгоритм ИДЕНТИЧЕН Terraform провайдеру (client.NamespaceFromSub):
// SHA256(sub) → первые 8 байт → "sless-{16 hex символов}" // SHA256(sub) → первые 8 байт → "sless-{16 hex символов}"
// //
@@ -371,7 +372,7 @@ function sanitizeApiError(msg) {
return msg; return msg;
} }
// apiCall — универсальная обёртка для REST запросов к оператору // apiCall — универсальная обёртка для REST запросов к API iot-service
async function apiCall(method, path, body) { async function apiCall(method, path, body) {
const opts = { const opts = {
method, method,
@@ -636,8 +637,8 @@ async function doLogin() {
return; return;
} }
S.apiBase = 'https://sless.kube5s.ru'; S.apiBase = window.location.origin;
S.mqttBase = 'wss://iot.kube5s.ru/mqtt'; S.mqttBase = 'wss://exqx.containerk8s.dev.nubes.ru/mqtt';
S.ns = ns; S.ns = ns;
S.token = tok; S.token = tok;
S.displayName = displayNameFromToken(tok); S.displayName = displayNameFromToken(tok);
@@ -996,7 +997,7 @@ function credsTab(d) {
</a> </a>
&nbsp;<span style="color:#a0bcd8;font-size:13px;">— браузерный MQTT-клиент, ничего не нужно устанавливать</span><br> &nbsp;<span style="color:#a0bcd8;font-size:13px;">— браузерный MQTT-клиент, ничего не нужно устанавливать</span><br>
<strong style="color:#fff;">1.</strong>&nbsp; <strong style="color:#fff;">1.</strong>&nbsp;
Host: <code style="background:#0a1e30;padding:2px 7px;border-radius:4px;color:#7dd3fc;font-size:13px;">iot.kube5s.ru</code>&nbsp; Host: <code style="background:#0a1e30;padding:2px 7px;border-radius:4px;color:#7dd3fc;font-size:13px;">exqx.containerk8s.dev.nubes.ru</code>&nbsp;
Port: <code style="background:#0a1e30;padding:2px 7px;border-radius:4px;color:#7dd3fc;font-size:13px;">443</code>&nbsp; Port: <code style="background:#0a1e30;padding:2px 7px;border-radius:4px;color:#7dd3fc;font-size:13px;">443</code>&nbsp;
Protocol: <code style="background:#0a1e30;padding:2px 7px;border-radius:4px;color:#7dd3fc;font-size:13px;">wss</code>&nbsp; Protocol: <code style="background:#0a1e30;padding:2px 7px;border-radius:4px;color:#7dd3fc;font-size:13px;">wss</code>&nbsp;
Path: <code style="background:#0a1e30;padding:2px 7px;border-radius:4px;color:#7dd3fc;font-size:13px;">/mqtt</code><br> Path: <code style="background:#0a1e30;padding:2px 7px;border-radius:4px;color:#7dd3fc;font-size:13px;">/mqtt</code><br>