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 устройствами.
Стек: ванильный HTML/CSS/JS + mqtt.js (CDN).
Функционал: вход, список устройств, credentials, эмулятор MQTT, заглушка телеметрии.
Встраивается в оператор через go:embed, раздаётся по GET /console.
Доступна по: https://iot.kube5s.ru/console -->
Встраивается в iot-service через go:embed, раздаётся по GET /console. -->
<html lang="ru">
<head>
<meta charset="UTF-8">
@@ -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) {
</a>
&nbsp;<span style="color:#a0bcd8;font-size:13px;">— браузерный MQTT-клиент, ничего не нужно устанавливать</span><br>
<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;
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>