Commons Net FTPHTTPClient፦ ለpassive FTP የHTTP proxy ቱነሎች
የFTP መቆጣጠሪያንና የpassive data ግንኙነቶችን በCommons Net ልዩ ደንበኛ በኩል በHTTP proxy ያስተላልፉ።
Apache Commons Net በHTTP CONNECT proxy በኩል FTP ለማድረግ FTPHTTPClient ያካትታል። ጠቃሚው ባህሪው የFTP መግቢያ ወደብ ላይ መድረስ ብቻ አይደለም፦ ለዝርዝር ማሳያዎችና ለፋይል ሽግግሮች የሚያገለግሉ የpassive data ግንኙነቶችንም በproxy ቱነል ያዘጋጃል።
ኮንስትራክተሩ የproxy አድራሻንና አማራጭ የproxy መለያዎችን ይቀበላል። የ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();
}
}
ይህ የሽግግር ቁራጭ የCommons Net FTP imports፣ java.io.IOException፣ በመተግበሪያው የቀረቡ የመለያ ተለዋዋጮችንና በጠሪው የተያዘ output stream እንደሚኖር ያስባል። remoteFile የታሰበው በሰርቨር በኩል ያለ ፋይል ስም ነው። መተግበሪያው የራሱን output stream በተገቢው ቦታ መዝጋትም አለበት።
passive ሁነታን ከመገናኘት በኋላና ከdata ስራ በፊት ያዘጋጁ። የFTPHTTPClient አተገባበር በactive ሁነታ የdata ግንኙነቶችን ውድቅ ያደርጋል። በpassive ሁነታ ከFTP ጋር የdata መጨረሻ ነጥቡን ይደራደራል፣ ከዚያ ሌላ ግንኙነት ወደ HTTP proxy ከፍቶ ወደዚያ ነጥብ የCONNECT ቱነል ይጠይቃል።
ይህ ሁለተኛ ቱነል አንድ የተለመደ ገደብ ያብራራል፦ ለFTP መቆጣጠሪያ ወደብ የተሰጠ የproxy ፈቃድ ብቻ በቂ አይደለም። የተፈቀዱት መዳረሻዎችና ወደቦች የሰርቨሩን የpassive data መጨረሻ ነጥቦች ማካተት አለባቸው። የተሳካ ሰላምታና መግቢያ የሚያሳየው የመቆጣጠሪያው መንገድ እንደሰራ ብቻ ነው።
አተገባበሩ ሁለቱም የproxy ተጠቃሚ ስምና የይለፍ ቃል ሲኖሩ የBasic proxy ማረጋገጫ ያቀርባል። ይህ ከFTP USER/PASS ልውውጥ የተለየ ነው። ሌላ የማረጋገጫ ዘዴ የሚፈልግ proxy ተስማሚ connector ይፈልጋል፤ ኮንስትራክተሩ ሁሉንም ዘዴዎች አያቀርብም።
Commons Net ይህን ክፍል እንደ ሙከራ ደረጃ ያስቀምጠዋል፣ ስለዚህ ከመቀበልዎ በፊት ከመተግበሪያውና ከproxy መስፈርቶች ጋር ያመዛዝኑት። እሱ የFTP ደንበኛ ነው፣ የFTPS ወይም የSFTP ደንበኛ አይደለም። SOCKS አገልግሎት ሲገኝ ለFTPS የFTPSClient ሶኬት-proxy በይነገጽ የተለየ የደንበኛ መንገድ ነው። CONNECT መንገዱን ይሰጣል እንጂ የFTP መለያዎችን ወይም የፋይል ይዘቶችን ራሱ አያመሰጥርም።
ስህተቶችን ከፈጠራቸው ደረጃ ጋር አያያዙ፦ በቱነል ዝግጅት ወቅት የHTTP ውድቅ፣ የFTP መግቢያ እምቢታ፣ ወይም የFTP/data ሽግግር ውድቀት። የFTP ይለፍ ቃልን መቀየር የpassive data ወደብን የሚከለክል የproxy ፖሊሲን ማስተካከል አይችልም።