Newer
Older
Sunfish / DOC / FTP-Y-WEBDAV.md
@Ivan Dominguez Ivan Dominguez 1 day ago 4 KB Pre 3.0 (definitions)

FTP y WebDAV

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).

FTP

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.

Conexión

  • Puerto de control: 2121 por defecto (el 21 requiere privilegios en Linux/macOS), configurable.
  • Modo pasivo (PASV, EPSV): rango de puertos configurable (FtpPassivePorts). Se anuncia la IP local de la conexión de control; FtpPublicAddress opcional para equipos tras NAT.
  • Modo activo (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.
  • IPv4 e IPv6 (EPSV/EPRT).
  • Sin cifrado (ni FTPS): en claro, como la web.

Autenticación

  • Usuario anonymous (o ftp), con cualquier contraseña: ve los shares públicos.
  • Usuario y contraseña de [User …]: ve además los shares cuyo Users lo incluye.
  • Contraseñas fallidas: retardo creciente y límite de intentos por IP.

Comandos

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.
  • Los permisos del share se aplican igual que en la web: STOR sobre un fichero existente necesita Overwrite, DELE necesita Delete, etc. Las subidas también van a un temporal y se renombran al terminar.
  • Los directorios virtuales de las locations aparecen en LIST como carpetas.

Juego de caracteres de los nombres

  • Si el cliente activa OPTS UTF8 ON (o usa MLSD), UTF-8.
  • Si no, el juego configurado en FtpCharset: iso-8859-1 (por defecto), macroman, cp437, cp850 o windows-1252. Pendiente: elegirlo por cliente; por ahora es global.

Mac clásico por FTP

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.

WebDAV

Sobre el mismo puerto HTTP, activable por share (WebDav = true), para montar los shares como una carpeta desde sistemas modernos (y algunos antiguos).

Alcance

  • Clase 1: 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.
  • Propiedades: displayname, resourcetype, getcontentlength, getcontenttype, getlastmodified, creationdate, getetag.
  • Cabeceras: DAV: 1, 2 y MS-Author-Via: DAV (la piden las "Carpetas web" de Windows 98/2000).
  • XML: se lee con XmlReader con DtdProcessing.Prohibit (sin entidades externas).
  • Permisos: los mismos del share; Listing controla PROPFIND de profundidad 1.

Clientes y limitaciones conocidas

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