[jira] [Issue Comment Edited] (NET-426) FTPS: Hook to customize _openDataConnection_ SSLSocket before startHandshake() is called
[ https://issues.apache.org/jira/browse/NET-426?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13135229#comment-13135229 ] Ketan edited comment on NET-426 at 10/25/11 4:58 PM: - Here is code snippet I was playing with. I had this executed before data connection handshake starting. Note this is for SunJSSE provider since I had Sun's JVM installed: {code:java} SSLSocket sslControlSocket = (SSLSocket) controlConnectionSocket; String host = host.used.to.connect.to.socket; try { SSLSession sess = sslControlSocket.getSession(); SSLSessionContext sessions = sess.getSessionContext(); // SunJSSE 1.6 specific code Field cache = sessions.getClass().getDeclaredField( sessionHostPortCache); cache.setAccessible(true); Object c = cache.get(sessions); String key = (host + : + String.valueOf(socket.getPort())) .toLowerCase(); // Class? cc = Class.forName(sun.security.util.Cache); Class? cc = c.getClass(); cc.getDeclaredMethod(put, Object.class, Object.class).invoke( c, key, sess); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } {code} was (Author: ktp420): Here is code snippet I was playing with. I had this executed before data connection handshake starting. Note this is for SunJSSE provider since I had Sun's JVM installed: SSLSocket sslControlSocket = (SSLSocket) controlConnectionSocket; String host = host.used.to.connect.to.socket; try { SSLSession sess = sslControlSocket.getSession(); SSLSessionContext sessions = sess.getSessionContext(); // SunJSSE 1.6 specific code Field cache = sessions.getClass().getDeclaredField( sessionHostPortCache); cache.setAccessible(true); Object c = cache.get(sessions); String key = (host + : + String.valueOf(socket.getPort())) .toLowerCase(); // Class? cc = Class.forName(sun.security.util.Cache); Class? cc = c.getClass(); cc.getDeclaredMethod(put, Object.class, Object.class).invoke( c, key, sess); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } FTPS: Hook to customize _openDataConnection_ SSLSocket before startHandshake() is called Key: NET-426 URL: https://issues.apache.org/jira/browse/NET-426 Project: Commons Net Issue Type: Bug Components: FTP Affects Versions: 3.0.1 Reporter: Ketan Priority: Critical Attachments: FTPSClient.patch Original Estimate: 1h Remaining Estimate: 1h Currently in FTPSClient class, there is protected _openDataConnection_ method, which create SSLSocket for data connection. But there is no hook to customize the SSLSocket before startHandshake is called. I need to know the remote host ip and port, which i can get for socket, and do custom setup to try to reuse SSL sessions from control connection socket. Since the socket factory uses createSocket() method, I can't just use custom socket factory since I don't know the host and port. I can't just override the _openDataConnection_() method in my class since that will call the startHandshake(). So it would be nice if you can provide hook, much like _connectAction_(), but for data connection before handshake is started. You can pass the new data socket as argument to this hook method so one can get remote host and port information. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Issue Comment Edited] (NET-426) FTPS: Hook to customize _openDataConnection_ SSLSocket before startHandshake() is called
[ https://issues.apache.org/jira/browse/NET-426?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13135229#comment-13135229 ] Ketan edited comment on NET-426 at 10/25/11 4:58 PM: - Here is code snippet I was playing with. I had this executed before data connection handshake starting. Note this is for SunJSSE provider since I had Sun's JVM installed: {code:java} SSLSocket sslControlSocket = (SSLSocket) controlConnectionSocket; String host = host.used.to.connect.to.data.socket; try { SSLSession sess = sslControlSocket.getSession(); SSLSessionContext sessions = sess.getSessionContext(); // SunJSSE 1.6 specific code Field cache = sessions.getClass().getDeclaredField( sessionHostPortCache); cache.setAccessible(true); Object c = cache.get(sessions); String key = (host + : + String.valueOf(socket.getPort())) .toLowerCase(); // Class? cc = Class.forName(sun.security.util.Cache); Class? cc = c.getClass(); cc.getDeclaredMethod(put, Object.class, Object.class).invoke( c, key, sess); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } {code} was (Author: ktp420): Here is code snippet I was playing with. I had this executed before data connection handshake starting. Note this is for SunJSSE provider since I had Sun's JVM installed: {code:java} SSLSocket sslControlSocket = (SSLSocket) controlConnectionSocket; String host = host.used.to.connect.to.socket; try { SSLSession sess = sslControlSocket.getSession(); SSLSessionContext sessions = sess.getSessionContext(); // SunJSSE 1.6 specific code Field cache = sessions.getClass().getDeclaredField( sessionHostPortCache); cache.setAccessible(true); Object c = cache.get(sessions); String key = (host + : + String.valueOf(socket.getPort())) .toLowerCase(); // Class? cc = Class.forName(sun.security.util.Cache); Class? cc = c.getClass(); cc.getDeclaredMethod(put, Object.class, Object.class).invoke( c, key, sess); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } {code} FTPS: Hook to customize _openDataConnection_ SSLSocket before startHandshake() is called Key: NET-426 URL: https://issues.apache.org/jira/browse/NET-426 Project: Commons Net Issue Type: Bug Components: FTP Affects Versions: 3.0.1 Reporter: Ketan Priority: Critical Attachments: FTPSClient.patch Original Estimate: 1h Remaining Estimate: 1h Currently in FTPSClient class, there is protected _openDataConnection_ method, which create SSLSocket for data connection. But there is no hook to customize the SSLSocket before startHandshake is called. I need to know the remote host ip and port, which i can get for socket, and do custom setup to try to reuse SSL sessions from control connection socket. Since the socket factory uses createSocket() method, I can't just use custom socket factory since I don't know the host and port. I can't just override the _openDataConnection_() method in my class since that will call the startHandshake(). So it would be nice if you can provide hook, much like _connectAction_(), but for data connection before handshake is started. You can pass the new data socket as argument to this hook method so one can get remote host and port information. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Issue Comment Edited] (NET-426) FTPS: Hook to customize _openDataConnection_ SSLSocket before startHandshake() is called
[ https://issues.apache.org/jira/browse/NET-426?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13135229#comment-13135229 ] Ketan edited comment on NET-426 at 10/25/11 5:03 PM: - Here is code snippet I was playing with. I had this executed before data connection handshake starting. Note this is for SunJSSE provider since I had Sun's JVM installed: {code:java} SSLSocket sslControlSocket = (SSLSocket) controlConnectionSocket; String host = host.used.to.connect.to.data.socket; int port = dataPort; // dataSocket.getPort(); try { SSLSession sess = sslControlSocket.getSession(); SSLSessionContext sessions = sess.getSessionContext(); // SunJSSE 1.6 specific code Field cache = sessions.getClass().getDeclaredField( sessionHostPortCache); cache.setAccessible(true); Object c = cache.get(sessions); String key = (host + : + String.valueOf(port)) .toLowerCase(); // Class? cc = Class.forName(sun.security.util.Cache); Class? cc = c.getClass(); cc.getDeclaredMethod(put, Object.class, Object.class).invoke( c, key, sess); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } {code} was (Author: ktp420): Here is code snippet I was playing with. I had this executed before data connection handshake starting. Note this is for SunJSSE provider since I had Sun's JVM installed: {code:java} SSLSocket sslControlSocket = (SSLSocket) controlConnectionSocket; String host = host.used.to.connect.to.data.socket; try { SSLSession sess = sslControlSocket.getSession(); SSLSessionContext sessions = sess.getSessionContext(); // SunJSSE 1.6 specific code Field cache = sessions.getClass().getDeclaredField( sessionHostPortCache); cache.setAccessible(true); Object c = cache.get(sessions); String key = (host + : + String.valueOf(socket.getPort())) .toLowerCase(); // Class? cc = Class.forName(sun.security.util.Cache); Class? cc = c.getClass(); cc.getDeclaredMethod(put, Object.class, Object.class).invoke( c, key, sess); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } {code} FTPS: Hook to customize _openDataConnection_ SSLSocket before startHandshake() is called Key: NET-426 URL: https://issues.apache.org/jira/browse/NET-426 Project: Commons Net Issue Type: Bug Components: FTP Affects Versions: 3.0.1 Reporter: Ketan Priority: Critical Attachments: FTPSClient.patch Original Estimate: 1h Remaining Estimate: 1h Currently in FTPSClient class, there is protected _openDataConnection_ method, which create SSLSocket for data connection. But there is no hook to customize the SSLSocket before startHandshake is called. I need to know the remote host ip and port, which i can get for socket, and do custom setup to try to reuse SSL sessions from control connection socket. Since the socket factory uses createSocket() method, I can't just use custom socket factory since I don't know the host and port. I can't just override the _openDataConnection_() method in my class since that will call the startHandshake(). So it would be nice if you can provide hook, much like _connectAction_(), but for data connection before handshake is started. You can pass the new data socket as argument to this hook method so one can get remote host and port information. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira