Commons Net FTPHTTPClient: निष्क्रिय FTP के लिए HTTP प्रॉक्सी सुरंगें
Commons Net के समर्पित क्लाइंट के साथ HTTP प्रॉक्सी से FTP नियंत्रण और निष्क्रिय डेटा कनेक्शन को सुरंगित करें।
Apache Commons Net में HTTP CONNECT प्रॉक्सी से FTP के लिए FTPHTTPClient शामिल है। इसकी उपयोगी विशेषता केवल 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();
}
}
यह स्थानांतरण अंश Commons Net के FTP इम्पोर्ट, java.io.IOException, एप्लिकेशन द्वारा दिए गए क्रेडेंशियल चर और कॉलर के स्वामित्व वाली आउटपुट स्ट्रीम मानता है। remoteFile सर्वर-पक्ष का इच्छित फ़ाइलनाम है। एप्लिकेशन को उचित समय पर अपनी आउटपुट स्ट्रीम भी बंद करनी होगी।
कनेक्ट करने के बाद और डेटा ऑपरेशन से पहले निष्क्रिय मोड सेट करें। FTPHTTPClient का कार्यान्वयन सक्रिय मोड में डेटा कनेक्शन अस्वीकार करता है। निष्क्रिय मोड में यह FTP के साथ डेटा एंडपॉइंट पर बातचीत करता है और HTTP प्रॉक्सी से एक और कनेक्शन खोलता है, फिर उस एंडपॉइंट तक CONNECT सुरंग का अनुरोध करता है।
वह दूसरी सुरंग एक सामान्य सीमा समझाती है: FTP नियंत्रण पोर्ट के लिए प्रॉक्सी अनुमति पर्याप्त नहीं है। अनुमत गंतव्यों और पोर्टों में सर्वर के निष्क्रिय डेटा एंडपॉइंट शामिल होने चाहिए। सफल अभिवादन और लॉगिन केवल यह सिद्ध करते हैं कि नियंत्रण मार्ग ने काम किया।
जब प्रॉक्सी उपयोगकर्ता नाम और पासवर्ड दोनों मौजूद हों, तो कार्यान्वयन Basic प्रॉक्सी प्रमाणीकरण प्रदान करता है। यह FTP USER/PASS अदला-बदली से भिन्न है। दूसरी प्रमाणीकरण विधि चाहने वाले प्रॉक्सी को संगत कनेक्टर चाहिए; कंस्ट्रक्टर हर स्कीम उपलब्ध नहीं कराता।
Commons Net इस क्लास को प्रयोगात्मक के रूप में प्रलेखित करता है, इसलिए अपनाने से पहले इसे एप्लिकेशन और प्रॉक्सी की आवश्यकताओं के विरुद्ध आँकें। यह FTP क्लाइंट है, FTPS या SFTP क्लाइंट नहीं। उपलब्ध SOCKS सेवा वाले FTPS के लिए FTPSClient का सॉकेट-प्रॉक्सी इंटरफ़ेस एक अलग क्लाइंट मार्ग है। CONNECT मार्ग देता है और स्वयं FTP क्रेडेंशियल या फ़ाइल सामग्री को एन्क्रिप्ट नहीं करता।
त्रुटियों को उसी चरण से जोड़े रखें जिसने उन्हें उत्पन्न किया: सुरंग सेटअप के दौरान HTTP अस्वीकृति, FTP लॉगिन का इनकार, या FTP/डेटा स्थानांतरण विफलता। FTP पासवर्ड बदलने से ऐसी प्रॉक्सी नीति हल नहीं हो सकती जो निष्क्रिय डेटा पोर्ट अस्वीकार करती है।