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 kBlockTypeSessions = 50;
|
||||||
static const uint8_t kBlockTypeTrustedState = 70;
|
static const uint8_t kBlockTypeTrustedState = 70;
|
||||||
static const uint8_t kSessionTypeHomeserver = 100;
|
static const uint8_t kSessionTypeHomeserver = 100;
|
||||||
|
static const char *kSessionClientPlatformEsp32 = "ESP32";
|
||||||
|
|
||||||
enum Screen {
|
enum Screen {
|
||||||
SCREEN_HOME,
|
SCREEN_HOME,
|
||||||
@ -3192,6 +3193,8 @@ static bool ensureShineSessionAuthenticated(String &errorOut) {
|
|||||||
+ "\",\"sessionKey\":\"" + jsonEscape(sessionKey)
|
+ "\",\"sessionKey\":\"" + jsonEscape(sessionKey)
|
||||||
+ "\",\"timeMs\":" + String((unsigned long long)timeMs)
|
+ "\",\"timeMs\":" + String((unsigned long long)timeMs)
|
||||||
+ ",\"signatureB64\":\"" + jsonEscape(bytesToBase64String(signature, 64))
|
+ ",\"signatureB64\":\"" + jsonEscape(bytesToBase64String(signature, 64))
|
||||||
|
+ ",\"sessionType\":" + String((unsigned int)kSessionTypeHomeserver)
|
||||||
|
+ ",\"clientPlatform\":\"" + jsonEscape(kSessionClientPlatformEsp32)
|
||||||
+ "\",\"clientInfo\":\"ESP32 homeserver\"}";
|
+ "\",\"clientInfo\":\"ESP32 homeserver\"}";
|
||||||
String loginResp;
|
String loginResp;
|
||||||
if (shineWsRequest(gShineWs, "SessionLogin", loginReq, loginResp)) {
|
if (shineWsRequest(gShineWs, "SessionLogin", loginReq, loginResp)) {
|
||||||
@ -3257,6 +3260,8 @@ static bool ensureShineSessionAuthenticated(String &errorOut) {
|
|||||||
+ ",\"authNonce\":\"" + jsonEscape(authNonce)
|
+ ",\"authNonce\":\"" + jsonEscape(authNonce)
|
||||||
+ "\",\"deviceKey\":\"" + jsonEscape(bytesToBase64String(devicePub, 32))
|
+ "\",\"deviceKey\":\"" + jsonEscape(bytesToBase64String(devicePub, 32))
|
||||||
+ "\",\"signatureB64\":\"" + jsonEscape(bytesToBase64String(signature, 64))
|
+ "\",\"signatureB64\":\"" + jsonEscape(bytesToBase64String(signature, 64))
|
||||||
|
+ ",\"sessionType\":" + String((unsigned int)kSessionTypeHomeserver)
|
||||||
|
+ ",\"clientPlatform\":\"" + jsonEscape(kSessionClientPlatformEsp32)
|
||||||
+ "\",\"clientInfo\":\"ESP32 homeserver\"}";
|
+ "\",\"clientInfo\":\"ESP32 homeserver\"}";
|
||||||
String createResp;
|
String createResp;
|
||||||
if (!shineWsRequest(gShineWs, "CreateAuthSession", createReq, createResp)) {
|
if (!shineWsRequest(gShineWs, "CreateAuthSession", createReq, createResp)) {
|
||||||
|
|||||||
@ -30,6 +30,7 @@
|
|||||||
- PIN-блокировка (в текущей временной сборке вход по PIN отключён, устройство открывает `HOME` сразу после старта);
|
- PIN-блокировка (в текущей временной сборке вход по PIN отключён, устройство открывает `HOME` сразу после старта);
|
||||||
- базовые настройки, статус и главный экран;
|
- базовые настройки, статус и главный экран;
|
||||||
- сохранение `PDA` и `tx signature` после успешной регистрации.
|
- сохранение `PDA` и `tx signature` после успешной регистрации.
|
||||||
|
- создание и возобновление серверной сессии `SHiNE` через WebSocket с `sessionType = 100` и `clientPlatform = "ESP32"`.
|
||||||
|
|
||||||
Что пока считается именно прототипом, а не финальной интеграцией:
|
Что пока считается именно прототипом, а не финальной интеграцией:
|
||||||
|
|
||||||
@ -70,6 +71,16 @@
|
|||||||
- флаги:
|
- флаги:
|
||||||
`wifiReady`, `serversReady`, `secretReady`, `registered`, `online`.
|
`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
|
client.version=1.2.182
|
||||||
server.version=1.2.170
|
server.version=1.2.171
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user