Ruby Net::FTP über SOCKS: Anmeldung klappt, Downloads hängen
Verfolge die Steuer- und Datenverbindungen von Ruby FTP über denselben vorgesehenen Proxy-Pfad.
Die FTP-Anmeldung nutzt eine Steuerverbindung. Eine Verzeichnisauflistung oder ein Download braucht danach eine Datenverbindung, die fehlschlagen kann, obwohl die Anmeldung über SOCKS gelungen ist.
Zuerst den passiven oder aktiven Modus bestimmen. Im passiven Modus öffnet der Client eine neue Verbindung zur Adresse und zum Port, die der FTP-Server vorgibt. Auch diese Verbindung braucht den vorgesehenen Proxy-Pfad.
Ruby-Socket-Integration
Rubys Net::FTP-API dokumentiert das Verbindungs- und Passivmodusverhalten. Eine SOCKS-Integration muss die Socket-Erzeugung für Steuer- und Datenpfad abdecken; die Proxy-Einstellung eines HTTP-Clients an anderer Stelle konfiguriert sie nicht.
Ändert die Integration das Socket-Verhalten global, prüfe ihren Nebenläufigkeitsbereich. Ein Block um einen Transfer kann andere Threads nicht von Änderungen am gemeinsamen Zustand abschotten.
Ein Anbieter kann einen statischen Endpunkt anbieten, doch das ist ein Dienstmerkmal und keine allgemeine SOCKS-Anforderung. Wo getrennte Verbindungen verschiedene Ausgänge nutzen können, prüfe, wie der FTP-Server seine Datenverbindung der authentifizierten Steuerverbindung zuordnet.
Halte die erreichte Stufe, den Modus und den Datenendpunkt fest, ohne Zugangsdaten. Das unterscheidet einen blockierten Datenpfad von einem fehlgeschlagenen Proxy-Login.