Commons Net ਦੇ FTPSClient ਲਈ SOCKS ਰਾਹ
ਸਰਵਰ ਦਾ ਹੋਸਟਨਾਮ, ਨਿਸ਼ਕਿਰਿਆ ਡੇਟਾ ਕਨੈਕਸ਼ਨ ਅਤੇ TLS ਪੁਸ਼ਟੀ ਬਚਾਉਂਦੇ ਹੋਏ FTPS ਲਈ Commons Net ਦਾ ਸਾਕਟ-ਪ੍ਰਾਕਸੀ ਇੰਟਰਫ਼ੇਸ ਵਰਤੋ।
ਜਦੋਂ 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 ਪ੍ਰਾਕਸੀ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਤਾਂ ਕੰਟਰੋਲ ਅਤੇ ਡੇਟਾ ਦੋਵੇਂ ਰਾਹਾਂ ਵਿੱਚ CONNECT ਦਾ ਸਮਰਥਨ ਕਰਨ ਵਾਲਾ FTPS ਅਮਲ ਜਾਂ ਸੰਭਾਲਿਆ ਅਨੁਕੂਲਨ ਚੁਣੋ।
ਕਲਾਇੰਟ ਦੇ ਪੂਰੇ ਜੀਵਨ ਚੱਕਰ ਦੌਰਾਨ ਪ੍ਰਾਕਸੀ ਸੰਰਚਨਾ ਰੱਖੋ ਅਤੇ ਦੁਬਾਰਾ ਵਰਤੇ ਗਏ ਇੰਸਟੈਂਸ ਨੂੰ ਮੁੜ ਜੋੜਨ ਤੋਂ ਪਹਿਲਾਂ ਇਸਦੀ ਸਮੀਖਿਆ ਕਰੋ: FTPS ਡਿਸਕਨੈਕਟ ਸਾਕਟ ਫੈਕਟਰੀਆਂ ਨੂੰ ਰੀਸੈਟ ਕਰਦਾ ਹੈ। ਰਾਹ ਨੂੰ ਸਫਲ ਦਿਖਾਉਣ ਲਈ ਸਰਟੀਫਿਕੇਟ ਜਾਂਚਾਂ ਨੂੰ trust-all manager ਨਾਲ ਨਾ ਬਦਲੋ।