Ruby Net::FTP via SOCKS: inloggen werkt, downloads blijven hangen
Volg de controle- en dataverbindingen van Ruby FTP via dezelfde bedoelde proxyroute.
FTP-inloggen gebruikt een controleverbinding. Een mapweergave of download heeft daarna een dataverbinding nodig, die kan mislukken ook al is het inloggen via SOCKS gelukt.
Bepaal eerst de passieve of actieve modus. In passieve modus opent de client een nieuwe verbinding naar het adres en de poort die de FTP-server opgeeft. Die verbinding heeft ook de bedoelde proxyroute nodig.
Ruby-socketintegratie
De Net::FTP-API van Ruby documenteert het verbindings- en passiefmodusgedrag. Een SOCKS-integratie moet het aanmaken van sockets dekken dat zowel het controle- als het datapad gebruikt; de proxyinstelling van een HTTP-client elders configureert die niet.
Als de integratie socketgedrag globaal verandert, beoordeel dan de reikwijdte ervan voor threads. Een blok rond één overdracht kan andere threads niet isoleren van wijzigingen in gedeelde staat.
Een provider kan een statisch eindpunt aanbieden, maar dat is een dienstkenmerk en geen algemene SOCKS-eis. Waar afzonderlijke verbindingen verschillende uitgangen kunnen gebruiken, controleer hoe de FTP-server zijn dataverbinding aan de geauthenticeerde controleverbinding koppelt.
Noteer de bereikte fase, modus en het data-eindpunt, zonder inloggegevens. Dat onderscheidt een geblokkeerd datapad van een mislukte proxy-inlog.