Newer
Older
Sunfish / DOC / CLIENTES.md
@Ivan Dominguez Ivan Dominguez 21 hours ago 5 KB 3.0

Clientes de destino y adaptación automática

Implementado (perfiles, alias 8.3, entrega para Mac). Los clientes concretos están "a probar": la lista indica qué se quiere soportar, no qué se ha comprobado.

Sunfish debe servir igual a un navegador actual que a un PC con DOS o un Mac de 1990. La regla es que las adaptaciones sean automáticas: el servidor detecta el tipo de cliente y ajusta nombres, formato y codificación sin que haya que configurar nada en el share. Solo hay opciones para desactivarlas cuando estorban.

Plataformas de destino

Plataforma Red Web FTP Otros
DOS Packet driver + pila propia de cada programa Navegadores gráficos y de texto para DOS Clientes FTP de DOS (las suites de red para DOS suelen traer uno) Descargadores HTTP/1.0 de línea de comandos
Windows 3.1 / WfW 3.11 Pila Winsock de terceros, o TCP/IP-32 de Microsoft en WfW 3.11 Navegadores de 16 bits (Netscape, IE, Opera, Mosaic) Clientes FTP de 16 bits; ftp:// en los navegadores —
Windows 95/98/ME De serie IE 3–6, Netscape 3–4, Opera ftp.exe (modo activo) Carpetas web (WebDAV) con IE5/Office
Mac clásico (System 6 a Mac OS 9) MacTCP / Open Transport Navegadores de 68k y PPC de la época Clientes FTP gráficos (con MacBinary) Clientes WebDAV de Mac OS 9
Moderno — Cualquier navegador actual Cualquier cliente WebDAV desde Explorador, Finder, GVfs; otro Sunfish

Detección (web)

Por el User-Agent de cada petición se asigna un perfil:

Perfil Se reconoce por (orientativo) Adaptaciones
dos Navegadores de DOS conocidos, DOS, FreeDOS Nombres 8.3, CP437/CP850, modo clásico, diseño apto para texto
win16 Win16, Windows 3.1 Nombres 8.3, Windows-1252, modo clásico
mac Mac_68000, Mac_PowerPC, 68K, PPC con Mac OS clásico, navegadores de Mac clásico MacBinary automático, MacRoman, nombres de hasta 31 caracteres, modo clásico
text Lynx, Links, w3m Diseño para texto (sin depender de tablas ni imágenes)
classic Cualquier otro navegador no moderno Modo clásico (HTML 3.2/4.01, ISO-8859-1 con entidades)
modern Navegadores actuales Modo moderno (UTF-8, CSS, JS opcional)
  • La lista de firmas está en el código y se amplía con lo que se vaya probando.
  • Forzar el perfil: ?p=dos|win16|mac|text|classic|modern. Como algunos clientes antiguos no guardan cookies, el perfil forzado se propaga en los enlaces que genera la página. Si hay cookies, también se guarda en una.
  • Un perfil desconocido o dudoso cae siempre en classic, que funciona en todos.

En FTP no hay User-Agent; ver FTP-Y-WEBDAV.md.

Nombres cortos (8.3) para DOS y Windows 3.1

DOS y Windows 3.1 solo admiten nombres NOMBRE.EXT (8 + 3 caracteres, sin espacios ni la mayoría de símbolos). Un fichero como Fotos del viaje.jpeg no se puede guardar con su nombre.

Con los perfiles dos y win16 (y en FTP si se activa), Sunfish presenta alias 8.3:

  • Si el nombre ya es 8.3 válido, se usa tal cual (DOS no distingue mayúsculas, y así no cambia ningún enlace).
  • Si no, se genera un alias estable: no cambia aunque se añadan o quiten otros ficheros de la carpeta. Así un enlace o un listado antiguo no acaba apuntando a otro fichero.
    • Base: las 3 primeras letras válidas del nombre, transliteradas a ASCII (á → A).
    • Después, 3 dígitos hexadecimales de un hash del nombre completo, y ~1.
    • Extensión: los 3 primeros caracteres válidos de la última extensión.
    • Ejemplo: Fotos del viaje.jpeg → FOTxxx~1.JPE (xxx, el hash).
    • Si dos nombres de la misma carpeta dan el mismo alias, el segundo en orden alfabético pasa a ~2, y así sucesivamente (muy raro).
  • Los alias se usan en el listado, en los enlaces y en la cabecera Content-Disposition de las descargas. En la web se muestra también el nombre largo, para saber qué es cada cosa.
  • Al pedir una ruta (web o FTP, con cualquier perfil), cada segmento se busca primero por nombre real y después por alias.
  • Lo que sube un cliente DOS o Win16 ya tiene nombre 8.3 y se guarda tal cual.
  • Se desactiva por share con ShortNames = false.

Nombres en Mac clásico

HFS admite hasta 31 caracteres. Con el perfil mac, los nombres más largos se acortan para la descarga (Content-Disposition y nombre dentro de MacBinary) conservando la extensión. Los ficheros con resource fork se descargan en MacBinary de forma automática; ver MAC-CLASICO.md.

Diseño de página para todos

  • Modo clásico:
    • Tablas sencillas, sin anidar más de lo necesario.
    • Todas las imágenes con alt ([DIR], [TXT]…), para que los navegadores de texto muestren algo legible.
  • Perfil text: el listado es una lista de líneas en vez de una tabla.
  • Fuente sin serifa:
    • Modo moderno: CSS font-family: Verdana, "DejaVu Sans", Tahoma, Arial, Helvetica, sans-serif.
    • Modo clásico: <font face="Verdana,Arial,Helvetica">, que entienden desde Netscape 3 e IE3; los navegadores anteriores la ignoran y usan su fuente por defecto.