Logowanie FTP korzysta z połączenia sterującego. Później lista katalogu lub pobieranie wymaga połączenia danych, które może zawieść mimo udanego logowania przez SOCKS.

Najpierw ustal tryb pasywny lub aktywny. W trybie pasywnym klient otwiera nowe połączenie na adres i port podane przez serwer FTP. To połączenie również wymaga zamierzonej trasy proxy.

Integracja gniazd w Ruby

Net::FTP API w Ruby dokumentuje zachowanie połączenia i trybu pasywnego. Integracja SOCKS musi obejmować tworzenie gniazda używanego zarówno przez ścieżkę sterującą, jak i danych; ustawienie proxy klienta HTTP w innym miejscu ich nie konfiguruje.

Jeśli integracja zmienia zachowanie gniazd globalnie, przejrzyj jej zakres pod kątem wątków. Blok wokół jednego transferu nie może odizolować innych wątków od zmian współdzielonego stanu.

Dostawca może oferować statyczny punkt końcowy, ale to cecha usługi, a nie ogólny wymóg SOCKS. Tam, gdzie osobne połączenia mogą korzystać z różnych wyjść, sprawdź, jak serwer FTP wiąże swoje połączenie danych z uwierzytelnionym połączeniem sterującym.

Zapisz osiągnięty etap, tryb i punkt końcowy danych, usuwając dane logowania. To odróżnia zablokowaną ścieżkę danych od nieudanego logowania do proxy.

Powiązane artykuły