Commons Net FTPHTTPClient: HTTP прокси тунели за пасиван FTP
Тунелирајте FTP контролу и пасивне податковне везе кроз HTTP прокси уз наменски клијент Commons Net-а.
Apache Commons Net садржи FTPHTTPClient за FTP кроз HTTP CONNECT прокси. Његова корисна особина није само достизање FTP порта за пријаву: успоставља и прокси тунеле за пасивне податковне везе које користе листе и преноси датотека.
Конструктор прихвата крајњу тачку проксија и опционе акредитиве проксија. FTP сервер остаје аргумент за connect, а login прима FTP налог:
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();
}
}
Овај исечак преноса претпоставља FTP увозе Commons Net-а, java.io.IOException, променљиве акредитива које даје апликација и излазни ток у власништву позиваоца. remoteFile је предвиђено име датотеке на страни сервера. Апликација такође мора да затвори свој излазни ток у одговарајућем тренутку.
Поставите пасивни режим након повезивања и пре податковне операције. Имплементација FTPHTTPClient-а одбија податковне везе у активном режиму. У пасивном режиму преговара о крајњој тачки података са FTP-ом и отвара још једну везу према HTTP проксију, а затим тражи CONNECT тунел до те крајње тачке.
Тај други тунел објашњава честу границу: дозвола проксија за FTP контролни порт није довољна. Дозвољене дестинације и портови морају да укључе пасивне податковне крајње тачке сервера. Успешан поздрав и пријава доказују само да је контролна рута радила.
Имплементација пружа Basic прокси аутентификацију када су присутни и прокси корисничко име и лозинка. То се разликује од FTP USER/PASS размене. Прокси који захтева други механизам аутентификације треба компатибилан конектор; конструктор не чини сваку шему доступном.
Commons Net документује ову класу као експерименталну, па је процените према захтевима апликације и проксија пре усвајања. То је FTP клијент, а не FTPS или SFTP клијент. За FTPS са доступном SOCKS услугом socket-proxy интерфејс FTPSClient-а је одвојена клијентска путања. CONNECT пружа руту и сам не шифрује FTP акредитиве ни садржај датотека.
Држите грешке везане за фазу која их је произвела: HTTP одбијање током подешавања тунела, одбијање FTP пријаве или неуспех FTP/податковног преноса. Замена FTP лозинке не може да реши прокси политику која одбија пасивни податковни порт.