Newer
Older
Sunfish / AGENTS.md
@Ivan Dominguez Ivan Dominguez 1 day ago 2 KB Pre 3.0 (definitions)

Sunfish — AGENTS.md

Servidor web y de ficheros ligero y portable. Publica carpetas a la vez por web (HTML4 apto para navegadores de los 90), FTP y WebDAV, para mover ficheros entre equipos modernos y máquinas muy antiguas en redes de confianza. La versión 3 es una reescritura completa de la 2.0.

Decisiones tomadas

  • C# / .NET 10. Toda la lógica en src/Sunfish.Core (compatible con AOT); aplicaciones finas encima. Ver DOC/ARQUITECTURA.md.
  • Dos ejecutables:
    • Sunfish.exe (WinForms, Windows): un solo .exe (PublishSingleFile), porque WinForms no admite AOT.
    • sunfish-cli (TUI/consola, Windows/Linux/macOS): Native AOT.
    • Más adelante, interfaces GTK y macOS sobre el mismo Core.
  • Motor HTTP propio sobre Socket (ni HttpListener ni Kestrel): sin administrador, tolerante con clientes antiguos, permite AOT.
    • En este proyecto se publica con AOT aunque sea un servidor web: la excepción general para servidores web no aplica porque no se usa ASP.NET.
  • Un share = carpeta + location, servida a la vez por web, FTP y WebDAV.
    • Gana la location más específica (por segmentos, como las locations de prefijo de nginx).
    • Si hay índice se sirve; si no, navegador de directorios. Ver DOC/SHARES-Y-RUTAS.md.
  • Web en modo clásico (HTML 3.2/4.01, sin JS, ISO-8859-1 con entidades, GIF) y modo moderno como mejora progresiva. Subidas por formulario multipart. Ver DOC/WEB.md.
  • FTP activo/pasivo con juegos de caracteres antiguos; WebDAV clase 1 + LOCK simulado. Ver DOC/FTP-Y-WEBDAV.md.
  • Mac clásico: MacBinary/BinHex al subir y bajar, forks guardados como AppleDouble (._). Ver DOC/MAC-CLASICO.md.
  • Panel de administración web con contraseña, desactivado por defecto.
  • Sin TLS a propósito. Se eliminan la ejecución en el servidor, compartir pantalla, los plugins y el requisito de administrador. Ver DOC/SEGURIDAD.md y DOC/LEGACY-2.0.md.
  • Configuración en INI (sunfish.conf, claves en inglés), con importación de la 2.0. Textos en español e inglés (SUNFISH_LANG).

Estado

  • Solo documentación de la 3. El código de Sunfish/ y Sunfish Test Plugin/ es la 2.0 (.NET Framework 4.5): no se porta y se eliminará al empezar la reescritura.
  • Remoto actual privado, rama master. El README ya apunta a GitHub (rama main) para cuando se publique allí.
  • Decisiones pendientes listadas en DOC/README.md.

Compilar

Previsto: dotnet build, dotnet test, dotnet run --project src/Sunfish.WinForms o src/Sunfish.Cli. build.ps1 compila los dos ejecutables en Windows; build.sh, sunfish-cli en Linux/macOS. Ver DOC/COMPILACION-Y-PRUEBAS.md.