Commons Net FTPHTTPClient: HTTP-Proxy-Tunnelen fir passive FTP
Tunnelt FTP-Kontroll an passiv Datenverbindungen duerch en HTTP-Proxy mam spezialiséierten Client vu Commons Net.
Apache Commons Net enthält FTPHTTPClient fir FTP duerch en HTTP CONNECT-Proxy. Seng nëtzlech Funktioun ass net nëmmen de FTP-Login-Port z'erreechen: et baut och Proxy-Tunnelen fir déi passiv Datenverbindungen op, déi Lëschten a Fichier-Transferten benotzen.
De Konstruktor akzeptéiert den Proxy-Endpunkt an optional Proxy-Authentifikatiounsinformatiounen. Den FTP-Server bleift d'Argument fir connect, an login kritt de FTP-Kont:
FTPHTTPClient ftp = new FTPHTTPClient(
"proxy.example.net", 8080, proxyUser, proxyPassword
);
try {
ftp.connect("ftp.example.net", 21);
if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
throw new IOException(ftp.getReplyString());
}
if (!ftp.login(ftpUser, ftpPassword)) {
throw new IOException(ftp.getReplyString());
}
ftp.enterLocalPassiveMode();
if (!ftp.setFileType(FTP.BINARY_FILE_TYPE)
|| !ftp.retrieveFile(remoteFile, output)) {
throw new IOException(ftp.getReplyString());
}
ftp.logout();
} finally {
if (ftp.isConnected()) {
ftp.disconnect();
}
}
Dëst Transfertfragment setzt d'FTP-Importer vu Commons Net, java.io.IOException, vun der Applikatioun geliwwert Authentifikatiounsvariabelen an en Ausgabestroum am Besëtz vum Uruffer viraus. remoteFile ass den ugedaachte Fichiersnumm op der Serversäit. D'Applikatioun muss och hiren Ausgabestroum zum richtegen Zäitpunkt zoumaachen.
Setzt de passive Modus no der Verbindung an virun enger Datenoperatioun. D'Implementatioun vum FTPHTTPClient refuséiert Datenverbindungen am aktive Modus. Am passive Modus verhandelt si den Daten-Endpunkt mam FTP an öffnet eng aner Verbindung zum HTTP-Proxy, an freet dann en CONNECT-Tunnel zu deem Endpunkt un.
Dee zweiten Tunnel erkläert eng heefeg Grenz: d'Proxy-Erlabnes fir de FTP-Kontrollport ass net genuch. Déi erlaabent Destinatiounen a Porten musse déi passiv Daten-Endpunkte vum Server enthalen. Eng erfollegräich Begréissung an Umeldung beweise just, datt de Kontrollwee funktionéiert huet.
D'Implementatioun liwwert Basic-Proxy-Authentifikatioun, wann souwuel de Proxy-Benotzernumm wéi och d'Passwuert virleien. Dat ass ënnerschiddlech vum FTP USER/PASS-Austausch. En Proxy, deen en aneren Authentifikatiounsmechanismus verlaangt, brauch en kompatibelen Connector; de Konstruktor mécht net all Schema verfügbar.
Commons Net dokumentéiert dës Klass als experimentell, dofir bewäert se vis-à-vis vun den Ufuerderunge vun der Applikatioun an dem Proxy, ier Dir se iwwerhëlt. Et ass en FTP-Client, keen FTPS- oder SFTP-Client. Fir FTPS mat engem verfügbare SOCKS-Service ass dem FTPSClient seng Socket-Proxy-Schnittstell e separate Clientwee. CONNECT liwwert de Wee an verschlësselt net selwer FTP-Authentifikatiounsinformatiounen oder Fichiersinhalter.
Halt Feeler un där Etapp befestegt, déi se produzéiert huet: eng HTTP-Oflehnung beim Opbau vum Tunnel, eng verwënnert FTP-Umeldung oder en FTP-/Datentransfertfehler. D'FTP-Passwuert ze ersetzen kann eng Proxy-Politik, déi de passive Datenport refuséiert, net léisen.