# Sunfish

Servidor web y de ficheros ligero y portable. Comparte cualquier carpeta del ordenador por
**web**, **FTP** y **WebDAV** a la vez, sin instalación y sin permisos de administrador.

Está pensado sobre todo para **mover ficheros entre equipos actuales y máquinas antiguas**: su
navegador de directorios funciona en navegadores de los 90 (Windows 95, Mac clásico), y entiende
los formatos MacBinary y BinHex para no perder los *resource forks* de los ficheros de Mac.
También sirve páginas web estáticas: si una carpeta tiene `index.html`, se muestra la página; si
no, su contenido.

> **Estado:** la versión 3 está en diseño (ver [DOC/](DOC/README.md)). El código que hay ahora
> en el repositorio es el de la 2.0, para Windows y .NET Framework.

## Qué hará la versión 3

- **Shares:** carpetas publicadas en una ruta (`/`, `/fotos`…). Cuando una ruta es más
  específica que otra, tiene prioridad.
- **Permisos por share:** listado, subir, sobrescribir, renombrar, borrar, descargar como ZIP. Por
  defecto, solo lectura.
- **Usuarios con contraseña** opcionales por share.
- **Web clásica** sin JavaScript para navegadores antiguos y **web moderna** con arrastrar y
  soltar.
- **FTP** con modo activo y pasivo, y juegos de caracteres antiguos (ISO-8859-1, MacRoman, CP437…).
- **WebDAV** para montar los shares desde el Explorador, Finder o los gestores de ficheros de
  Linux.
- **Panel de administración web** con contraseña (desactivado por defecto).
- **Dos programas:**
  - `Sunfish.exe`, con ventana, para Windows;
  - `sunfish-cli`, con interfaz en la terminal, para Windows, Linux y macOS.

  Arrastra una carpeta sobre cualquiera de los dos y queda compartida al momento.

> **Importante:** todo viaja **sin cifrar**, contraseñas incluidas. Úsalo solo en redes de
> confianza.

## Compilar desde fuentes

> Disponible cuando exista el código de la versión 3.

Se compila en tu máquina con un solo comando. El script comprueba que tienes lo necesario
(**no instala nada**; si falta algo, te dice qué y cómo instalarlo), descarga la última versión,
compila y deja los ejecutables en la raíz del proyecto:

- **Windows:** `Sunfish.exe` (con ventana) y `sunfish-cli.exe` (terminal).
- **Linux y macOS:** `sunfish-cli`. Es nativo y no necesita .NET para ejecutarse.

Necesitas git y el SDK de .NET 10. Para `sunfish-cli` también un compilador nativo:

- Windows: Visual Studio Build Tools con «Desarrollo para escritorio con C++»;
- Linux: `clang`, `zlib` y un enlazador;
- macOS: Xcode Command Line Tools.

```powershell
irm https://raw.githubusercontent.com/XWolfOverride/Sunfish/main/build.ps1 | iex                # Windows
```
```bash
curl -fsSL https://raw.githubusercontent.com/XWolfOverride/Sunfish/main/build.sh | bash         # Linux y macOS
```

Crea la carpeta `Sunfish/` en el directorio actual. **Para actualizar a una nueva versión, vuelve
a ejecutar el mismo comando** (o `./build.sh` / `.\build.ps1` dentro de la carpeta). Para
compilar un fork, define antes `SUNFISH_REPO_URL`.

`Sunfish.exe` se abre con doble clic desde donde esté. Para usar `sunfish-cli` desde cualquier
terminal, instálalo en tu `PATH`:

```powershell
# Windows (PowerShell, sin administrador); después reabre la terminal
mkdir $HOME\bin -Force; copy sunfish-cli.exe $HOME\bin
$p = [Environment]::GetEnvironmentVariable("Path","User"); [Environment]::SetEnvironmentVariable("Path","$p;$HOME\bin","User")
```
```bash
# Linux / macOS, solo para tu usuario
mkdir -p ~/.local/bin && install -m 755 sunfish-cli ~/.local/bin/
# para todos los usuarios
sudo install -m 755 sunfish-cli /usr/local/bin/
```

> Ejecutar un script descargado requiere confiar en él: léelo antes o descárgalo y ejecútalo tú.

## Documentación técnica

Para desarrolladores y agentes de IA: [DOC/README.md](DOC/README.md).

## Licencia

MIT. Copyright (c) 2007-2026 XWolfOverride.
