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 услуга, интерфејсот за сокет-прокси на FTPSClient е одделна клиентска патека. CONNECT ја обезбедува рутата и сам не ги шифрира FTP податоците за најава или содржината на датотеките.
Држете ги грешките поврзани со фазата што ги создала: HTTP одбивање при поставување на тунелот, одбивање на FTP најава или неуспех при FTP/податочен пренос. Замената на FTP лозинката не може да реши прокси политика што ја одбива пасивната податочна порта.