El inicio de sesión FTP usa una conexión de control. Después, un listado de directorio o una descarga necesita una conexión de datos, que puede fallar aunque el inicio de sesión por SOCKS haya funcionado.

Identifica primero el modo pasivo o activo. En modo pasivo, el cliente abre una conexión nueva a la dirección y el puerto que indica el servidor FTP. Esa conexión también necesita la ruta de proxy prevista.

Integración de sockets en Ruby

La API Net::FTP de Ruby documenta su comportamiento de conexión y de modo pasivo. Una integración SOCKS debe cubrir la creación del socket que usan tanto la ruta de control como la de datos; la configuración de proxy de un cliente HTTP en otro lugar no las configura.

Si la integración cambia el comportamiento del socket de forma global, revisa su alcance de concurrencia. Un bloque alrededor de una transferencia no puede aislar otros hilos de los cambios en el estado compartido.

Un proveedor puede ofrecer un extremo estático, pero eso es una característica del servicio, no un requisito general de SOCKS. Cuando conexiones separadas pueden usar salidas distintas, comprueba cómo el servidor FTP asocia su conexión de datos con la conexión de control autenticada.

Anota la etapa alcanzada, el modo y el extremo de datos, sin credenciales. Eso distingue una ruta de datos bloqueada de un fallo de inicio de sesión en el proxy.

Artículos relacionados