Commons Net FTPHTTPClient: HTTP-proxy-tunnels foar passive FTP
Tunnel FTP-kontrôle en passive dataferbiningen troch in HTTP-proxy mei de tawijde klant fan Commons Net.
Apache Commons Net befettet FTPHTTPClient foar FTP troch in HTTP CONNECT-proxy. It nuttige skaaimerk is net allinnich it berikken fan 'e FTP-oanmeldpoarte: it leit ek proxy-tunnels oan foar de passive dataferbiningen dy't listingen en bestânsoerdrachten brûke.
De konstruktor akseptearret it proxy-einpunt en opsjonele proxy-oanmeldgegevens. De FTP-tsjinner bliuwt it argumint foar connect, en login ûntfangt it FTP-account:
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();
}
}
Dit oerdrachtsfragmint ferûnderstelt de FTP-ymporten fan Commons Net, java.io.IOException, troch de applikaasje levere oanmeldgegevens en in útfierstream dy't de oanropper besit. remoteFile is de bedoelde bestânsnamme oan 'e tsjinnerkant. De applikaasje moat ek syn útfierstream op it juste stuit slute.
Set de passive modus nei it ferbinen en foar in dataoperaasje. De ymplemintaasje fan FTPHTTPClient wegeret dataferbiningen yn aktive modus. Yn passive modus ûnderhannelet it it data-einpunt mei FTP en iepent in oare ferbining nei de HTTP-proxy, en freget dan in CONNECT-tunnel nei dat einpunt.
Dy twadde tunnel ferklearret in gewoane grins: proxy-tastimming foar de FTP-kontrôlepoarte is net genôch. De tastiene bestimmingen en poarten moatte de passive data-einpunten fan 'e tsjinner omfetsje. In slagge groetnis en oanmelding bewize allinnich dat de kontrôlerûte wurke hat.
De ymplemintaasje leveret Basic-proxy-ferifikaasje as sawol de proxy-brûkersnamme as it wachtwurd oanwêzich binne. Dat ferskilt fan 'e FTP USER/PASS-útwikseling. In proxy dy't in oar ferifikaasjemeganisme freget, hat in kompatibele ferbiner nedich; de konstruktor makket net elk skema beskikber.
Commons Net dokumintearret dizze klasse as eksperiminteel, dus beoardielje it tsjin de easken fan 'e applikaasje en de proxy foardat jo it oannimme. It is in FTP-klant, gjin FTPS- of SFTP-klant. Foar FTPS mei in beskikbere SOCKS-tsjinst is de socket-proxy-ynterface fan FTPSClient in aparte klantrûte. CONNECT leveret de rûte en fersiferet sels gjin FTP-oanmeldgegevens of bestânssinhâld.
Hâld flaters ferbûn oan 'e stap dy't se makke hat: in HTTP-ôfwizing by it opsetten fan 'e tunnel, in FTP-oanmeldwegering of in FTP-/dataoerdrachsflater. It ferfangen fan it FTP-wachtwurd kin in proxybelied dat de passive datapoarte wegeret, net oplosse.