Usar el DNS como un sistema de cacheo mundial. https://podcast.jcea.es/podcastz/6
00:30: El proyecto es confidencial, pero quiero exponer algunas técnicas que pueden ser útiles para otros programadores.
02:50: El programa requiere actualizarse constantemente de forma automática. 04:30: El usuario solo instala manualmente un "descargador". 05:50: Descripción del proceso de actualización. 06:30: Firma digital, imprescindible cuando hay actualizaciones constantes a través de redes no confiables.
08:00: En la primera versión del proyecto, el programa se descargaba en cada ejecución (20KBytes). 09:00: Pero esto no escala cuando el número de usuarios crece, o el tamaño del fichero crece. 13:30: Usar el DNS para comprobar las versiones, utilizándolo de caché. A nivel mundial y de forma simple.
15:20: Cuando un ordenador pide a su ISP que haga una petición de DNS, dicho ISP cachea el resultado y está disponible para otros clientes. Y el tiempo de cacheo es configurable en el servidor
origen.
17:30: Problema: sin instalar librerías adicionales, Python tiene una capacidad de interacción con el DNS muy limitada. Hay que buscarse la vida.
19:30: En vez de decir a través del DNS qué versión es la más moderna, lo que hacemos es permitir que el cliente confirme si su versión es la última o no. Comprobamos si el registro
"HASH_MD5.md5.DOMINIO" existe o no.
22:40: Ojo con los ISPs puñeteros que resuelven a sus propias IPs las resoluciones DNS inexistentes. Solución: Comprobamos que la IP resuelta sea la esperada.
25:00: Firma digital por El Gamal. 27:20: El actualizador no hace más descargar la versión actual (con todas las verificaciones) y luego le pasa el control. Actualizar el actualizador es "complicado" :).