Newer
Older
Sunfish / DOC / README.md
@Ivan Dominguez Ivan Dominguez 21 hours ago 3 KB 3.0

Documentación técnica de Sunfish

Punto de entrada para desarrolladores y agentes de IA. Para el uso como usuario, ver el README principal. El resumen de decisiones y estado que leen los agentes de IA está en AGENTS.md.

Qué es Sunfish

Servidor web y de ficheros ligero y portable, en C# (.NET 10). Publica carpetas del disco a la vez por web (con un navegador de directorios en HTML4 que funciona en navegadores de los 90), FTP y WebDAV. Su uso principal es mover ficheros entre equipos modernos y máquinas muy antiguas (DOS, Windows 3.1 y 9x, Mac clásico) en una red de confianza. La versión 3 es una reescritura completa de la 2.0.

Índice

Documento Contenido
ARQUITECTURA.md Biblioteca común y aplicaciones, estructura del repo, publicación, módulos, AOT
SHARES-Y-RUTAS.md El share, locations por prefijo más largo, validación de rutas, permisos, configuración, importación de la 2.0
WEB.md Motor HTTP propio, interfaz clásica/moderna, juegos de caracteres, subidas, ZIP, panel de administración
FTP-Y-WEBDAV.md Servidor FTP (activo/pasivo, comandos, juegos de caracteres) y WebDAV
CLIENTES.md Plataformas de destino, perfiles de cliente automáticos, alias 8.3, fuente
MAC-CLASICO.md MacBinary, BinHex y AppleDouble transparentes para no perder resource forks
SEGURIDAD.md Alcance (en claro, redes de confianza) y medidas de protección del servidor
APLICACIONES.md Sunfish.exe (WinForms), sunfish-cli (TUI/consola), futuras GTK y macOS
COMPILACION-Y-PRUEBAS.md Estado, publicación, requisitos, scripts y pruebas previstas
LEGACY-2.0.md Qué tenía la 2.0 y qué se mantiene, cambia o elimina

Hechos clave (leer antes de tocar nada)

  • Fase de diseño: solo documentación. El código de la carpeta Sunfish/ es la 2.0 (.NET Framework 4.5) y no se porta: se reescribe.
  • Toda la lógica va en Sunfish.Core (compatible con Native AOT); las aplicaciones solo son interfaz.
  • Motor HTTP propio sobre Socket: ni HttpListener (exige administrador) ni Kestrel (es estricto con clientes antiguos y no permite AOT).
  • Web, FTP y WebDAV sirven el mismo árbol de shares; gana la location más específica.
  • Modo clásico de la web: HTML 3.2/4.01, sin JavaScript, ISO-8859-1 con entidades, iconos GIF, fuente sin serifa.
  • Adaptación automática al cliente (perfiles dos, win16, mac, text, classic, modern): alias 8.3, MacBinary, juegos de caracteres. Las opciones del share solo sirven para desactivarla (Mac = false, ShortNames = false).
  • Sunfish a Sunfish por WebDAV + DNS-SD; no hay protocolo propio.
  • En claro y sin TLS, a propósito; nunca se requiere administrador; nunca se ejecuta nada en el servidor.
  • Textos de usuario en español e inglés; claves del fichero de configuración en inglés.

Decisiones pendientes

Recogidas con la marca pendiente en cada documento. Las principales:

  • Permisos por usuario dentro de un share.
  • GUI y panel web: iniciar con Windows y lista de conexiones activas (diseñadas, no hechas).
  • Juego de caracteres de los formularios enviados por clientes antiguos (probar con clientes reales).
  • Firmas de User-Agent de cada perfil (se completan al probar).
  • Sección [MacTypes] para ampliar la tabla de tipos y creadores de Mac.
  • Convivencia del mDNS propio con el del sistema.
  • Regla del cortafuegos de Windows desde la GUI; servicio de Windows para sunfish-cli.
  • Bindings para las interfaces GTK y macOS.