summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIru Dog <mytbk920423@gmail.com>2014-11-06 23:42:16 +0800
committerIru Dog <mytbk920423@gmail.com>2014-11-06 23:42:16 +0800
commitcbb190cd66de3d5af4324b9e6a9416c19b092518 (patch)
tree62d1f57856ba8dce3ec057001c3af39f0b73432e
parent68d84181d53cc1b3cfab0b9a1505a1599744991d (diff)
downloadfqterm-cbb190cd66de3d5af4324b9e6a9416c19b092518.tar.xz
local socket: external program setting
-rw-r--r--src/common/fqterm_path.cpp9
-rw-r--r--src/fqterm/main.cpp3
-rw-r--r--src/protocol/fqterm_local_socket.cpp9
-rw-r--r--src/protocol/fqterm_local_socket.h5
-rw-r--r--src/terminal/internal/fqterm_telnet.cpp2
5 files changed, 20 insertions, 8 deletions
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();
}