/* GNU General Public License version 3 notice Copyright (C) 2012 Mihawk . All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see < http://www.gnu.org/licenses/ >. */ /* SSH client for connecting to QWNET central */ #ifndef SSHCLIENT_H #define SSHCLIENT_H #include #include class QProcess; class QDateTime; class QStringList; class App; class SshClient : public QObject { Q_OBJECT public: enum Error { NoError, ConnectionTimedOutError }; explicit SshClient(App* app, QObject *parent = 0); ~SshClient(); bool connectToHost(const QString& user, const QString &host); bool isConnected() const; void disconnectFromHost(); void write(const QString& data); signals: void error(Error errorCode); void connected(); protected: void timerEvent(QTimerEvent *e); private slots: void read(); void exited(int exitCode); private: App* myApp; QProcess* myProcess; QRegExp* myCommandRegex; bool myConnectedFlag; int myConnectionTimerID; int myPingTimerID; int myPongTimerID; QStringList* myClients; QString myUsername; QString myHostname; void parse(const QDateTime& time, const QString& command, const QString& commandData); void ping(); void pong(); void reconnect(); }; #endif // SSHCLIENT_H