La connexion FTP utilise une connexion de contrôle. Ensuite, un listage de répertoire ou un téléchargement a besoin d'une connexion de données, qui peut échouer même si la connexion via SOCKS a réussi.

Identifiez d'abord le mode passif ou actif. En mode passif, le client ouvre une nouvelle connexion vers l'adresse et le port fournis par le serveur FTP. Cette connexion a elle aussi besoin de la route proxy prévue.

Intégration des sockets dans Ruby

L'API Net::FTP de Ruby documente son comportement de connexion et de mode passif. Une intégration SOCKS doit couvrir la création de socket utilisée à la fois par le chemin de contrôle et par celui des données ; le réglage proxy d'un client HTTP ailleurs ne les configure pas.

Si l'intégration modifie le comportement des sockets globalement, revoyez sa portée vis-à-vis des threads. Un bloc autour d'un seul transfert ne peut pas isoler les autres threads des changements d'état partagé.

Un fournisseur peut proposer un point de terminaison statique, mais c'est une caractéristique du service et non une exigence générale de SOCKS. Là où des connexions distinctes peuvent utiliser des sorties différentes, vérifiez comment le serveur FTP associe sa connexion de données à la connexion de contrôle authentifiée.

Notez l'étape atteinte, le mode et le point de terminaison des données, sans les identifiants. Cela distingue un chemin de données bloqué d'un échec de connexion au proxy.

Articles similaires