From 7972676eb8075032085f1b7a4289c458ddfacf4f474db01b734d6ffa070949b0 Mon Sep 17 00:00:00 2001 From: AidarKC Date: Mon, 15 Jun 2026 02:21:21 +0400 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20pairing=20=D0=B1=D0=B5=D0=B7=20=D0=BF=D0=B0?= =?UTF-8?q?=D1=80=D0=BE=D0=BB=D1=8F=20=D0=B8=20=D1=83=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=BD=D1=82=D0=BE=D0=BC=D0=BD=D1=8B?= =?UTF-8?q?=D0=B5=20=D0=B7=D0=B0=D1=8F=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dev_Docs/API/03_Session_Management_API.md | 1 + Dev_Docs/Протоколы/ESP_Pairing_и_режимы_подключения.md | 2 +- .../src/main/java/shine/db/dao/EspPairingRequestsDAO.java | 2 +- .../JSON/handlers/auth/Net_StartEspPairing_Handler.java | 2 +- VERSION.properties | 4 ++-- shine-UI/js/app.js | 2 +- shine-UI/js/pages/device-pairing-view.js | 2 +- 7 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Dev_Docs/API/03_Session_Management_API.md b/Dev_Docs/API/03_Session_Management_API.md index 3bd2aa5..0c2a8df 100644 --- a/Dev_Docs/API/03_Session_Management_API.md +++ b/Dev_Docs/API/03_Session_Management_API.md @@ -267,6 +267,7 @@ K9v3nQ4u8jYk0a2p7cD4mLx1zR0sT5wV6bN8eH3fQ1M ### 5.3. `ListEspPairingRequests` Доступно для любой уже авторизованной доверенной сессии пользователя. +Возвращает только реально активные pending-заявки со `state = created`. Уже `approved` и `rejected` заявки в этот список больше не попадают. ### Успешный ответ diff --git a/Dev_Docs/Протоколы/ESP_Pairing_и_режимы_подключения.md b/Dev_Docs/Протоколы/ESP_Pairing_и_режимы_подключения.md index e9a44a7..df1ffa7 100644 --- a/Dev_Docs/Протоколы/ESP_Pairing_и_режимы_подключения.md +++ b/Dev_Docs/Протоколы/ESP_Pairing_и_режимы_подключения.md @@ -59,7 +59,7 @@ ## 3. Что именно делает сервер - хранит включённость pairing и optional opaque `passwordHash`; -- хранит pending/approved/rejected pairing-заявки; +- хранит pairing-заявки всех статусов, но в список активных для доверённого устройства отдаёт только pending `created`; - рассчитывает короткий код `shortCode` из `7` цифр; - рассчитывает длинный `fingerprintB58` из `SHA-256` заявки; - уведомляет онлайн доверенные сессии событием `IncomingEspPairingRequest`, если такие сессии подключены; diff --git a/SHiNE-server/shine-server-db/src/main/java/shine/db/dao/EspPairingRequestsDAO.java b/SHiNE-server/shine-server-db/src/main/java/shine/db/dao/EspPairingRequestsDAO.java index 0aaede8..beff033 100644 --- a/SHiNE-server/shine-server-db/src/main/java/shine/db/dao/EspPairingRequestsDAO.java +++ b/SHiNE-server/shine-server-db/src/main/java/shine/db/dao/EspPairingRequestsDAO.java @@ -112,7 +112,7 @@ public final class EspPairingRequestsDAO { FROM esp_pairing_requests WHERE login = ? COLLATE NOCASE AND expires_at_ms > ? - AND status IN ('created', 'approved', 'rejected') + AND status = 'created' ORDER BY created_at_ms DESC """; List list = new ArrayList<>(); diff --git a/SHiNE-server/shine-server-net-protocol/src/main/java/server/logic/ws_protocol/JSON/handlers/auth/Net_StartEspPairing_Handler.java b/SHiNE-server/shine-server-net-protocol/src/main/java/server/logic/ws_protocol/JSON/handlers/auth/Net_StartEspPairing_Handler.java index 4e32f11..f7b2c2f 100644 --- a/SHiNE-server/shine-server-net-protocol/src/main/java/server/logic/ws_protocol/JSON/handlers/auth/Net_StartEspPairing_Handler.java +++ b/SHiNE-server/shine-server-net-protocol/src/main/java/server/logic/ws_protocol/JSON/handlers/auth/Net_StartEspPairing_Handler.java @@ -63,7 +63,7 @@ public class Net_StartEspPairing_Handler implements JsonMessageHandler { String canonicalLogin = user.getLogin(); EspPairingSettingsEntry settings = EspPairingSettingsDAO.getInstance().getByLogin(canonicalLogin); - if (settings == null || !settings.isEnabled() || settings.getPasswordHash() == null || settings.getPasswordHash().isBlank()) { + if (settings == null || !settings.isEnabled()) { return NetExceptionResponseFactory.error(req, 422, "PAIRING_NOT_AVAILABLE", "Для этого login pairing недоступен"); } diff --git a/VERSION.properties b/VERSION.properties index cb06f40..1df7483 100644 --- a/VERSION.properties +++ b/VERSION.properties @@ -1,2 +1,2 @@ -client.version=1.2.196 -server.version=1.2.185 +client.version=1.2.197 +server.version=1.2.186 diff --git a/shine-UI/js/app.js b/shine-UI/js/app.js index 88065e2..618684d 100644 --- a/shine-UI/js/app.js +++ b/shine-UI/js/app.js @@ -55,7 +55,7 @@ import * as serverSettingsView from './pages/server-settings-view.js'; import * as toolsSettingsView from './pages/tools-settings-view.js'; import * as deviceView from './pages/device-view.js?v=202606131435'; import * as connectDeviceView from './pages/connect-device-view.js?v=202606142055'; -import * as devicePairingView from './pages/device-pairing-view.js?v=202606150010'; +import * as devicePairingView from './pages/device-pairing-view.js?v=202606150030'; import * as deviceQrView from './pages/device-qr-view.js'; import * as deviceCameraView from './pages/device-camera-view.js'; import * as showKeysView from './pages/show-keys-view.js'; diff --git a/shine-UI/js/pages/device-pairing-view.js b/shine-UI/js/pages/device-pairing-view.js index 7e28ae5..932b522 100644 --- a/shine-UI/js/pages/device-pairing-view.js +++ b/shine-UI/js/pages/device-pairing-view.js @@ -102,7 +102,7 @@ export function render({ navigate }) { -

Пароль хранится на сервере только в виде hash. После включения можно переходить к заявкам ниже.

+

Чтобы включить pairing без пароля: оставьте галочку выключенной и нажмите `Включить / обновить`. Чтобы включить pairing с паролем: включите галочку, введите пароль и нажмите ту же кнопку.

`; const keySummaryCard = document.createElement('div');