Diseño previsto; aún no implementado. Ambos sirven el mismo árbol de shares que la web, con las mismas locations, permisos y usuarios (SHARES-Y-RUTAS.md).
Para los clientes con los que la web se queda corta: en Mac clásico los clientes FTP gráficos eran la forma habitual de mover ficheros, y Windows 95 trae ftp.exe.
PASV, EPSV): rango de puertos configurable (FtpPassivePorts). Se anuncia la IP local de la conexión de control; FtpPublicAddress opcional para equipos tras NAT.PORT, EPRT): lo usan por defecto clientes antiguos como ftp.exe. El servidor solo conecta a la misma IP que abrió el control (contra el "FTP bounce") y nunca a puertos por debajo de 1024. El puerto de origen no es el 20 (no requiere privilegios); los clientes lo aceptan.EPSV/EPRT).anonymous (o ftp), con cualquier contraseña: ve los shares públicos.[User …]: ve además los shares cuyo Users lo incluye.| Grupo | Comandos |
|---|---|
| Sesión | USER PASS QUIT NOOP SYST (UNIX Type: L8) FEAT OPTS UTF8 HELP STAT |
| Navegación | PWD CWD CDUP |
| Listados | LIST (formato ls -l, el que entienden los clientes antiguos) NLST MLSD MLST |
| Transferencia | TYPE (A/I) MODE S STRU F RETR STOR APPE REST (reanudar) ABOR |
| Información | SIZE MDTM |
| Cambios | MKD RMD DELE RNFR/RNTO |
TYPE A convierte los saltos de línea a CRLF al enviar; TYPE I (binario) es el habitual.STOR sobre un fichero existente necesita Overwrite, DELE necesita Delete, etc. Las subidas también van a un temporal y se renombran al terminar.LIST como carpetas.OPTS UTF8 ON (o usa MLSD), UTF-8.FtpCharset: iso-8859-1 (por defecto), macroman, cp437, cp850 o windows-1252. Pendiente: elegirlo por cliente; por ahora es global.Con Mac = true en el share, un STOR de un fichero .bin con cabecera MacBinary II/III válida (CRC correcto) se decodifica igual que en la web. Ver MAC-CLASICO.md. Pendiente: ofrecer al listar entradas virtuales .bin para descargar con resource fork.
Sobre el mismo puerto HTTP, activable por share (WebDav = true), para montar los shares como una carpeta desde sistemas modernos (y algunos antiguos).
OPTIONS, PROPFIND (profundidad 0 y 1; infinity se rechaza), PROPPATCH (se acepta y se ignora lo que no se aplica), MKCOL, GET, PUT, DELETE, COPY y MOVE dentro del mismo share.LOCK/UNLOCK simulados (se anuncia clase 2): Finder de macOS y el redirector de Windows los exigen para escribir. Se devuelven tokens válidos, pero no impiden accesos de otros clientes.displayname, resourcetype, getcontentlength, getcontenttype, getlastmodified, creationdate, getetag.DAV: 1, 2 y MS-Author-Via: DAV (la piden las "Carpetas web" de Windows 98/2000).XmlReader con DtdProcessing.Prohibit (sin entidades externas).Listing controla PROPFIND de profundidad 1.| Cliente | Notas |
|---|---|
| Explorador de Windows 10/11 (WebClient) | Por defecto no envía Basic sin HTTPS: solo funcionan los shares públicos, salvo cambiando BasicAuthLevel en el registro. Límite de fichero de ~50 MB por defecto (FileSizeLimitInBytes) |
| Finder de macOS | Necesita LOCK; crea ficheros ._* y .DS_Store (con Mac = true se tratan como AppleDouble) |
| GVfs / gestores de Linux | dav://host:puerto/location |
| Carpetas web de Windows 98/2000 | A probar |
| Clientes WebDAV de Mac OS 9 | A probar |