Sunfish / DOC /
@Ivan Dominguez Ivan Dominguez authored 21 hours ago
..
APLICACIONES.md 3.0 21 hours ago
ARQUITECTURA.md 3.0 21 hours ago
CLIENTES.md 3.0 21 hours ago
COMPILACION-Y-PRUEBAS.md 3.0 21 hours ago
FTP-Y-WEBDAV.md 3.0 21 hours ago
LEGACY-2.0.md Pre 3.0 (definitions) 1 day ago
MAC-CLASICO.md 3.0 21 hours ago
README.md 3.0 21 hours ago
SEGURIDAD.md 3.0 21 hours ago
SHARES-Y-RUTAS.md 3.0 21 hours ago
WEB.md 3.0 21 hours ago
editor.png Pre 3.0 (definitions) 1 day ago
main.png Pre 3.0 (definitions) 1 day ago
README.md

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.