Ruby Net::FTP tramite SOCKS: il login funziona, i download si bloccano
Segui le connessioni di controllo e dati di Ruby FTP lungo la stessa rotta proxy prevista.
Il login FTP usa una connessione di controllo. Poi un elenco di directory o un download richiede una connessione dati, che può fallire anche se il login tramite SOCKS è riuscito.
Stabilisci prima la modalità passiva o attiva. In modalità passiva il client apre una nuova connessione all'indirizzo e alla porta forniti dal server FTP. Anche quella connessione richiede la rotta proxy prevista.
Integrazione dei socket in Ruby
L'API Net::FTP di Ruby documenta il comportamento della connessione e della modalità passiva. Un'integrazione SOCKS deve coprire la creazione del socket usata sia dal percorso di controllo sia da quello dati; l'impostazione proxy di un client HTTP altrove non le configura.
Se l'integrazione modifica il comportamento del socket a livello globale, riesamina la sua portata rispetto ai thread. Un blocco attorno a un singolo trasferimento non può isolare gli altri thread dalle modifiche allo stato condiviso.
Un provider può offrire un endpoint statico, ma è una caratteristica del servizio, non un requisito generale di SOCKS. Dove connessioni separate possono usare uscite diverse, verifica come il server FTP associa la propria connessione dati alla connessione di controllo autenticata.
Annota la fase raggiunta, la modalità e l'endpoint dei dati, senza le credenziali. Questo distingue un percorso dati bloccato da un login proxy non riuscito.