[sip-comm-dev] SSH4SC Introduction and Update status


#1

Hi,

SSH4SC aims to provide SSH services integrated in SIP Communicator
An abstract of the project is available
here<http://jindal.shobhit.googlepages.com/gsoc07_sip_abstract>

An outline of the design
*-* Manage SSH type Accounts
The user will be able to create/store/delete SSH type accounts where he will
specify the details of the remote machine. ProtocolProviderFactory will
provide services for adding/removing/loading from storage of SSH Type
Accounts and ProtocolProviderService will manage the SSH
sessions(create/initialize/destroy)
-*Outlay
ProtocolProviderFactorySSHImpl.extends ProtocolProviderFactory
    - install/removeAccount -> SSHAccountID -> Collection of
registeredAccounts
    - loadAccount -> ProtocolProviderServiceSSHImpl
    - register/unregister-> connectAndLogin -> SSHSession -> JCraft SSH2
Library(JSch -> Session -> UserInfo)
    - initialize/shutdown resources
    - fireRegistrationStateChanged -> registrationListeners

*-* Status of Remote Machines
The remote machine when subscribed will be either in online(both
reachable[pinging] and SSH services enabled), offline(unreachable[not
pinging]) or unknown(reachable[pinging] but SSH services unreachable). The
machine will be added the Buddy List of the user via initializing Contact
and ContactGroup of SSH Type where the status of the machine will be shown
and status of the machine will be updated periodically.
-*Outlay
    - OperationSetPersistentPresenceSSHImpl
        - Persistent - false
        - supportedPresenceStatusSet -> online, offline, unknown
        - Resolved - false intially till the status of the remote machine is
known
        - initialize Contact/ContactGroup implmentation and add listeners
        - OperationSetPersistentPresenceSSHImpl
        - add/removeContactPresenceStatusListener
        - PublishPresenceStatus to fire and change in status of remote
machines

*-* Emulation of chat sessions and File Transfer
As chat sessions(emulated as SSH sessions) are started with the remote
machine, the messages from the users will be optionally expanded(macros) and
will be sent as commands to the remote server throught the JCraft SSH2
Library. OperationSets will be defined to support SSH functions which
include PersistentPresence, BasicInstantMessaging and FileTransfer.
-*Outlay
    - OperationSetPersistentPresenceSSHImpl
        - managing contacts/groups and their listeners

    - OperationSetBasicInstantMessagingSSHImpl
        - add/remove MessageListener
        - createMessage - > MessageSSHImpl
        - sendInstantMessage -> deliverMessage -> assertConnected ->
MessageSSHImpl
        - SSHMessageListener -> receiveInstantMessage

    - OperationSetFileTransferSSHImpl[Optional]
        - send/receive Files
        - relay files from the remote machine to other users

I would real like you to scrutinize the design plan

Presently I have created a basic framework for implementing the above
- SSH Account Registration Wizard [Completed]
- SSH Protocol Support [In progress]

Please find ssh4sc.tar.bz2 attached which includes
- Source code of Registration Wizard and Protocol Support
- Diffs of felix.client.run.properties and build.xml
- sc-bundles - protocol-ssh.jar and sshaccregwizz.jar
(The above are ready to be tested :slight_smile: )

The tutorial of how to implement new protocols was great and will like to
extend it to include creation of account registration wizard

lastly thanks a lot to Damian and Yana for their great support :slight_smile:

regards

ssh4sc.tar.bz2 (403 KB)

···

--
Shobhit Jindal


#2

Hi,

After an off list discussion we have decided to go for a slightly different
approach.
Will update the design and implementation shortly

regards

···

-
Shobhit Jindal

On 5/25/07, Shobhit Jindal <jindal.shobhit@gmail.com> wrote:

Hi,

SSH4SC aims to provide SSH services integrated in SIP Communicator
An abstract of the project is available here<http://jindal.shobhit.googlepages.com/gsoc07_sip_abstract>

An outline of the design
*-* Manage SSH type Accounts
The user will be able to create/store/delete SSH type accounts where he
will specify the details of the remote machine. ProtocolProviderFactory will
provide services for adding/removing/loading from storage of SSH Type
Accounts and ProtocolProviderService will manage the SSH
sessions(create/initialize/destroy)
-*Outlay
ProtocolProviderFactorySSHImpl.extends ProtocolProviderFactory
    - install/removeAccount -> SSHAccountID -> Collection of
