[jira] [Issue Comment Edited] (NET-426) FTPS: Hook to customize _openDataConnection_ SSLSocket before startHandshake() is called

2011-10-25 Thread Ketan (Issue Comment Edited) (JIRA)

[ 
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

2011-10-25 Thread Ketan (Issue Comment Edited) (JIRA)

[ 
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

2011-10-25 Thread Ketan (Issue Comment Edited) (JIRA)

[ 
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