hammant     2003/01/05 03:41:40

  Modified:    altrmi   build.xml default.properties
               altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket
                        SocketCustomStreamFactoryHelper.java
                        SocketCustomStreamInvocationHandler.java
                        SocketObjectStreamFactoryHelper.java
                        SocketObjectStreamHostContext.java
                        SocketObjectStreamInvocationHandler.java
  Added:       altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket
                        AbstractSocketStreamSSHInvocationHandler.java
                        AltrmiUserInfo.java
                        SocketCustomStreamSSHHostContext.java
                        SocketCustomStreamSSHInvocationHandler.java
               altrmi/lib jsch-0-0-9.jar
  Log:
  Start of work allowing SSH connections to server.  This is client side only.
  
  Revision  Changes    Path
  1.61      +1 -0      jakarta-avalon-excalibur/altrmi/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/build.xml,v
  retrieving revision 1.60
  retrieving revision 1.61
  diff -u -r1.60 -r1.61
  --- build.xml 5 Jan 2003 10:37:10 -0000       1.60
  +++ build.xml 5 Jan 2003 11:41:39 -0000       1.61
  @@ -30,6 +30,7 @@
           <pathelement path="${cornerstone-api.jar}"/>
           <pathelement path="${phoenix-client.jar}"/>
           <pathelement path="${phoenix-metagenerate.jar}"/>
  +        <pathelement path="${jsch.jar}"/>
           <pathelement 
path="jetty-download/Jetty-${jetty.rel}/Jetty-${jetty.rel}/lib/javax.servlet.jar"/>
           <pathelement 
path="jetty-download/Jetty-${jetty.rel}/Jetty-${jetty.rel}/lib/org.mortbay.jetty.jar"/>
       </path>
  
  
  
  1.18      +1 -0      jakarta-avalon-excalibur/altrmi/default.properties
  
  Index: default.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/default.properties,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- default.properties        3 Jan 2003 00:17:16 -0000       1.17
  +++ default.properties        5 Jan 2003 11:41:39 -0000       1.18
  @@ -33,6 +33,7 @@
   cornerstone-api.jar=./lib/cornerstone-api.jar
   phoenix-client.jar=./lib/phoenix-client.jar
   phoenix-metagenerate.jar=./lib/phoenix-metagenerate.jar
  +jsch.jar=./lib/jsch-0-0-9.jar
   jakarta-commons-attributes.jar=./lib/commons-attributes-0.1.jar
   jakarta-commons-httpclient.jar=./lib/commons-httpclient.jar
   jakarta-commons-logging.jar=./lib/commons-logging.jar
  
  
  
  1.6       +2 -3      
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketCustomStreamFactoryHelper.java
  
  Index: SocketCustomStreamFactoryHelper.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketCustomStreamFactoryHelper.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SocketCustomStreamFactoryHelper.java      26 Oct 2002 14:10:49 -0000      
1.5
  +++ SocketCustomStreamFactoryHelper.java      5 Jan 2003 11:41:40 -0000       
1.6
  @@ -7,7 +7,6 @@
    */
   package org.apache.excalibur.altrmi.client.impl.socket;
   
  -import java.io.IOException;
   import org.apache.excalibur.altrmi.client.AltrmiFactory;
   import org.apache.excalibur.altrmi.client.AltrmiHostContext;
   import org.apache.excalibur.altrmi.client.AltrmiInterfaceLookup;
  @@ -21,7 +20,7 @@
    *            0         :  1      : 2
    *
    *
  - * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
  + * @author Paul Hammant
    * @version $Revision$
    */
   public class SocketCustomStreamFactoryHelper extends AbstractFactoryHelper
  
  
  
  1.7       +2 -6      
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketCustomStreamInvocationHandler.java
  
  Index: SocketCustomStreamInvocationHandler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketCustomStreamInvocationHandler.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SocketCustomStreamInvocationHandler.java  16 Dec 2002 01:00:01 -0000      
1.6
  +++ SocketCustomStreamInvocationHandler.java  5 Jan 2003 11:41:40 -0000       
1.7
  @@ -7,21 +7,17 @@
    */
   package org.apache.excalibur.altrmi.client.impl.socket;
   
  -import java.io.IOException;
   import java.io.InputStream;
   import java.io.OutputStream;
   import 
