Безопасность
Страница отдаётся с droid.devpier.dev, но эмулятор и шлюз работают на вашем Mac. Любая открытая вами веб-страница может попытаться подключиться к программе на вашем Mac, поэтому шлюз проверяет каждое подключение.
Только loopback
Заголовок раздела «Только loopback»Шлюз слушает только 127.0.0.1. Он не принимает подключения из вашей локальной сети или из интернета. Другие компьютеры не могут к нему подключиться.
Список разрешённых Origin
Заголовок раздела «Список разрешённых Origin»Когда страница открывает WebSocket, браузер отправляет заголовок Origin. Шлюз принимает только эти источники:
https://droid.devpier.devhttp://127.0.0.1:<port>http://localhost:<port>
Подключение с любым другим источником или без источника закрывается с кодом 4003. Страница на другом сайте не может управлять вашим эмулятором, даже если угадает порт.
Токен запуска
Заголовок раздела «Токен запуска»- При каждом запуске шлюз создаёт новый случайный токен: 32 случайных байта, закодированных в строку base64url длиной 43 символа.
- Шлюз открывает страницу с портом и токеном после
#:https://droid.devpier.dev/app/#port=<port>&token=<token>. Браузеры не отправляют на веб-сервер часть после#, поэтому токен никогда не попадает наdroid.devpier.dev. - Страница сохраняет порт и токен в локальном хранилище браузера, чтобы страницу можно было перезагрузить, и убирает их из адресной строки.
- Первое сообщение каждого подключения должно содержать токен. Если он неверный, шлюз отвечает ошибкой
bad-tokenи закрывает подключение с кодом4001. - После перезапуска шлюза старый токен перестаёт работать. Откройте новую ссылку, которую он выводит.
Сайт не подключается к вашему Mac
Заголовок раздела «Сайт не подключается к вашему Mac»Разрешение Chrome на доступ к локальной сети и проверка Origin в шлюзе действуют на уровне сайта, а не пути. Поэтому страницы документации разделяют это разрешение со страницей эмулятора по адресу /app/. Чтобы ограничить последствия этого:
- К шлюзу подключается только страница эмулятора по адресу
/app/. Главная страница и эта документация никогда этого не делают, поэтому их чтение не вызывает запрос разрешения. - Сайт не загружает сторонние скрипты, стили, шрифты или медиафайлы. Всё отдаётся с
droid.devpier.dev. - Токен — вторая проверка: страница на
droid.devpier.devбез токена не может использовать шлюз.
Установка программ
Заголовок раздела «Установка программ»Шлюз никогда не устанавливает пакеты Android SDK и не создаёт устройства, не спросив. Он спрашивает [y/N] в Терминале, и ответ по умолчанию — «нет». Лицензии Android SDK вы принимаете сами.
Коды закрытия подключения
Заголовок раздела «Коды закрытия подключения»| Код | Значение |
|---|---|
4000 |
Первое сообщение не было hello. |
4001 |
Неверный токен. |
4002 |
Страница и шлюз используют разные версии протокола. |
4003 |
Origin не разрешён. |
Сообщить о проблеме
Заголовок раздела «Сообщить о проблеме»Создайте issue на github.com/twosugar/android-emu-web.