Commons Net FTPHTTPClient: passiv FTP uchun HTTP proksi tunnellari
FTP boshqaruvi va passiv ma'lumot ulanishlarini Commons Net'ning maxsus mijozi bilan HTTP proksi orqali tunnel qiling.
Apache Commons Net tarkibida HTTP CONNECT proksisi orqali FTP uchun FTPHTTPClient mavjud. Uning foydali xususiyati faqat FTP kirish portiga yetib borish emas: u ro'yxatlar va fayl uzatishda ishlatiladigan passiv ma'lumot ulanishlari uchun ham proksi tunnellarini o'rnatadi.
Konstruktor proksi oxirgi nuqtasini va ixtiyoriy proksi hisob ma'lumotlarini qabul qiladi. FTP serveri connect uchun argument bo'lib qoladi, login esa FTP hisobini oladi:
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();
}
}
Bu uzatish bo'lagi Commons Net'ning FTP importlarini, java.io.IOException, ilova taqdim etgan hisob ma'lumotlari o'zgaruvchilarini va chaqiruvchiga tegishli chiqish oqimini nazarda tutadi. remoteFile server tomonidagi mo'ljallangan fayl nomi. Ilova ham o'z chiqish oqimini tegishli paytda yopishi kerak.
Passiv rejimni ulangandan keyin va ma'lumot operatsiyasidan oldin o'rnating. FTPHTTPClient amalga oshirilishi faol rejimda ma'lumot ulanishlarini rad etadi. Passiv rejimda u FTP bilan ma'lumot oxirgi nuqtasini kelishadi va HTTP proksisiga yana bir ulanish ochadi, so'ngra shu nuqtaga CONNECT tunnelini so'raydi.
O'sha ikkinchi tunnel keng tarqalgan chegarani tushuntiradi: FTP boshqaruv porti uchun proksi ruxsati yetarli emas. Ruxsat etilgan manzillar va portlar serverning passiv ma'lumot oxirgi nuqtalarini o'z ichiga olishi kerak. Muvaffaqiyatli salom va kirish faqat boshqaruv yo'li ishlaganini isbotlaydi.
Amalga oshirish proksi foydalanuvchi nomi va paroli ikkalasi ham mavjud bo'lganda Basic proksi autentifikatsiyasini taqdim etadi. Bu FTP USER/PASS almashinuvidan farq qiladi. Boshqa autentifikatsiya mexanizmini talab qiladigan proksi mos keladigan ulagichga muhtoj; konstruktor har bir sxemani mavjud qilmaydi.
Commons Net bu sinfni eksperimental deb hujjatlashtiradi, shuning uchun qabul qilishdan oldin uni ilova va proksi talablariga qarab baholang. Bu FTP mijozi, FTPS yoki SFTP mijozi emas. Mavjud SOCKS xizmati bilan FTPS uchun FTPSClient'ning soket-proksi interfeysi alohida mijoz yo'lidir. CONNECT yo'lni taqdim etadi va o'zi FTP hisob ma'lumotlarini yoki fayl mazmunini shifrlamaydi.
Xatolarni ularni keltirib chiqargan bosqichga bog'lab saqlang: tunnelni sozlash paytida HTTP rad etishi, FTP kirishidan bosh tortish yoki FTP/ma'lumot uzatishning muvaffaqiyatsizligi. FTP parolini almashtirish passiv ma'lumot portini rad etadigan proksi siyosatini hal qila olmaydi.