registeredAccounts
    - loadAccount -> ProtocolProviderServiceSSHImpl
    - register/unregister-> connectAndLogin -> SSHSession -> JCraft SSH2
Library(JSch -> Session -> UserInfo)
    - initialize/shutdown resources
    - fireRegistrationStateChanged -> registrationListeners

*-* Status of Remote Machines
The remote machine when subscribed will be either in online(both
reachable[pinging] and SSH services enabled), offline(unreachable[not
pinging]) or unknown(reachable[pinging] but SSH services unreachable). The
machine will be added the Buddy List of the user via initializing Contact
and ContactGroup of SSH Type where the status of the machine will be shown
and status of the machine will be updated periodically.
-*Outlay
    - OperationSetPersistentPresenceSSHImpl
        - Persistent - false
        - supportedPresenceStatusSet -> online, offline, unknown
        - Resolved - false intially till the status of the remote machine
is known
        - initialize Contact/ContactGroup implmentation and add listeners
        - OperationSetPersistentPresenceSSHImpl
        - add/removeContactPresenceStatusListener
        - PublishPresenceStatus to fire and change in status of remote
machines

*-* Emulation of chat sessions and File Transfer
As chat sessions(emulated as SSH sessions) are started with the remote
machine, the messages from the users will be optionally expanded(macros) and
will be sent as commands to the remote server throught the JCraft SSH2
Library. OperationSets will be defined to support SSH functions which
include PersistentPresence, BasicInstantMessaging and FileTransfer.
-*Outlay
    - OperationSetPersistentPresenceSSHImpl
        - managing contacts/groups and their listeners

    - OperationSetBasicInstantMessagingSSHImpl
        - add/remove MessageListener
        - createMessage - > MessageSSHImpl
        - sendInstantMessage -> deliverMessage -> assertConnected ->
MessageSSHImpl
        - SSHMessageListener -> receiveInstantMessage

    - OperationSetFileTransferSSHImpl[Optional]
        - send/receive Files
        - relay files from the remote machine to other users

I would real like you to scrutinize the design plan

Presently I have created a basic framework for implementing the above
- SSH Account Registration Wizard [Completed]
- SSH Protocol Support [In progress]

Please find ssh4sc.tar.bz2 attached which includes
- Source code of Registration Wizard and Protocol Support
- Diffs of felix.client.run.properties and build.xml
- sc-bundles - protocol-ssh.jar and sshaccregwizz.jar
(The above are ready to be tested :slight_smile: )

The tutorial of how to implement new protocols was great and will like to
extend it to include creation of account registration wizard

lastly thanks a lot to Damian and Yana for their great support :slight_smile:

regards
--
Shobhit Jindal

--
Shobhit Jindal


#3

Hi,

Finally beta-1 of SSH Protocol Provider is out!
Please find it attached! :slight_smile:

I have tried it with some SSH Servers and it seems to work great.. so do
give it a try!
(It compiles fine with todays CVS snapshot, 13th June and an INSTALL file is
enclosed)

Earlier remote machines were treated as separate accounts but they are now
treated as contacts of one ssh account. There are some known issues/bugs
which have been discussed later in this mail.

While working on above I got the idea of SSH ALARMS, and here is an
introduction

ssh4sc.zip (567 KB)

···

***_***
Services running on remote machines need to monitored constantly and
immediate actions need to be taken when alerted by existing systems (NMSs,
Emails, Pagers etc) for any downtimes.

The idea is to monitor the service and popup a IM window when the service
comes down. A short summary of the present status will be provided and a
network administrator can right away start to work on the situation (
emulating chat sessions as ssh sessions )

To create an alarm, a user will provide a command (pointing to a script) and
a set of normal/abnormal codes/status messages along with a update Interval.
The remote machine will be regularly polled(as a daemon) and the return
values of script will be checked and matched. In an abnormal condition the
user will be immediately notified of the situation with an option to
cancel/continue the alarm.

The user can easily rectify the situation from the chat window itself :slight_smile:
***_***

The above seems more useful than file-transfer in context of an IM system..
do let me know what you think :slight_smile:

** Here is the known bugs list **

- commands like ping, man, less, clear etc freeze SC

- contacts are not removed cleanly from contactlist.xml after the account
has been deleted

- Icon(ssh-connecting.gif) is not shown correctly

- terminal type and update Interval time of contact are not restored to
custom values after a SC restart

- Weird problems with ssh servers of RedHat based machines
(some commands like date may terminate the session)

- color information is commands like ls are shown as junk characters

** Here is the issues list **

