ne7ssh_connection.h

00001 /***************************************************************************
00002  *   Copyright (C) 2005-2007 by NetSieben Technologies INC                 *
00003  *   Author: Andrew Useckas                                                *
00004  *   Email: andrew@netsieben.com                                           *
00005  *                                                                         *
00006  *   Windows Port and bugfixes: Keef Aragon <keef@netsieben.com>           *
00007  *                                                                         *
00008  *   This program may be distributed under the terms of the Q Public       *
00009  *   License as defined by Trolltech AS of Norway and appearing in the     *
00010  *   file LICENSE.QPL included in the packaging of this file.              *
00011  *                                                                         *
00012  *   This program is distributed in the hope that it will be useful,       *
00013  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00014  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                  *
00015  ***************************************************************************/
00016 
00017 #ifndef NE7SSH_CONNECTION_H
00018 #define NE7SSH_CONNECTION_H
00019 
00020 #include "ne7ssh_transport.h"
00021 #include "ne7ssh_session.h"
00022 #include "ne7ssh_channel.h"
00023 #include "ne7ssh_keys.h"
00024 #include "crypt.h"
00025 #include "ne7ssh_types.h"
00026 #include "ne7ssh_string.h"
00027 #include "ne7ssh_sftp.h"
00028 
00029 
00033 class ne7ssh_connection
00034 {
00035   private:
00036     SOCKET sock;
00037     int thisChannel;
00038     ne7ssh_crypt *crypto;
00039     ne7ssh_transport *transport;
00040     ne7ssh_session *session;
00041     ne7ssh_channel *channel;
00042     Ne7sshSftp* sftp;
00043 
00044     Ne7ssh_Mutex mut;
00045     bool connected;
00046     bool cmdRunning;
00047     bool cmdClosed;
00048 
00049 
00054     bool checkRemoteVersion ();
00055 
00060     bool sendLocalVersion ();
00061 
00067     bool requestService (const char* service);
00068 
00075     bool authWithPassword (const char* username, const char* password);
00076 
00085     bool authWithKey (const char* username, const char* privKeyFileName);
00086 
00087   public:
00091     ne7ssh_connection();
00092 
00096     ~ne7ssh_connection();
00097 
00109     int connectWithPassword (uint32 channelID, const char *host, uint32 port, const char* username, const char* password, bool shell = true, int timeout = 0);
00110 
00122     int connectWithKey (uint32 channelID, const char *host, uint32 port, const char* username, const char* privKeyFileName, bool shell = true, int timeout = 0);
00123 
00128     SOCKET getSocket () { return sock; }
00129 
00133     void handleData ();
00134 
00139     void sendData (const char* data);
00140 
00144     void setChannelNo (int channelID) { thisChannel = channelID; }
00145 
00150     int getChannelNo () { return thisChannel; }
00151 
00156     bool data2Send () { return channel->data2Send(); }
00157 
00162     void sendData () { channel->sendAll (); }
00163 
00169     bool sendCmd (const char* cmd);
00170 
00176     bool sendClose ();
00177 
00182     bool isOpen () { return channel->isOpen(); }
00183 
00188     bool isConnected () { return connected; }
00189 
00194     Botan::SecureVector<Botan::byte>& getReceived () { return channel->getReceived(); }
00195                 
00200     bool getCmdComplete() { return channel->getCmdComplete(); }
00201 
00206     bool isCmdClosed() { return cmdClosed; }
00207 
00212     bool isRemoteShell () { return channel->isRemoteShell(); }
00213 
00218     bool isCmdRunning () { return cmdRunning; }
00219 
00224     Ne7sshSftp* startSftp ();
00225 
00230     bool isSftpActive ();
00231 };
00232 
00233 #endif

Generated on Tue May 5 14:10:41 2009 for ne7ssh.kdevelop by  doxygen 1.5.9