From cbb190cd66de3d5af4324b9e6a9416c19b092518 Mon Sep 17 00:00:00 2001 From: Iru Dog Date: Thu, 6 Nov 2014 23:42:16 +0800 Subject: local socket: external program setting --- src/common/fqterm_path.cpp | 9 ++++++++- src/fqterm/main.cpp | 3 +-- src/protocol/fqterm_local_socket.cpp | 9 +++++++-- src/protocol/fqterm_local_socket.h | 5 +++-- src/terminal/internal/fqterm_telnet.cpp | 2 +- 5 files changed, 20 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/common/fqterm_path.cpp b/src/common/fqterm_path.cpp index 88ee385..3d192ee 100644 --- a/src/common/fqterm_path.cpp +++ b/src/common/fqterm_path.cpp @@ -33,9 +33,10 @@ #include "fqterm_param.h" #include "fqterm_path.h" #include "fqterm_font.h" +#include "../protocol/fqterm_local_socket.h" namespace FQTerm { - +QString* FQTermLocalSocket::shell_bin_ = NULL; static QString getUserDataDir(); static QString getInstallPrefix(); static QString getResourceDir(const QString &prefix); @@ -194,6 +195,12 @@ bool iniSettings() { return false; } + // fqterm local socket cmdline + QString externSSH = conf->getItemValue("global", "externSSH"); + if (!externSSH.isEmpty()) { + FQTermLocalSocket::shell_bin_ = new QString(externSSH); + } + delete conf; return true; } diff --git a/src/fqterm/main.cpp b/src/fqterm/main.cpp index 4f8a564..ff984ee 100644 --- a/src/fqterm/main.cpp +++ b/src/fqterm/main.cpp @@ -83,7 +83,6 @@ - int main(int argc, char **argv) { #if defined(WIN32) #else @@ -120,7 +119,7 @@ int main(int argc, char **argv) { // << dumpNormalString << "\nucs2 " << ucs2.size() << " " << ucs2.at(0).unicode() // << dumpNormalString << "\nutf8 " << dumpHexString << utf8c; //return 0; - + if (!iniSettings()) { return -1; } diff --git a/src/protocol/fqterm_local_socket.cpp b/src/protocol/fqterm_local_socket.cpp index e15f8d9..dbfb5b1 100644 --- a/src/protocol/fqterm_local_socket.cpp +++ b/src/protocol/fqterm_local_socket.cpp @@ -3,7 +3,7 @@ namespace FQTerm { -FQTermLocalSocket::FQTermLocalSocket( const QString& shell_bin ) : shell_bin_(shell_bin) +FQTermLocalSocket::FQTermLocalSocket() { shell_process_ = new QProcess(); shell_process_->setProcessChannelMode(QProcess::MergedChannels); @@ -24,7 +24,12 @@ FQTermLocalSocket::~FQTermLocalSocket() void FQTermLocalSocket::connectToHost( const QString &host, quint16 port ) { - shell_process_->start("", QIODevice::ReadWrite | QIODevice::Unbuffered); + if (shell_bin_!=NULL) { + shell_process_->start(FQTermLocalSocket::shell_bin_->arg(QString::number(port), host), + QIODevice::ReadWrite | QIODevice::Unbuffered); + } else { + emit connectionClosed(); + } } void FQTermLocalSocket::close() diff --git a/src/protocol/fqterm_local_socket.h b/src/protocol/fqterm_local_socket.h index 87bd692..edb0bad 100644 --- a/src/protocol/fqterm_local_socket.h +++ b/src/protocol/fqterm_local_socket.h @@ -8,10 +8,11 @@ namespace FQTerm { class FQTermLocalSocket: public FQTermSocket { Q_OBJECT; private: - QString shell_bin_; QProcess* shell_process_; public: - FQTermLocalSocket(const QString& shell_bin); + static QString *shell_bin_; + + FQTermLocalSocket(); ~FQTermLocalSocket(); void flush(){} void setProxy(int nProxyType, bool bAuth, const QString &strProxyHost, diff --git a/src/terminal/internal/fqterm_telnet.cpp b/src/terminal/internal/fqterm_telnet.cpp index c87865a..c629fa8 100644 --- a/src/terminal/internal/fqterm_telnet.cpp +++ b/src/terminal/internal/fqterm_telnet.cpp @@ -218,7 +218,7 @@ FQTermTelnet::FQTermTelnet(const QString &strTermType, int rows, int columns, FQ_VERIFY(connect(socket, SIGNAL(sshAuthOK()), this, SIGNAL(onSSHAuthOK()))); } else if (protocolType == 3) { - socket = new FQTermLocalSocket(""); + socket = new FQTermLocalSocket(); } else { socket = new FQTermTelnetSocket(); } -- cgit v1.2.3