- no event dispatchers for the event when user clicks a contact(a ssh
session session should start now and IM window opens only when a successful
shell session have been established)
when user closes the window(the shell session should terminate now)

- multi-threading issues need to found and corrected :slight_smile:

- exit command presently exits its JSch session(though immediately a new
session is established for the next command)
It will close any other sessions associated with the remote machine and
ideally it should only close its shell channel

- severe limitation of command completion and older commands navigation
expected from a SSH client

- contact list -> contact -> user info -> should show configuration dialog
for contact

- redundant code will be refactored

I guess its all

-
Shobhit Jindal

On 5/28/07, Shobhit Jindal <jindal.shobhit@gmail.com> wrote:

Hi,

After an off list discussion we have decided to go for a slightly
different approach.
Will update the design and implementation shortly

regards
-
Shobhit Jindal

On 5/25/07, Shobhit Jindal <jindal.shobhit@gmail.com> wrote:
>
> Hi,
>
> SSH4SC aims to provide SSH services integrated in SIP Communicator
> An abstract of the project is available here<http://jindal.shobhit.googlepages.com/gsoc07_sip_abstract>
>
> An outline of the design
> *-* Manage SSH type Accounts
> The user will be able to create/store/delete SSH type accounts where he
> will specify the details of the remote machine. ProtocolProviderFactory will
> provide services for adding/removing/loading from storage of SSH Type
> Accounts and ProtocolProviderService will manage the SSH
> sessions(create/initialize/destroy)
> -*Outlay
> ProtocolProviderFactorySSHImpl.extends ProtocolProviderFactory
> - install/removeAccount -> SSHAccountID -> Collection of
> registeredAccounts
> - loadAccount -> ProtocolProviderServiceSSHImpl
> - register/unregister-> connectAndLogin -> SSHSession -> JCraft SSH2
> Library(JSch -> Session -> UserInfo)
> - initialize/shutdown resources
> - fireRegistrationStateChanged -> registrationListeners
>
> *-* Status of Remote Machines
> The remote machine when subscribed will be either in online(both
> reachable[pinging] and SSH services enabled), offline(unreachable[not
> pinging]) or unknown(reachable[pinging] but SSH services unreachable). The
> machine will be added the Buddy List of the user via initializing Contact
> and ContactGroup of SSH Type where the status of the machine will be shown
> and status of the machine will be updated periodically.
> -*Outlay
> - OperationSetPersistentPresenceSSHImpl
> - Persistent - false
> - supportedPresenceStatusSet -> online, offline, unknown
> - Resolved - false intially till the status of the remote
> machine is known
> - initialize Contact/ContactGroup implmentation and add
> listeners
> - OperationSetPersistentPresenceSSHImpl
> - add/removeContactPresenceStatusListener
> - PublishPresenceStatus to fire and change in status of remote
> machines
>
> *-* Emulation of chat sessions and File Transfer
> As chat sessions(emulated as SSH sessions) are started with the remote
> machine, the messages from the users will be optionally expanded(macros) and
> will be sent as commands to the remote server throught the JCraft SSH2
> Library. OperationSets will be defined to support SSH functions which
> include PersistentPresence, BasicInstantMessaging and FileTransfer.
> -*Outlay
> - OperationSetPersistentPresenceSSHImpl
> - managing contacts/groups and their listeners
>
> - OperationSetBasicInstantMessagingSSHImpl
> - add/remove MessageListener
> - createMessage - > MessageSSHImpl
> - sendInstantMessage -> deliverMessage -> assertConnected ->
> MessageSSHImpl
> - SSHMessageListener -> receiveInstantMessage
>
> - OperationSetFileTransferSSHImpl[Optional]
> - send/receive Files
> - relay files from the remote machine to other users
>
> I would real like you to scrutinize the design plan
>
> Presently I have created a basic framework for implementing the above
> - SSH Account Registration Wizard [Completed]
> - SSH Protocol Support [In progress]
>
> Please find ssh4sc.tar.bz2 attached which includes
> - Source code of Registration Wizard and Protocol Support
> - Diffs of felix.client.run.properties and build.xml
> - sc-bundles - protocol-ssh.jar and sshaccregwizz.jar
> (The above are ready to be tested :slight_smile: )
>
> The tutorial of how to implement new protocols was great and will like
> to extend it to include creation of account registration wizard
>
> lastly thanks a lot to Damian and Yana for their great support :slight_smile:
>
> regards
> --
> Shobhit Jindal
>

--
Shobhit Jindal