ESP32: отправлять homeserver sessionType в SHiNE auth
This commit is contained in:
parent
61c21b245e
commit
81d1b84a7d
@ -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
|
||||
@ -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)) {
|
||||
|
||||
@ -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`.
|
||||
|
||||
## Правила готовности к регистрации
|
||||
|
||||
Кнопка регистрации доступна только если одновременно выполнены условия:
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
client.version=1.2.181
|
||||
server.version=1.2.170
|
||||
client.version=1.2.182
|
||||
server.version=1.2.171
|
||||
|
||||
Loading…
Reference in New Issue
Block a user