org.apache.excalibur.altrmi.client.impl.stream.ClientCustomStreamReadWriter;
   import org.apache.excalibur.altrmi.client.impl.ClientStreamReadWriter;
   import org.apache.excalibur.altrmi.common.AltrmiConnectionException;
  -import org.apache.excalibur.altrmi.common.AltrmiReply;
  -import org.apache.excalibur.altrmi.common.AltrmiRequest;
  -import org.apache.excalibur.altrmi.common.MethodRequest;
   
   /**
    * Class SocketCustomStreamInvocationHandler
    *
    *
  - * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
  + * @author Paul Hammant
    * @version $Revision$
    */
   public final class SocketCustomStreamInvocationHandler
  
  
  
  1.5       +2 -3      
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketObjectStreamFactoryHelper.java
  
  Index: SocketObjectStreamFactoryHelper.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketObjectStreamFactoryHelper.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SocketObjectStreamFactoryHelper.java      26 Oct 2002 14:10:49 -0000      
1.4
  +++ SocketObjectStreamFactoryHelper.java      5 Jan 2003 11:41:40 -0000       
1.5
  @@ -7,7 +7,6 @@
    */
   package org.apache.excalibur.altrmi.client.impl.socket;
   
  -import java.io.IOException;
   import org.apache.excalibur.altrmi.client.AltrmiFactory;
   import org.apache.excalibur.altrmi.client.AltrmiHostContext;
   import org.apache.excalibur.altrmi.client.AltrmiInterfaceLookup;
  @@ -21,7 +20,7 @@
    *            0         :  1      : 2
    *
    *
  - * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
  + * @author Paul Hammant
    * @version $Revision$
    */
   public class SocketObjectStreamFactoryHelper extends AbstractFactoryHelper
  
  
  
  1.7       +2 -3      
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketObjectStreamHostContext.java
  
  Index: SocketObjectStreamHostContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketObjectStreamHostContext.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SocketObjectStreamHostContext.java        4 Jan 2003 22:17:19 -0000       
1.6
  +++ SocketObjectStreamHostContext.java        5 Jan 2003 11:41:40 -0000       
1.7
  @@ -13,7 +13,6 @@
   import org.apache.excalibur.altrmi.common.AltrmiConnectionException;
   
   import java.io.PipedInputStream;
  -import java.io.IOException;
   import java.io.PipedOutputStream;
   import java.lang.reflect.Method;
   
  @@ -21,7 +20,7 @@
    * Class SocketObjectStreamHostContext
    *
    *
  - * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
  + * @author Paul Hammant
    * @version $Revision$
    */
   public class SocketObjectStreamHostContext extends 
AbstractSameVmBindableHostContext
  
  
  
  1.7       +2 -3      
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketObjectStreamInvocationHandler.java
  
  Index: SocketObjectStreamInvocationHandler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketObjectStreamInvocationHandler.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SocketObjectStreamInvocationHandler.java  4 Jan 2003 22:17:19 -0000       
1.6
  +++ SocketObjectStreamInvocationHandler.java  5 Jan 2003 11:41:40 -0000       
1.7
  @@ -7,7 +7,6 @@
    */
   package org.apache.excalibur.altrmi.client.impl.socket;
   
  -import java.io.IOException;
   import java.io.InputStream;
   import java.io.OutputStream;
   import 
org.apache.excalibur.altrmi.client.impl.stream.ClientObjectStreamReadWriter;
  @@ -18,7 +17,7 @@
    * Class SocketObjectStreamInvocationHandler
    *
    *
  - * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
  + * @author Paul Hammant
    * @version $Revision$
    */
   public final class SocketObjectStreamInvocationHandler
  
  
  
  1.1                  
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/AbstractSocketStreamSSHInvocationHandler.java
  
  Index: AbstractSocketStreamSSHInvocationHandler.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.excalibur.altrmi.client.impl.socket;
  
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.OutputStream;
  import java.net.Socket;
  
  import org.apache.excalibur.altrmi.client.impl.ClientStreamReadWriter;
  import org.apache.excalibur.altrmi.client.impl.stream.StreamInvocationHandler;
  import org.apache.excalibur.altrmi.common.AltrmiConnectionException;
  import org.apache.excalibur.altrmi.common.ConnectionRefusedException;
  import com.jcraft.jsch.JSch;
  import com.jcraft.jsch.Session;
  import com.jcraft.jsch.JSchException;
  import com.jcraft.jsch.ChannelDirectTCPIP;
  
  /**
   * Class SocketCustomStreamInvocationHandler
   *
   *
   * @author Paul Hammant
   * @version $Revision: 1.1 $
   */
  public abstract class AbstractSocketStreamSSHInvocationHandler extends 
StreamInvocationHandler
  {
  
      private final String m_host;
      private final int m_port;
      private final String m_userID;
      private final String m_password;
  
      /**
       * AbstractSocketStreamInvocationHandler
       *
       *
       * @param host The host to connect to
       * @param port The port to conenct to
       * @param classLoader The class loader
       *
       * @throws AltrmiConnectionException If a problem connecting
       *
       */
      public AbstractSocketStreamSSHInvocationHandler(String host, int port, 
String userID, String password, ClassLoader classLoader)
              throws AltrmiConnectionException
      {
  
          super(classLoader);
  
          m_host = host;
          m_port = port;
          m_userID = userID;
          m_password = password;
  
          try
          {
              connectToSSHAndPort();
          }
          catch (IOException ioe)
          {
              throw new AltrmiConnectionException("Some problem with sockets.", 
ioe);
          }
          catch (JSchException e)
          {
              throw new AltrmiConnectionException("Cannot open SSH 
Connection.", e);
  
          }
      }
  
      /**
       * Method tryReconnect
       *
       *
       * @return connected or not.
       */
      protected boolean tryReconnect()
      {
  
          try
          {
              connectToSSHAndPort();
              return true;
          }
          catch (AltrmiConnectionException ce)
          {
              // TODO log ?
              return false;
          }
          catch (JSchException e)
          {
              // TODO log ?
              return false;
          }
          catch (IOException e)
          {
              // TODO log ?
              return false;
          }
      }
  
      private void connectToSSHAndPort() throws JSchException, IOException, 
AltrmiConnectionException
      {
          JSch jsch = new JSch();
          Session session = jsch.getSession(m_host, 22);
          session.setUserInfo(new AltrmiUserInfo(m_userID, m_password));
          session.connect();
  
          Socket socket = new Socket();
  
          ChannelDirectTCPIP channel =
                  (ChannelDirectTCPIP) session.openChannel("direct-tcpip");
          channel.setInputStream(socket.getInputStream());
          channel.setOutputStream(socket.getOutputStream());
          channel.setHost(m_host);
          channel.setPort(m_port);
          channel.connect();
  
          
setObjectReadWriter(createClientStreamReadWriter(socket.getInputStream(),
                  socket.getOutputStream()));
  
      }
  
      protected abstract ClientStreamReadWriter createClientStreamReadWriter(
              InputStream in, OutputStream out) throws 
AltrmiConnectionException;
  
  }
  
  
  
  1.1                  
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/AltrmiUserInfo.java
  
  Index: AltrmiUserInfo.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.excalibur.altrmi.client.impl.socket;
  
  import com.jcraft.jsch.UserInfo;
  
  /**
   * Class AltrmiUserInfo
   *
   *
   * @author Paul Hammant
   * @version $Revision: 1.1 $
   */
  public class AltrmiUserInfo implements UserInfo
  {
      private String m_userID;
      private String m_password;
  
      public AltrmiUserInfo(String userID, String password)
      {
          m_userID = userID;
          m_password = password;
      }
  
      public String getName()
      {
          return m_userID;
      }
  
      public String getPassphrase(String s)
      {
          return null;
      }
  
      public String getPassword()
      {
          return m_password;
      }
  
      public boolean promptNameAndPassword(String s)
      {
          return false;
      }
  
      public boolean promptNameAndPassphrase(String s)
      {
          return false;
      }
  
      public boolean prompt(String s)
      {
          return false;
      }
  
      public boolean retry()
      {
          return true;
      }
  }
  
  
  
  1.1                  
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketCustomStreamSSHHostContext.java
  
  Index: SocketCustomStreamSSHHostContext.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.excalibur.altrmi.client.impl.socket;
  
  import 
org.apache.excalibur.altrmi.client.impl.piped.PipedCustomStreamHostContext;
  import 
org.apache.excalibur.altrmi.client.impl.AbstractSameVmBindableHostContext;
  import org.apache.excalibur.altrmi.client.impl.AbstractHostContext;
  import org.apache.excalibur.altrmi.common.AltrmiConnectionException;
  
  import java.io.PipedInputStream;
  import java.io.PipedOutputStream;
  import java.lang.reflect.Method;
  
  /**
   * Class SocketCustomStreamHostContext
   *
   *
   * @author Paul Hammant
   * @version $Revision: 1.1 $
   */
  public class SocketCustomStreamSSHHostContext extends 
AbstractSameVmBindableHostContext
  {
  
      private int m_port;
  
      /**
       * Constructor SocketCustomStreamHostContext
       *
       *
       * @param host
       * @param port
       *
       * @throws AltrmiConnectionException
       *
       */
      public SocketCustomStreamSSHHostContext( String host, int port, String 
userID, String password ) throws AltrmiConnectionException
      {
  
          super( new SocketCustomStreamSSHInvocationHandler( host, port, 
userID, password,
                                                          
SocketCustomStreamSSHHostContext.class
                                                          .getClassLoader() ) );
          m_port = port;
      }
  
      /**
       * Constructor SocketCustomStreamHostContext
       *
       *
       * @param host
       * @param port
       * @param classLoader
       *
       * @throws AltrmiConnectionException
       *
       */
      public SocketCustomStreamSSHHostContext( String host, int port, String 
userID, String password, ClassLoader classLoader )
          throws AltrmiConnectionException
      {
          super( new SocketCustomStreamSSHInvocationHandler( host, port, 
userID, password, classLoader ) );
          m_port = port;
      }
  
      /**
       * Make a HostContext for this using SameVM connections nstead of socket 
based ones.
       * @return the HostContext
       * @throws AltrmiConnectionException if a problem
       */
      public AbstractHostContext makeSameVmHostContext() throws 
AltrmiConnectionException
      {
          PipedInputStream in = new PipedInputStream();
          PipedOutputStream out = new PipedOutputStream();
          try
          {
              Object binder = getOptmization("port=" + m_port);
              if (binder == null)
              {
                  return null;
              }
              Object bound = bind(binder, in, out);
              if (bound == null)
              {
                  return null;
              }
              PipedCustomStreamHostContext pipedCustomStreamHostContext
                      = new PipedCustomStreamHostContext(in, out);
              pipedCustomStreamHostContext.initialize();
              return pipedCustomStreamHostContext;
          }
          catch (Exception e)
          {
              throw new AltrmiConnectionException("Naming exception during bind 
:" + e.getMessage());
          }
      }
  
      private Object bind(Object object, PipedInputStream inputStream,
                         PipedOutputStream outputStream)
      {
  
          try
          {
              Object[] parms = new Object[]{ inputStream, outputStream };
              Method method = object.getClass().getMethod("bind", new Class[] { 
parms.getClass() });
              return method.invoke(object, new Object[] { parms });
          }
          catch (Exception e)
          {
              return null;
          }
      }
  
  }
  
  
  
  1.1                  
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketCustomStreamSSHInvocationHandler.java
  
  Index: SocketCustomStreamSSHInvocationHandler.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.excalibur.altrmi.client.impl.socket;
  
  import java.io.InputStream;
  import java.io.OutputStream;
  import 
org.apache.excalibur.altrmi.client.impl.stream.ClientCustomStreamReadWriter;
  import org.apache.excalibur.altrmi.client.impl.ClientStreamReadWriter;
  import org.apache.excalibur.altrmi.common.AltrmiConnectionException;
  
  /**
   * Class SocketCustomStreamInvocationHandler
   *
   *
   * @author Paul Hammant
   * @version $Revision: 1.1 $
   */
  public final class SocketCustomStreamSSHInvocationHandler
      extends AbstractSocketStreamSSHInvocationHandler
  {
  
      /**
       * Constructor SocketCustomStreamInvocationHandler
       *
       *
       * @param host the host name
       * @param port the port
       * @param userID the User ID
       * @param password the password
       * @param classLoader the classloader for deserialization hints.
       *
       * @throws AltrmiConnectionException if a problem
       *
       */
      public SocketCustomStreamSSHInvocationHandler( String host, int port, 
String userID,
                                                     String password, 
ClassLoader classLoader )
          throws AltrmiConnectionException
      {
          super( host, port, userID, password, classLoader );
      }
  
      /**
       * Create a client stream read/writer
       * @param in the input stream
       * @param out the output stream
       * @return the read/writer
       * @throws AltrmiConnectionException if a problem
       */
      protected ClientStreamReadWriter createClientStreamReadWriter(
          InputStream in, OutputStream out ) throws AltrmiConnectionException
      {
          return new ClientCustomStreamReadWriter( in, out, 
m_interfacesClassLoader );
      }
  }
  
  
  
  1.1                  jakarta-avalon-excalibur/altrmi/lib/jsch-0-0-9.jar
  
        <<Binary file>>
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to