MCPcopy Create free account
hub / github.com/KangLin/RabbitRemoteControl / OnInit

Method OnInit

Plugins/FreeRDP/Client/ConnectLayerSSHTunnel.cpp:20–69  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18}
19
20int ConnectLayerSSHTunnel::OnInit(rdpContext *context)
21{
22 int nRet = 0;
23
24 m_pChannelSSH = new CChannelSSHTunnel(
25 &m_pParameter->m_Proxy.m_SSH, &m_pParameter->m_Net, m_pOperate);
26 if(!m_pChannelSSH)
27 return -1;
28 bool bRet = m_pChannelSSH->open(QIODevice::ReadWrite);
29 if(!bRet)
30 return -1;
31 if(SSH_INVALID_SOCKET == m_pChannelSSH->GetSocket()) {
32 qCritical(log) << "The socket is invalid";
33 return -1;
34 }
35 m_hSshSocket = WSACreateEvent();
36 if(!m_hSshSocket) {
37 qCritical(log) << "CreateEvent ssh socket event failed";
38 return -1;
39 }
40 nRet = WSAEventSelect(m_pChannelSSH->GetSocket(), m_hSshSocket, FD_READ | FD_CLOSE);
41 if(nRet)
42 return -1;
43 if(m_pParameter->m_Net.GetHost().isEmpty())
44 {
45 QString szErr;
46 szErr = tr("The server is empty, please input it");
47 qCritical(log) << szErr;
48 emit m_pOperate->sigShowMessageBox(tr("Error"), szErr, QMessageBox::Critical);
49 emit m_pOperate->sigError(-1, szErr.toStdString().c_str());
50 return -1;
51 }
52
53 auto &net = m_pParameter->m_Net;
54 auto settings = context->settings;
55 freerdp_settings_set_string(
56 settings, FreeRDP_ServerHostname,
57 net.GetHost().toStdString().c_str());
58 freerdp_settings_set_uint32(
59 settings, FreeRDP_ServerPort,
60 net.GetPort());
61
62 nRet = freerdp_client_start(context);
63 if(nRet)
64 {
65 qCritical(log) << "freerdp_client_start fail";
66 return -1;
67 }
68 return 0;
69}
70
71int ConnectLayerSSHTunnel::OnClean()
72{

Callers

nothing calls this directly

Calls 5

GetSocketMethod · 0.80
GetHostMethod · 0.80
openMethod · 0.45
isEmptyMethod · 0.45
GetPortMethod · 0.45

Tested by

no test coverage detected