#ifndef SSHSOCKET_H #define SSHSOCKET_H #include "qsshsocket.h" #include #include namespace W { class SshSocket : public QObject { Q_OBJECT public: SshSocket(const QString& p_login, const QString& p_password, QObject* parent = 0); ~SshSocket(); enum Error { SocketError, SessionCreationError, ChannelCreationError, ReadError, WriteError, PasswordAuthenticationError }; void open(const QString& address, uint16_t port = 22); void close(); void execute(const QString& command); void interrupt(); bool isReady() const; void setLogin(const QString& lng); void setPassword(const QString& pass); signals: void opened(); void closed(); void error(W::SshSocket::Error code, const QString& message); void data(const QString& data); void finished(); private: void authorize(); enum State { Disconnected, Connecting, Connected, Authorizing, Authorized, Disconnecting }; QSshSocket* socket; QThread* thread; QString login; QString password; State state; private slots: void onSocketConnected(); void onSocketDisconnected(); void onSocketLoggedIn(); void onSocketError(QSshSocket::SshError p_error); void onSocketCommandData(QString p_data); void onSocketEOF(); }; } #endif // SSHSOCKET_H