Segurança
A página é servida a partir de droid.devpier.dev, mas o emulador e o gateway rodam no seu Mac. Qualquer página web que você abrir poderia tentar se conectar a um programa no seu Mac, então o gateway verifica cada conexão.
Apenas loopback
Seção intitulada “Apenas loopback”O gateway escuta apenas em 127.0.0.1. Ele não aceita conexões da sua rede local nem da internet. Outros computadores não conseguem alcançá-lo.
Lista de origens permitidas
Seção intitulada “Lista de origens permitidas”Os navegadores enviam um cabeçalho Origin quando uma página abre um WebSocket. O gateway aceita apenas estas origens:
https://droid.devpier.devhttp://127.0.0.1:<port>http://localhost:<port>
Uma conexão com qualquer outra origem, ou sem origem, é fechada com o código 4003. Uma página de outro site não consegue controlar seu emulador, mesmo que adivinhe a porta.
Token de inicialização
Seção intitulada “Token de inicialização”- Cada vez que o gateway é iniciado, ele cria um novo token aleatório: 32 bytes aleatórios, codificados como uma string base64url de 43 caracteres.
- O gateway abre a página com a porta e o token depois de
#:https://droid.devpier.dev/app/#port=<port>&token=<token>. Os navegadores não enviam ao servidor web a parte depois de#, então o token nunca chega adroid.devpier.dev. - A página salva a porta e o token no armazenamento local do navegador, para que você possa recarregar a página, e os remove da barra de endereços.
- A primeira mensagem de cada conexão deve conter o token. Se ele estiver errado, o gateway responde com um erro
bad-tokene fecha a conexão com o código4001. - Quando o gateway reinicia, o token antigo deixa de funcionar. Abra o novo link que ele mostra.
O site não se conecta ao seu Mac
Seção intitulada “O site não se conecta ao seu Mac”A permissão de rede local do Chrome e a verificação de Origin do gateway funcionam por site, não por caminho. Por isso, as páginas de documentação compartilham a permissão com a página do emulador em /app/. Para limitar o que isso significa:
- Apenas a página do emulador em
/app/se conecta ao gateway. A página inicial e esta documentação nunca fazem isso, então lê-las não dispara a solicitação de permissão. - O site não carrega scripts, estilos, fontes ou mídia de terceiros. Tudo é servido a partir de
droid.devpier.dev. - O token é uma segunda verificação: uma página em
droid.devpier.devsem o token não consegue usar o gateway.
Instalação de software
Seção intitulada “Instalação de software”O gateway nunca instala pacotes do Android SDK nem cria dispositivos sem perguntar. Ele pergunta [y/N] no Terminal, e o padrão é não. Você mesmo aceita as licenças do Android SDK.
Códigos de fechamento de conexão
Seção intitulada “Códigos de fechamento de conexão”| Código | Significado |
|---|---|
4000 |
A primeira mensagem não foi hello. |
4001 |
Token errado. |
4002 |
A página e o gateway usam versões de protocolo diferentes. |
4003 |
Origem não permitida. |
Relatar um problema
Seção intitulada “Relatar um problema”Abra uma issue em github.com/twosugar/android-emu-web.