Repository navigation
API and token lifetime fixes - #427
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Кратко
Доработки Provider API и API-ключей, исправления стабильности и безопасности.
DELETE /user/devices, ошибка 504 при взятии устройства через API, несколько процессов adb при--adb-autostartи ошибки CORS при OAuth-авторизации.Provider API
GET /api/v1/remote-devices. У каждого устройства есть поляacquired(занято ли оно) иowner(email пользователя илиnull). Занятость видна прямо в provider, без запросов в основной API.GET /api/v1/remote-devices/{serial}возвращает одно устройство. Если устройство подключено не через API, ответ — 404. Serial с IPv6 ([::1]:5555) передаётся в URL-кодированном виде.state:connecting→active→releasing.activeозначает, что adb подключён и воркер готов, то есть устройство можно отдавать пользователю. Пока устройство запускается или восстанавливается после сбоя, у негоconnecting. Webhook-события не изменились.{ "device": { "serial": "10.0.0.5:5555", "state": "active", "acquired": true, "owner": "user@example.com" } }API-ключи
lifetime(0–3):POST /api/v1/user/accessTokensиPOST /api/v1/users/{email}/accessTokens.ADB-ключи
adb connectвладельцами этих ключей. Без ключей подключиться может любой, у кого есть команда подключения.POST /api/v1/user/adbPublicKeys: на невалидный ключ ответ 400 (раньше 500). Повторное добавление того же ключа даёт 200 без дубликата.Лимит запросов
Раньше все клиенты делили один общий лимит на юнит (2800 запросов в минуту): заголовок с адресом клиента не читался из-за регистра имени. Теперь лимит считается для каждого клиента отдельно. Адрес клиента берётся из заголовка
X-Real-IP, если запрос пришёл от обратного прокси на том же хосте (loopback), а иначе — из адреса соединения. Если прокси не передаётX-Real-IP, запросы через него по-прежнему учитываются вместе.Исправления
POST /api/v1/user/devicesможно было взять устройство из группы, в которой пользователь не состоит. Блокировка при взятии не работала, и два одновременных запроса могли забрать одно устройствоForbidden (device not changed). Из одновременных запросов успешен ровно одинPOST /api/v1/user/devicesотвечал 504 «Device is not responding» пользователям, которые ни разу не добавляли ADB-ключDELETE /api/v1/user/devices/{serial}и/users/{email}/devices/{serial}не возвращали ответ: устройство освобождалось, а запрос висел до таймаута клиентаDELETEмогло вернуть 409--adb-autostart: при падении adb-сервера его одновременно перезапускали provider и каждый воркер устройства, и запускалось несколько процессов adb/auth/oauth/callback