जब SOCKS मध्यस्थ उपलब्ध हो, तो Commons Net का FTPSClient विरासत में मिला सॉकेट-प्रॉक्सी इंटरफ़ेस उपयोग कर सकता है। FTPS सर्वर को ही कनेक्शन का गंतव्य रखें:

var client = new org.apache.commons.net.ftp.FTPSClient(false);
client.setProxy(new java.net.Proxy(
    java.net.Proxy.Type.SOCKS,
    new java.net.InetSocketAddress("proxy.example", 1080)));
client.setTrustManager(null);
client.setEndpointCheckingEnabled(true);
client.setConnectTimeout(10000);
client.connect("ftps.example", 21);

यह एक स्पष्ट FTPS कनेक्शन शुरू करता है। ऐप्लिकेशन अभी भी लॉगिन, डेटा-सुरक्षा वार्ता, स्थानांतरण प्रबंधन और डिस्कनेक्ट का ज़िम्मेदार है। null trust-manager सेटिंग Commons Net की केवल तिथि-आधारित प्रमाणपत्र जाँच के बजाय JVM के डिफ़ॉल्ट trust manager चुनती है। इच्छित trust store और सर्वर के प्रमाणपत्र का होस्टनेम उपयोग करें।

निष्क्रिय स्थानांतरणों के लिए, मौजूदा FTPSClient कार्यान्वयन अपना डेटा सॉकेट भी कॉन्फ़िगर किए गए प्रॉक्सी के ज़रिए बनाता है और फिर TLS परत जोड़ता है। लॉगिन के बाद निष्क्रिय मोड उपयोग करें और सामान्य FTPS API के ज़रिए आवश्यक संरक्षित डेटा चैनल पर बातचीत करें। सफल नियंत्रण कनेक्शन वह काम पूरा नहीं करता; निष्क्रिय डेटा कनेक्शन एक अलग मार्ग ही रहता है।

कोड मानता है कि SOCKS सेवा में अतिरिक्त खाता नहीं है। प्रमाणीकरण समर्थन के लिए चुने गए Java रनटाइम और परिनियोजन की अलग समीक्षा आवश्यक है।

यह FTPHTTPClient का HTTP CONNECT इंटरफ़ेस नहीं है। वह सहोदर सामान्य FTP को HTTP सुरंग पर संभालता है; उसका पोर्ट बदलने से FTPS नहीं जुड़ता। यदि नेटवर्क केवल HTTP प्रॉक्सी की अनुमति देता है, तो ऐसा FTPS कार्यान्वयन या रखरखाव किया गया अनुकूलन चुनें जो नियंत्रण और डेटा दोनों मार्गों पर CONNECT का समर्थन करे।

क्लाइंट के जीवनकाल भर प्रॉक्सी कॉन्फ़िगरेशन बनाए रखें, और पुनः उपयोग किए गए इंस्टेंस को फिर से जोड़ने से पहले उसकी समीक्षा करें: FTPS डिस्कनेक्ट सॉकेट फ़ैक्टरियों को रीसेट करता है। मार्ग को सफल दिखाने के लिए प्रमाणपत्र जाँचों को trust-all manager से न बदलें।

संबंधित लेख