Los límites del túnel

Quién alcanza el servidor mientras el túnel está activo, qué impone el código, qué no impone, y qué pasa cuando el túnel falla o pierdes un teléfono.

Público mientras funciona #

Mientras el servidor funciona con un túnel, su dirección es alcanzable desde internet. La dirección es un nombre de host de túnel rápido de Cloudflare, aleatorio en cada ejecución, y muere con el servidor. No es una red privada, y nada en ella depende de que el teléfono sea tuyo: lo que hay entre internet y la ejecución es lo que impone el código, abajo.

AutoDev no tiene relay propio. El tráfico pasa por el servicio de túnel de Cloudflare, del que AutoDev ejecuta un cliente y que no opera. La dirección empieza por https://. El último salto, de cloudflared a AutoDev, es http sin cifrar en 127.0.0.1.

Qué impone el código #

PeticiónQué necesita
La página en /, sin credencialNada. Muestra la página de emparejamiento, sin nombre de proyecto, estado ni cuentas.
POST /pairUn código de emparejamiento abierto. 5 intentos fallidos lo cierran.
/pairing, que abre y lee un códigoEl token del servidor. Una cookie de emparejamiento no se acepta.
Cualquier otra ruta: la página de check-in, /answer, /command, /project, /unpair, /events y /view/<kind>El token del servidor como Authorization: Bearer, o la cookie de un dispositivo emparejado. Cualquier otra cosa recibe 401.
POST /command con una cookieTambién la cabecera X-AutoDev-Device: 1.

Otras tres reglas valen para toda petición:

El token viene de --token, de AUTODEV_WEB_TOKEN o, cuando ninguno de los dos está definido, se genera: 24 bytes aleatorios. autodev serve imprime un token generado y dice que se trate como una contraseña. Un servidor independiente guarda su token en serve.json, en ~/.autodev/, para que el panel pueda conectarse a él.

Revocar un dispositivo #

Detener el servidor olvida todos los dispositivos emparejados, así que, para un teléfono perdido, la forma de cortarlo es desactivar el acceso remoto. Los dispositivos viven en la memoria del servidor y en ningún otro sitio.

Un teléfono puede desconectarse desde su propio menú. Nada revoca a otro dispositivo en particular, y el panel no tiene un control que revoque a todos sin detener el servidor.

La edad máxima de la cookie, unos 400 días, es una petición al navegador. El servidor no comprueba la edad de un dispositivo: acepta un token hasta que el servidor se detiene. Un token copiado de un teléfono funciona mientras el servidor esté en marcha.

Cuando el túnel falla #

Un túnel puede fallar al iniciarse de tres maneras, y el mensaje de cada una se escribe como aquí:

En cada caso el servidor sigue funcionando en loopback, y solo esta máquina lo alcanza. Un servidor iniciado desde el panel escribe Tunnel unavailable — serving on loopback only. y el motivo en el registro de eventos como serve.tunnel_failed, y la línea de dirección del panel muestra Tunnel unavailable — loopback only. Falta cloudflared trata de la solución.

AutoDev sigue vigilando el túnel después de que anuncie su dirección. Si cloudflared sale más tarde, o su proceso falla, AutoDev retira la dirección, escribe un aviso serve.tunnel_down con el motivo, y la línea de dirección cambia al mismo Tunnel unavailable — loopback only. No reconstruye el túnel: uno nuevo tiene un nombre de host aleatorio nuevo, y todo teléfono se empareja de nuevo. Desactiva y vuelve a activar el acceso remoto para tener uno.

Lo que esto no hace #

Activar el acceso remoto trata de iniciar y detener el servidor, y Todas las claves de configuración trata de los ajustes que no son específicos de él.