玉兔远程控制 0.0.36
载入中...
搜索中...
未找到
信号 | Public 成员函数 | Private 属性 | 所有成员列表
CSSHTunnelThread类 参考

实现通过本地 SOCKET 与 SSH 隧道转发数据。适用于库没有实现传输层接口,只有 socket 的情况。 更多...

#include <SSHTunnelThread.h>

类 CSSHTunnelThread 继承关系图:

信号

void sigServer (QString szHost, quint16 nPort)
 当 SOCKET 服务建立监听后触发,用于通知其它本地 SOCKET 可以连接它
 
void sigServer (QString szUnixDomainSocket)
 
void sigError (const int nError, const QString &szError=QString())
 
void sigDisconnect ()
 

Public 成员函数

 CSSHTunnelThread (CParameterSSHTunnel *parameter, CParameterNet *remote, CConnect *pConnect)
 
void run () override
 
void Exit ()
 

Private 属性

CConnectm_pConnect
 
CParameterSSHTunnelm_pParameter
 
CParameterNetm_pRemoteNet
 
bool m_bExit
 

详细描述

实现通过本地 SOCKET 与 SSH 隧道转发数据。适用于库没有实现传输层接口,只有 socket 的情况。

注解
当线程完成后,会自动删除实例对象。
#ifdef HAVE_LIBSSH
case CParameterProxy::TYPE::SSHTunnel:
{
// Start ssh thread
if(!m_pThread) {
// Don' t delete it, It deletes itself when it ends. See: CSSHTunnelThread::CSSHTunnelThread()
m_pThread = new CSSHTunnelThread(
&m_pParameter->m_Proxy.m_SSH, &m_pParameter->m_Net, this);
}
if(!m_pThread)
return OnInitReturnValue::Fail;
bool check = connect(m_pThread, SIGNAL(sigServer(QString, quint16)),
this, SLOT(slotConnectProxyServer(QString, quint16)));
Q_ASSERT(check);
#if defined(HAVE_UNIX_DOMAIN_SOCKET)
check = connect(m_pThread, SIGNAL(sigServer(QString)),
this, SLOT(slotConnectProxyServer(QString)));
Q_ASSERT(check);
#endif
check = connect(m_pThread, SIGNAL(sigError(int,QString)),
this, SIGNAL(sigError(int,QString)));
Q_ASSERT(check);
check = connect(m_pThread, SIGNAL(sigDisconnect()),
this, SIGNAL(sigDisconnect()));
Q_ASSERT(check);
m_pThread->start();
return OnInitReturnValue::NotUseOnProcess;
}
#endif // #ifdef HAVE_LIBSSH
实现通过本地 SOCKET 与 SSH 隧道转发数据。适用于库没有实现传输层接口,只有 socket 的情况。
void sigServer(QString szHost, quint16 nPort)
当 SOCKET 服务建立监听后触发,用于通知其它本地 SOCKET 可以连接它
参见
CChannelSSHTunnelForward

在文件 SSHTunnelThread.h25 行定义.

构造及析构函数说明

◆ ~CSSHTunnelThread()

CSSHTunnelThread::~CSSHTunnelThread ( )
virtual

在文件 SSHTunnelThread.cpp24 行定义.

成员函数说明

◆ Exit()

void CSSHTunnelThread::Exit ( )

在文件 SSHTunnelThread.cpp29 行定义.

◆ run()

void CSSHTunnelThread::run ( )
override

在文件 SSHTunnelThread.cpp34 行定义.

◆ sigServer

void CSSHTunnelThread::sigServer ( QString  szHost,
quint16  nPort 
)
signal

当 SOCKET 服务建立监听后触发,用于通知其它本地 SOCKET 可以连接它

void CConnectLibVNCServer::slotConnectProxyServer(QString szHost, quint16 nPort)
{
QString szErr;
auto &net = m_pParameter->m_Proxy.m_SSH.m_Net;
//qDebug(log) << "CConnectLibVNCServer::slotConnectServer" << nPort;
// Set server ip and port
m_pClient->serverHost = strdup(szHost.toStdString().c_str());
m_pClient->serverPort = nPort;
szErr = tr("Will connect to local socket server: %1:%2")
.arg(m_pClient->serverHost,
QString::number(m_pClient->serverPort));
qDebug(log) << szErr;
if(!rfbInitClient(m_pClient, nullptr, nullptr))
{
// Because delete m_pClient in rfbInitClient
m_pClient = nullptr;
QString szErr;
szErr = tr("Fail: Connect to %1:%2 <- %3:%4 <- %5:%6")
.arg(m_pParameter->m_Net.GetHost(),
QString::number(m_pParameter->m_Net.GetPort()),
net.GetHost(), QString::number(net.GetPort()),
szHost, QString::number(nPort)
);
qCritical(log) << szErr;
emit sigShowMessageBox(tr("Error"), szErr, QMessageBox::Critical);
return;
}
QString szInfo = QString("Connected to %1 <- %2:%3 <- %4:%5")
.arg(m_pClient->desktopName,
net.GetHost(), QString::number(net.GetPort()),
szHost, QString::number(nPort));
qInfo(log) << szInfo;
slotTimeOut();
emit sigSetDesktopSize(m_pClient->width, m_pClient->height);
emit sigServerName(m_pClient->desktopName);
emit sigInformation(szInfo);
emit sigConnected();
}
#if defined(HAVE_UNIX_DOMAIN_SOCKET)
{
QString szErr;
//qDebug(log) << "CConnectLibVNCServer::slotConnectServer" << szFile;
// Set server ip and port
m_pClient->serverHost = strdup(szFile.toStdString().c_str());
szErr = tr("Will connect to local socket server: ") + szFile;
qDebug(log) << szErr;
if(!rfbInitClient(m_pClient, nullptr, nullptr))
{
// Because delete m_pClient in rfbInitClient
m_pClient = nullptr;
QString szErr;
szErr = tr("Fail: Connect to %1:%2 with %3")
.arg(m_pParameter->m_Net.GetHost(),
QString::number(m_pParameter->m_Net.GetPort()),
szFile);
qCritical(log) << szErr;
emit sigShowMessageBox(tr("Error"), szErr, QMessageBox::Critical);
return;
}
QString szInfo = QString("Connected to ") + m_pClient->desktopName + " with " + szFile;
qInfo(log) << szInfo;
slotTimeOut();
emit sigSetDesktopSize(m_pClient->width, m_pClient->height);
emit sigServerName(m_pClient->desktopName);
emit sigInformation(szInfo);
emit sigConnected();
}
#endif
void slotConnectProxyServer(QString szHost, quint16 nPort)
[connect local socket server]

类成员变量说明

◆ m_bExit

bool CSSHTunnelThread::m_bExit
private

在文件 SSHTunnelThread.h54 行定义.

◆ m_pConnect

CConnect* CSSHTunnelThread::m_pConnect
private

在文件 SSHTunnelThread.h51 行定义.

◆ m_pParameter

CParameterSSHTunnel* CSSHTunnelThread::m_pParameter
private

在文件 SSHTunnelThread.h52 行定义.

◆ m_pRemoteNet

CParameterNet* CSSHTunnelThread::m_pRemoteNet
private

在文件 SSHTunnelThread.h53 行定义.


该类的文档由以下文件生成: