com.maverick.ssh1
Class Ssh1Client

java.lang.Object
  extended bycom.maverick.ssh1.Ssh1Client
All Implemented Interfaces:
SshClient

public class Ssh1Client
extends java.lang.Object
implements SshClient

Implementation of an SshClient for the SSH1 protocol; no additional features are currently implemented outside of the general SshClient contract.

Author:
Lee David Painter

Constructor Summary
Ssh1Client()
          Default public constructor for the client called by SshConnector.
 
Method Summary
 int authenticate(SshAuthentication auth)
          Authenticate the user.
 boolean cancelRemoteForwarding(java.lang.String bindAddress, int bindPort)
          The bindAddress is ignored since the SSH1 protocol does not support setting of the bind address.
 void connect(SshTransport transport, SshContext context, SshConnector connector, java.lang.String username, java.lang.String localIdentification, java.lang.String remoteIdentification, boolean buffered)
          Connect to an SSH server.
 void disconnect()
          Disconnect from the remote computer.
 SshClient duplicate()
          Create an identical version of an SshClient using cached authentication information and the SshTransport duplicate method.
 int getChannelCount()
          Get the number of active channels.
 SshContext getContext()
          Get the context that created this client.
 java.lang.String getRemoteIdentification()
          Returns the identification string supplied by the server during protocol negotiation.
 java.lang.String getUsername()
          Return the username used for this connection
 int getVersion()
          Returns the version for this client.
 boolean isAuthenticated()
          Evaluate whether the user has been authenticated.
 boolean isBuffered()
          Identifies whether this client is in buffered mode
 boolean isConnected()
          Evaluate whether the connection is still alive.
 SshTunnel openForwardingChannel(java.lang.String hostname, int port, java.lang.String listeningAddress, int listeningPort, java.lang.String originatingHost, int originatingPort, SshTransport transport, ChannelEventListener listener)
          Open a TCPIP forwarding channel to the remote computer.
 SshClient openRemoteClient(java.lang.String hostname, int port, java.lang.String username)
          Open up an SSH client from the remote machine to another remote server.
 SshClient openRemoteClient(java.lang.String hostname, int port, java.lang.String username, SshConnector con)
          Open up an SSH client from the remote machine to another remote server.
 SshSession openSessionChannel()
          Opens the one and only session channel available on an SSH1 connection, calling this method multiple times on the same client instance will return the same session instance.
 SshSession openSessionChannel(ChannelEventListener listener)
          Open a session on the remote computer.
 boolean requestRemoteForwarding(java.lang.String bindAddress, int bindPort, java.lang.String hostToConnect, int portToConnect, ForwardingRequestListener listener)
          The bindAddress is ignored since the SSH1 protocol does not support setting of the bind address.
 boolean requestXForwarding(java.lang.String display, ForwardingRequestListener listener)
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Ssh1Client

public Ssh1Client()
Default public constructor for the client called by SshConnector.

Method Detail

connect

public void connect(SshTransport transport,
                    SshContext context,
                    SshConnector connector,
                    java.lang.String username,
                    java.lang.String localIdentification,
                    java.lang.String remoteIdentification,
                    boolean buffered)
             throws SshException
Description copied from interface: SshClient
Connect to an SSH server.

Specified by:
connect in interface SshClient
Parameters:
transport - the transport layer
context - an SSH context
username - the users name
localIdentification - the local identification string
remoteIdentification - the remotes identification string
buffered - should the connection be buffered (threaded)
Throws:
SshException

getRemoteIdentification

public java.lang.String getRemoteIdentification()
Description copied from interface: SshClient
Returns the identification string supplied by the server during protocol negotiation.

Specified by:
getRemoteIdentification in interface SshClient
Returns:
the servers identification String, for example "SSH-1.99-OpenSSH_3.7p"

isAuthenticated

public boolean isAuthenticated()
Description copied from interface: SshClient
Evaluate whether the user has been authenticated. If the server does not require the user to authenticate; this may return true immediatley after connection. No other operations can be perform until the user has been authenticated.

Specified by:
isAuthenticated in interface SshClient
Returns:
true if the connection is authenticated, otherwise false

authenticate

public int authenticate(SshAuthentication auth)
                 throws SshException
Description copied from interface: SshClient

Authenticate the user. Once connected call to authenticate the user. When a connection is made no other operations can be performed until the user has been authenticated.

Specified by:
authenticate in interface SshClient
Parameters:
auth - the authentication mechanism.
Returns:
one of the constants defined in SshAuthentication which indicates the state of the current authentication process.
Throws:
SshException
See Also:
PasswordAuthentication

openSessionChannel

public SshSession openSessionChannel()
                              throws SshException,
                                     ChannelOpenException
Opens the one and only session channel available on an SSH1 connection, calling this method multiple times on the same client instance will return the same session instance.

Specified by:
openSessionChannel in interface SshClient
Returns:
the one and only session channel for the SSH1 connection.
Throws:
SshException
ChannelOpenException

openSessionChannel

public SshSession openSessionChannel(ChannelEventListener listener)
                              throws SshException,
                                     ChannelOpenException
Description copied from interface: SshClient

Open a session on the remote computer. This can only be called once the user has been authenticated. The session returned is uninitialized and will be opened when either a command is executed or the users shell has been started.

Specified by:
openSessionChannel in interface SshClient
Parameters:
listener - an event listener to add before opening
Returns:
an uninitialized session instance.
Throws:
SshException
ChannelOpenException

openForwardingChannel

public SshTunnel openForwardingChannel(java.lang.String hostname,
                                       int port,
                                       java.lang.String listeningAddress,
                                       int listeningPort,
                                       java.lang.String originatingHost,
                                       int originatingPort,
                                       SshTransport transport,
                                       ChannelEventListener listener)
                                throws SshException,
                                       ChannelOpenException
Description copied from interface: SshClient

Open a TCPIP forwarding channel to the remote computer. If successful the remote computer will open a socket to the host/port specified and return a channel which can be used to forward TCPIP data from the local computer to the remotley connected socket.

It should be noted that this is a low level API method and it does not connect the transport to the channel as this would require some threading. The transport is passed here so that it can be attached to the SshTunnel that is returned. If you want to have the API automatically connect the channel to the transport you should use the ForwardingClient which provides management of forwarding connections and threads.

Specified by:
openForwardingChannel in interface SshClient
Parameters:
hostname - the host to connect to
port - the port to connect to
originatingHost - the originating host (informational only)
originatingPort - the originating port (informational only)
transport -
listener - an event listener that will be added to the channel before opening.
Returns:
Throws:
SshException
ChannelOpenException

openRemoteClient

public SshClient openRemoteClient(java.lang.String hostname,
                                  int port,
                                  java.lang.String username,
                                  SshConnector con)
                           throws SshException,
                                  ChannelOpenException
Description copied from interface: SshClient
Open up an SSH client from the remote machine to another remote server. This method is useful if your firewall only forwards SSH connections to a single machine. Once connected to the exposed machine you can call this to obtain an SshClient instance to any other machine on the same network.

Specified by:
openRemoteClient in interface SshClient
Parameters:
hostname - the name of the remote host
port - the port of the remote host
username - the name of the user on the remote host
con - an SshConnector instance that will be used to connect the client. This does not have to be the same instance that created this client.
Returns:
SshClient
Throws:
SshException
ChannelOpenException

openRemoteClient

public SshClient openRemoteClient(java.lang.String hostname,
                                  int port,
                                  java.lang.String username)
                           throws SshException,
                                  ChannelOpenException
Description copied from interface: SshClient
Open up an SSH client from the remote machine to another remote server. This method is useful if your firewall only forwards SSH connections to a single machine. Once connected to the exposed machine you can call this to obtain an SshClient instance to any other machine on the same network.

Specified by:
openRemoteClient in interface SshClient
Parameters:
hostname - the name of the remote host
port - the port of the remote host
username - the name of the user on the remote host
Returns:
SshClient
Throws:
ChannelOpenException
SshException

requestXForwarding

public boolean requestXForwarding(java.lang.String display,
                                  ForwardingRequestListener listener)
                           throws SshException
Throws:
SshException

requestRemoteForwarding

public boolean requestRemoteForwarding(java.lang.String bindAddress,
                                       int bindPort,
                                       java.lang.String hostToConnect,
                                       int portToConnect,
                                       ForwardingRequestListener listener)
                                throws SshException
The bindAddress is ignored since the SSH1 protocol does not support setting of the bind address.

Specified by:
requestRemoteForwarding in interface SshClient
Parameters:
bindAddress - the address that the remote computer should listen on
bindPort - the port that the remote computer should listen on
hostToConnect - the host to connect when a connection is established
portToConnect - the port to connect when a connection is established
listener - a callback interface
Returns:
Throws:
SshException

cancelRemoteForwarding

public boolean cancelRemoteForwarding(java.lang.String bindAddress,
                                      int bindPort)
                               throws SshException
The bindAddress is ignored since the SSH1 protocol does not support setting of the bind address.

Specified by:
cancelRemoteForwarding in interface SshClient
Parameters:
bindAddress - the address that the remote computer is listening on.
bindPort - the port that the remote computer is listening on.
Throws:
SshException

disconnect

public void disconnect()
Description copied from interface: SshClient
Disconnect from the remote computer.

Specified by:
disconnect in interface SshClient

isConnected

public boolean isConnected()
Description copied from interface: SshClient
Evaluate whether the connection is still alive.

Specified by:
isConnected in interface SshClient
Returns:
true if connected, otherwise false

getUsername

public java.lang.String getUsername()
Description copied from interface: SshClient
Return the username used for this connection

Specified by:
getUsername in interface SshClient
Returns:
the users name

duplicate

public SshClient duplicate()
                    throws SshException
Description copied from interface: SshClient
Create an identical version of an SshClient using cached authentication information and the SshTransport duplicate method.

Specified by:
duplicate in interface SshClient
Returns:
Throws:
SshException

getContext

public SshContext getContext()
Description copied from interface: SshClient
Get the context that created this client.

Specified by:
getContext in interface SshClient
Returns:

getChannelCount

public int getChannelCount()
Description copied from interface: SshClient
Get the number of active channels.

Specified by:
getChannelCount in interface SshClient
Returns:

getVersion

public int getVersion()
Description copied from interface: SshClient
Returns the version for this client. The value will be either 1 for SSH1 or 2 for SSH2.

Specified by:
getVersion in interface SshClient
Returns:
int

isBuffered

public boolean isBuffered()
Description copied from interface: SshClient
Identifies whether this client is in buffered mode

Specified by:
isBuffered in interface SshClient
Returns:
boolean

toString

public java.lang.String toString()


Copyright © 2003 3SP LTD. All Rights Reserved.