Newer
Older
Sunfish / DOC / README.md
@Ivan Dominguez Ivan Dominguez 1 day ago 3 KB Pre 3.0 (definitions)

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, opcionalmente, WebDAV. Su uso principal es mover ficheros entre equipos modernos y máquinas muy antiguas (Windows 95, 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
MAC-CLASICO.md MacBinary, BinHex y AppleDouble 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.
  • 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:

  • Variante por defecto de Sunfish.exe (autocontenida o dependiente del framework): medir tamaños.
  • build.ps1 sin herramientas de C++: ¿fallar o compilar solo la GUI?
  • Permisos por usuario dentro de un share.
  • Juego de caracteres de FTP y de formularios por cliente (en vez de global).
  • Entradas virtuales .bin en FTP; conservar los .bin/.hqx originales al subir.
  • Regla del cortafuegos de Windows desde la GUI; servicio de Windows para sunfish-cli.
  • Bindings para las interfaces GTK y macOS.