diff options
Diffstat (limited to 'src/protocol')
-rw-r--r-- | src/protocol/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/protocol/fqterm_local_socket.cpp | 81 | ||||
-rw-r--r-- | src/protocol/fqterm_local_socket.h | 34 | ||||
-rw-r--r-- | src/protocol/fqterm_socket.cpp | 129 | ||||
-rw-r--r-- | src/protocol/fqterm_socket.h | 44 | ||||
-rw-r--r-- | src/protocol/fqterm_telnet_socket.cpp | 55 | ||||
-rw-r--r-- | src/protocol/fqterm_telnet_socket.h | 26 |
7 files changed, 200 insertions, 173 deletions
diff --git a/src/protocol/CMakeLists.txt b/src/protocol/CMakeLists.txt index c515590..fd0f9c9 100644 --- a/src/protocol/CMakeLists.txt +++ b/src/protocol/CMakeLists.txt @@ -1,6 +1,10 @@ set(export_SRCS fqterm_socket.cpp fqterm_socket.h + fqterm_telnet_socket.cpp + fqterm_telnet_socket.h + fqterm_local_socket.cpp + fqterm_local_socket.h fqterm_ssh_socket.h fqterm_ssh_socket.cpp ) diff --git a/src/protocol/fqterm_local_socket.cpp b/src/protocol/fqterm_local_socket.cpp new file mode 100644 index 0000000..e15f8d9 --- /dev/null +++ b/src/protocol/fqterm_local_socket.cpp @@ -0,0 +1,81 @@ +#include "fqterm.h" +#include "fqterm_local_socket.h" + +namespace FQTerm { + +FQTermLocalSocket::FQTermLocalSocket( const QString& shell_bin ) : shell_bin_(shell_bin) +{ + shell_process_ = new QProcess(); + shell_process_->setProcessChannelMode(QProcess::MergedChannels); + FQ_VERIFY(connect(shell_process_, SIGNAL(started()), this, SIGNAL(connected()))); + FQ_VERIFY(connect(shell_process_, SIGNAL(stateChanged(QProcess::ProcessState)), this , SLOT(stateChanged(QProcess::ProcessState)))); + FQ_VERIFY(connect(shell_process_, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(finished(int, QProcess::ExitStatus)))); + //FQ_VERIFY(connect(shell_process_, SIGNAL(delayedCloseFinished()), this, SIGNAL(delayedCloseFinished()))); + FQ_VERIFY(connect(shell_process_, SIGNAL(readyRead()), this, SIGNAL(readyRead()))); + //TODO: Error + //FQ_VERIFY(connect(shell_process_, SIGNAL(error(QAbstractSocket::SocketError)), this, SIGNAL(error(QAbstractSocket::SocketError)))); + //FQ_VERIFY(connect(shell_process_, SIGNAL(socketState(int)), this, SIGNAL(socketState(int)))); +} + +FQTermLocalSocket::~FQTermLocalSocket() +{ + delete shell_process_; +} + +void FQTermLocalSocket::connectToHost( const QString &host, quint16 port ) +{ + shell_process_->start("", QIODevice::ReadWrite | QIODevice::Unbuffered); +} + +void FQTermLocalSocket::close() +{ + shell_process_->close(); +} + +QByteArray FQTermLocalSocket::readBlock( unsigned long maxlen ) +{ + return shell_process_->read(maxlen); +} + +long FQTermLocalSocket::writeBlock( const QByteArray &data ) +{ + int count = shell_process_->write(data); + + //char c; +// shell_process_->getChar(&c); +// shell_process_->ungetChar(c); + if (bytesAvailable()) + { + emit readyRead(); + } + return count; +} + +unsigned long FQTermLocalSocket::bytesAvailable() +{ + return shell_process_->bytesAvailable(); +} + +void FQTermLocalSocket::finished( int exitCode, QProcess::ExitStatus exitStatus ) +{ + emit connectionClosed(); +} +void FQTermLocalSocket::stateChanged(QProcess::ProcessState newState) +{ + switch(newState) + { + case QProcess::NotRunning: + break; + case QProcess::Starting: + emit hostFound(); + // shell_process_->write("dir\n"); + break; + case QProcess::Running: + break; + + } +} + +} + +#include "fqterm_local_socket.moc" diff --git a/src/protocol/fqterm_local_socket.h b/src/protocol/fqterm_local_socket.h new file mode 100644 index 0000000..87bd692 --- /dev/null +++ b/src/protocol/fqterm_local_socket.h @@ -0,0 +1,34 @@ +#ifndef FQTERM_LOCAL_SOCKET_H +#define FQTERM_LOCAL_SOCKET_H + +#include "fqterm_socket.h" + +namespace FQTerm { + +class FQTermLocalSocket: public FQTermSocket { + Q_OBJECT; +private: + QString shell_bin_; + QProcess* shell_process_; +public: + FQTermLocalSocket(const QString& shell_bin); + ~FQTermLocalSocket(); + void flush(){} + void setProxy(int nProxyType, bool bAuth, const QString &strProxyHost, + quint16 uProxyPort, const QString &strProxyUsr, + const QString &strProxyPwd){} + void connectToHost(const QString &host, quint16 port); + void close(); + QByteArray readBlock(unsigned long maxlen); + long writeBlock(const QByteArray &data); + unsigned long bytesAvailable(); + +public slots: + void stateChanged(QProcess::ProcessState newState); + void finished (int exitCode, QProcess::ExitStatus exitStatus); + +}; + +} + +#endif diff --git a/src/protocol/fqterm_socket.cpp b/src/protocol/fqterm_socket.cpp index 131044a..87d0bc3 100644 --- a/src/protocol/fqterm_socket.cpp +++ b/src/protocol/fqterm_socket.cpp @@ -538,135 +538,6 @@ static int parse_http_status_line(const char *line, const char } -//============================================================================== -//FQTermTelnetSocket -//============================================================================== - -FQTermTelnetSocket::FQTermTelnetSocket() - : FQTermSocket() { - private_socket_ = new FQTermSocketPrivate(); - FQ_VERIFY(connect(private_socket_, SIGNAL(connected()), this, SIGNAL(connected()))); - FQ_VERIFY(connect(private_socket_, SIGNAL(hostFound()), this, SIGNAL(hostFound()))); - FQ_VERIFY(connect(private_socket_, SIGNAL(connectionClosed()), this, SIGNAL(connectionClosed()))); - FQ_VERIFY(connect(private_socket_, SIGNAL(delayedCloseFinished()), - this, SIGNAL(delayedCloseFinished()))); - FQ_VERIFY(connect(private_socket_, SIGNAL(readyRead()), this, SIGNAL(readyRead()))); - FQ_VERIFY(connect(private_socket_, SIGNAL(error(QAbstractSocket::SocketError)), this, SIGNAL(error(QAbstractSocket::SocketError)))); - FQ_VERIFY(connect(private_socket_, SIGNAL(socketState(int)), this, SIGNAL(socketState(int)))); -} - -FQTermTelnetSocket::~FQTermTelnetSocket() { - delete private_socket_; -} - -void FQTermTelnetSocket::flush() { - private_socket_->flush(); -} - -void FQTermTelnetSocket::setProxy(int nProxyType, bool bAuth, - const QString &strProxyHost, - quint16 uProxyPort, - const QString &strProxyUsr, - const QString &strProxyPwd) { - private_socket_->setProxy(nProxyType, bAuth, strProxyHost, uProxyPort, strProxyUsr, - strProxyPwd); -} - -void FQTermTelnetSocket::connectToHost(const QString &host, quint16 port) { - private_socket_->connectToHost(host, port); -} - -void FQTermTelnetSocket::close() { - private_socket_->close(); -} - -QByteArray FQTermTelnetSocket::readBlock(unsigned long maxlen) { - return private_socket_->readBlock(maxlen); -} - -long FQTermTelnetSocket::writeBlock(const QByteArray &data) { - return private_socket_->writeBlock(data); -} - -unsigned long FQTermTelnetSocket::bytesAvailable() { - return private_socket_->bytesAvailable(); -} - - -FQTermLocalSocket::FQTermLocalSocket( const QString& shell_bin ) : shell_bin_(shell_bin) -{ - shell_process_ = new QProcess(); - shell_process_->setProcessChannelMode(QProcess::MergedChannels); - FQ_VERIFY(connect(shell_process_, SIGNAL(started()), this, SIGNAL(connected()))); - FQ_VERIFY(connect(shell_process_, SIGNAL(stateChanged(QProcess::ProcessState)), this , SLOT(stateChanged(QProcess::ProcessState)))); - FQ_VERIFY(connect(shell_process_, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(finished(int, QProcess::ExitStatus)))); - //FQ_VERIFY(connect(shell_process_, SIGNAL(delayedCloseFinished()), this, SIGNAL(delayedCloseFinished()))); - FQ_VERIFY(connect(shell_process_, SIGNAL(readyRead()), this, SIGNAL(readyRead()))); - //TODO: Error - //FQ_VERIFY(connect(shell_process_, SIGNAL(error(QAbstractSocket::SocketError)), this, SIGNAL(error(QAbstractSocket::SocketError)))); - //FQ_VERIFY(connect(shell_process_, SIGNAL(socketState(int)), this, SIGNAL(socketState(int)))); -} - -FQTermLocalSocket::~FQTermLocalSocket() -{ - delete shell_process_; -} - -void FQTermLocalSocket::connectToHost( const QString &host, quint16 port ) -{ - shell_process_->start("E:/yxl/test.exe"/*C:/Windows/System32/cmd.exeshell_bin*/, QIODevice::ReadWrite | QIODevice::Unbuffered); -} - -void FQTermLocalSocket::close() -{ - shell_process_->close(); -} - -QByteArray FQTermLocalSocket::readBlock( unsigned long maxlen ) -{ - return shell_process_->read(maxlen); -} - -long FQTermLocalSocket::writeBlock( const QByteArray &data ) -{ - int count = shell_process_->write(data); - - //char c; -// shell_process_->getChar(&c); -// shell_process_->ungetChar(c); - if (bytesAvailable()) - { - emit readyRead(); - } - return count; -} - -unsigned long FQTermLocalSocket::bytesAvailable() -{ - return shell_process_->bytesAvailable(); -} - -void FQTermLocalSocket::finished( int exitCode, QProcess::ExitStatus exitStatus ) -{ - emit connectionClosed(); -} -void FQTermLocalSocket::stateChanged(QProcess::ProcessState newState) -{ - switch(newState) - { - case QProcess::NotRunning: - break; - case QProcess::Starting: - emit hostFound(); - shell_process_->write("dir\n"); - break; - case QProcess::Running: - break; - - } -} - - } // namespace FQTerm #include "fqterm_socket.moc" diff --git a/src/protocol/fqterm_socket.h b/src/protocol/fqterm_socket.h index 2d6240b..11112c3 100644 --- a/src/protocol/fqterm_socket.h +++ b/src/protocol/fqterm_socket.h @@ -146,50 +146,6 @@ class FQTermSocket: public QObject { void requestUserPwd(QString *user, QString *pwd, bool *isOK); }; -class FQTermTelnetSocket: public FQTermSocket { - private: - FQTermSocketPrivate *private_socket_; - - public: - FQTermTelnetSocket(); - - ~FQTermTelnetSocket(); - - void flush(); - void setProxy(int nProxyType, bool bAuth, const QString &strProxyHost, - quint16 uProxyPort, const QString &strProxyUsr, - const QString &strProxyPwd); - void connectToHost(const QString &host, quint16 port); - void close(); - QByteArray readBlock(unsigned long maxlen); - long writeBlock(const QByteArray &data); - unsigned long bytesAvailable(); -}; - -class FQTermLocalSocket: public FQTermSocket { - Q_OBJECT; -private: - QString shell_bin_; - QProcess* shell_process_; -public: - FQTermLocalSocket(const QString& shell_bin); - ~FQTermLocalSocket(); - void flush(){} - void setProxy(int nProxyType, bool bAuth, const QString &strProxyHost, - quint16 uProxyPort, const QString &strProxyUsr, - const QString &strProxyPwd){} - void connectToHost(const QString &host, quint16 port); - void close(); - QByteArray readBlock(unsigned long maxlen); - long writeBlock(const QByteArray &data); - unsigned long bytesAvailable(); - -public slots: - void stateChanged(QProcess::ProcessState newState); - void finished (int exitCode, QProcess::ExitStatus exitStatus); -}; - - } // namespace FQTerm diff --git a/src/protocol/fqterm_telnet_socket.cpp b/src/protocol/fqterm_telnet_socket.cpp new file mode 100644 index 0000000..af04a8c --- /dev/null +++ b/src/protocol/fqterm_telnet_socket.cpp @@ -0,0 +1,55 @@ +#include "fqterm.h" +#include "fqterm_telnet_socket.h" + +namespace FQTerm { +FQTermTelnetSocket::FQTermTelnetSocket() + : FQTermSocket() { + private_socket_ = new FQTermSocketPrivate(); + FQ_VERIFY(connect(private_socket_, SIGNAL(connected()), this, SIGNAL(connected()))); + FQ_VERIFY(connect(private_socket_, SIGNAL(hostFound()), this, SIGNAL(hostFound()))); + FQ_VERIFY(connect(private_socket_, SIGNAL(connectionClosed()), this, SIGNAL(connectionClosed()))); + FQ_VERIFY(connect(private_socket_, SIGNAL(delayedCloseFinished()), + this, SIGNAL(delayedCloseFinished()))); + FQ_VERIFY(connect(private_socket_, SIGNAL(readyRead()), this, SIGNAL(readyRead()))); + FQ_VERIFY(connect(private_socket_, SIGNAL(error(QAbstractSocket::SocketError)), this, SIGNAL(error(QAbstractSocket::SocketError)))); + FQ_VERIFY(connect(private_socket_, SIGNAL(socketState(int)), this, SIGNAL(socketState(int)))); +} + +FQTermTelnetSocket::~FQTermTelnetSocket() { + delete private_socket_; +} + +void FQTermTelnetSocket::flush() { + private_socket_->flush(); +} + +void FQTermTelnetSocket::setProxy(int nProxyType, bool bAuth, + const QString &strProxyHost, + quint16 uProxyPort, + const QString &strProxyUsr, + const QString &strProxyPwd) { + private_socket_->setProxy(nProxyType, bAuth, strProxyHost, uProxyPort, strProxyUsr, + strProxyPwd); +} + +void FQTermTelnetSocket::connectToHost(const QString &host, quint16 port) { + private_socket_->connectToHost(host, port); +} + +void FQTermTelnetSocket::close() { + private_socket_->close(); +} + +QByteArray FQTermTelnetSocket::readBlock(unsigned long maxlen) { + return private_socket_->readBlock(maxlen); +} + +long FQTermTelnetSocket::writeBlock(const QByteArray &data) { + return private_socket_->writeBlock(data); +} + +unsigned long FQTermTelnetSocket::bytesAvailable() { + return private_socket_->bytesAvailable(); +} + +} diff --git a/src/protocol/fqterm_telnet_socket.h b/src/protocol/fqterm_telnet_socket.h new file mode 100644 index 0000000..147a6cc --- /dev/null +++ b/src/protocol/fqterm_telnet_socket.h @@ -0,0 +1,26 @@ +#include "fqterm_socket.h" + +namespace FQTerm { + +class FQTermTelnetSocket: public FQTermSocket { + private: + FQTermSocketPrivate *private_socket_; + + public: + FQTermTelnetSocket(); + + ~FQTermTelnetSocket(); + + void flush(); + void setProxy(int nProxyType, bool bAuth, const QString &strProxyHost, + quint16 uProxyPort, const QString &strProxyUsr, + const QString &strProxyPwd); + void connectToHost(const QString &host, quint16 port); + void close(); + QByteArray readBlock(unsigned long maxlen); + long writeBlock(const QByteArray &data); + unsigned long bytesAvailable(); +}; + + +} |