Os limites do túnel

Quem alcança o servidor enquanto o túnel está no ar, o que o código impõe, o que não impõe, e o que acontece quando o túnel falha ou você perde um celular.

Público enquanto roda #

Enquanto o servidor roda com um túnel, o endereço dele é alcançável pela internet. O endereço é um hostname de túnel rápido da Cloudflare, aleatório a cada execução, e morre com o servidor. Não é uma rede privada, e nada nele depende de o celular ser seu: o que fica entre a internet e a execução é o que o código impõe, abaixo.

O AutoDev não tem relay próprio. O tráfego passa pelo serviço de túnel da Cloudflare, do qual o AutoDev executa um cliente e que não opera. O endereço começa com https://. O último salto, do cloudflared para o AutoDev, é http simples em 127.0.0.1.

O que o código impõe #

RequisiçãoO que ela precisa
A página em /, sem credencialNada. Mostra a página de pareamento, sem nome de projeto, status nem contagens.
POST /pairUm código de pareamento aberto. 5 tentativas erradas o fecham.
/pairing, que abre e lê um códigoO token do servidor. Um cookie de pareamento não é aceito.
Toda outra rota: a página de check-in, /answer, /command, /project, /unpair, /events e /view/<kind>O token do servidor como Authorization: Bearer, ou o cookie de um dispositivo pareado. Qualquer outra coisa recebe 401.
POST /command com um cookieTambém o cabeçalho X-AutoDev-Device: 1.

Mais três regras valem para toda requisição:

O token vem de --token, de AUTODEV_WEB_TOKEN ou, quando nenhum dos dois está definido, é gerado: 24 bytes aleatórios. O autodev serve imprime um token gerado e diz para tratá-lo como uma senha. Um servidor destacado guarda o token em serve.json, em ~/.autodev/, para que o painel possa se conectar a ele.

Revogando um dispositivo #

Parar o servidor esquece todo dispositivo pareado, então, para um celular perdido, a forma de cortá-lo é desligar o acesso remoto. Os dispositivos vivem na memória do servidor e em mais nenhum lugar.

Um celular pode se desconectar pelo próprio menu. Nada revoga um outro dispositivo em particular, e o painel não tem controle que revogue todos sem parar o servidor.

A idade máxima do cookie, cerca de 400 dias, é um pedido ao navegador. O servidor não confere a idade de um dispositivo: ele aceita um token até o servidor parar. Um token copiado de um celular funciona enquanto o servidor rodar.

Quando o túnel falha #

Um túnel pode falhar ao iniciar de três jeitos, e a mensagem de cada um é escrita como está aqui:

Em cada caso o servidor continua rodando em loopback, e só esta máquina o alcança. Um servidor iniciado pelo painel escreve Tunnel unavailable — serving on loopback only. e o motivo no log de eventos como serve.tunnel_failed, e a linha de endereço do painel mostra Tunnel unavailable — loopback only. cloudflared ausente trata da correção.

O AutoDev continua vigiando o túnel depois que ele anunciou o endereço. Se o cloudflared sair depois, ou o processo dele falhar, o AutoDev retira o endereço, grava um aviso serve.tunnel_down com o motivo, e a linha de endereço muda para o mesmo Tunnel unavailable — loopback only. Ele não refaz o túnel: um novo tem um hostname aleatório novo, e todo celular pareia de novo. Desligue e ligue o acesso remoto para ter um.

O que isto não faz #

Ligando o acesso remoto trata de iniciar e parar o servidor, e Todas as chaves de configuração trata das configurações que não são específicas dele.