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:
@@ -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>
|
||||||
<span style="color:#a0bcd8;font-size:13px;">— браузерный MQTT-клиент, ничего не нужно устанавливать</span><br>
|
<span style="color:#a0bcd8;font-size:13px;">— браузерный MQTT-клиент, ничего не нужно устанавливать</span><br>
|
||||||
<strong style="color:#fff;">1.</strong>
|
<strong style="color:#fff;">1.</strong>
|
||||||
Host: <code style="background:#0a1e30;padding:2px 7px;border-radius:4px;color:#7dd3fc;font-size:13px;">iot.kube5s.ru</code>
|
Host: <code style="background:#0a1e30;padding:2px 7px;border-radius:4px;color:#7dd3fc;font-size:13px;">exqx.containerk8s.dev.nubes.ru</code>
|
||||||
Port: <code style="background:#0a1e30;padding:2px 7px;border-radius:4px;color:#7dd3fc;font-size:13px;">443</code>
|
Port: <code style="background:#0a1e30;padding:2px 7px;border-radius:4px;color:#7dd3fc;font-size:13px;">443</code>
|
||||||
Protocol: <code style="background:#0a1e30;padding:2px 7px;border-radius:4px;color:#7dd3fc;font-size:13px;">wss</code>
|
Protocol: <code style="background:#0a1e30;padding:2px 7px;border-radius:4px;color:#7dd3fc;font-size:13px;">wss</code>
|
||||||
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>
|
||||||
|
|||||||
Reference in New Issue
Block a user