ESP32: отправлять homeserver sessionType в SHiNE auth

This commit is contained in:
AidarKC 2026-06-13 15:08:53 +04:00
parent 61c21b245e
commit 81d1b84a7d
4 changed files with 34 additions and 2 deletions

View File

@ -0,0 +1,16 @@
# ESP32 sessionType homeserver
- краткое описание:
- `ESP32` homeserver теперь должен отправлять в `CreateAuthSession` и `SessionLogin` поля `sessionType = 100` и `clientPlatform = "ESP32"`.
- что проверять:
- после перепрошивки устройство должно заново подключиться к `SHiNE`;
- в списке устройств у этой сессии должен отображаться тип `Homeserver` и платформа `ESP32`;
- детальная страница сеанса должна показывать те же значения.
- ожидаемый результат:
- сервер принимает homeserver-сеанс без ошибки `SESSION_TYPE_MISMATCH`;
- UI сервера/клиента показывает `Homeserver · ESP32`.
- статус:
- in_progress

View File

@ -81,6 +81,7 @@ static const uint8_t kBlockTypeAccessServers = 40;
static const uint8_t kBlockTypeSessions = 50;
static const uint8_t kBlockTypeTrustedState = 70;
static const uint8_t kSessionTypeHomeserver = 100;
static const char *kSessionClientPlatformEsp32 = "ESP32";
enum Screen {
SCREEN_HOME,
@ -3192,6 +3193,8 @@ static bool ensureShineSessionAuthenticated(String &errorOut) {
+ "\",\"sessionKey\":\"" + jsonEscape(sessionKey)
+ "\",\"timeMs\":" + String((unsigned long long)timeMs)
+ ",\"signatureB64\":\"" + jsonEscape(bytesToBase64String(signature, 64))
+ ",\"sessionType\":" + String((unsigned int)kSessionTypeHomeserver)
+ ",\"clientPlatform\":\"" + jsonEscape(kSessionClientPlatformEsp32)
+ "\",\"clientInfo\":\"ESP32 homeserver\"}";
String loginResp;
if (shineWsRequest(gShineWs, "SessionLogin", loginReq, loginResp)) {
@ -3257,6 +3260,8 @@ static bool ensureShineSessionAuthenticated(String &errorOut) {
+ ",\"authNonce\":\"" + jsonEscape(authNonce)
+ "\",\"deviceKey\":\"" + jsonEscape(bytesToBase64String(devicePub, 32))
+ "\",\"signatureB64\":\"" + jsonEscape(bytesToBase64String(signature, 64))
+ ",\"sessionType\":" + String((unsigned int)kSessionTypeHomeserver)
+ ",\"clientPlatform\":\"" + jsonEscape(kSessionClientPlatformEsp32)
+ "\",\"clientInfo\":\"ESP32 homeserver\"}";
String createResp;
if (!shineWsRequest(gShineWs, "CreateAuthSession", createReq, createResp)) {

View File

@ -30,6 +30,7 @@
- PIN-блокировка (в текущей временной сборке вход по PIN отключён, устройство открывает `HOME` сразу после старта);
- базовые настройки, статус и главный экран;
- сохранение `PDA` и `tx signature` после успешной регистрации.
- создание и возобновление серверной сессии `SHiNE` через WebSocket с `sessionType = 100` и `clientPlatform = "ESP32"`.
Что пока считается именно прототипом, а не финальной интеграцией:
@ -70,6 +71,16 @@
- флаги:
`wifiReady`, `serversReady`, `secretReady`, `registered`, `online`.
## Правило серверной сессии SHiNE
При подключении к серверу `SHiNE` устройство должно авторизовываться как homeserver-сеанс:
- `sessionType = 100`
- `clientPlatform = "ESP32"`
- `clientInfo = "ESP32 homeserver"`
Это относится и к `CreateAuthSession`, и к `SessionLogin`.
## Правила готовности к регистрации
Кнопка регистрации доступна только если одновременно выполнены условия:

View File

@ -1,2 +1,2 @@
client.version=1.2.181
server.version=1.2.170
client.version=1.2.182
server.version=1.2.171