玉兔远程控制
0.1.0-bate11
Toggle main menu visibility
载入中...
搜索中...
未找到
Plugins
FreeRDP
Server
BackendFreeRDPServer.cpp
1
// Author: Kang Lin <kl222@126.com>
2
3
#include <QLoggingCategory>
4
#include "ParameterFreeRDPServer.h"
5
#include "BackendFreeRDPServer.h"
6
7
static
Q_LOGGING_CATEGORY(log,
"FreeRDPServer.Backend"
)
8
CBackendFreeRDPServer
::
CBackendFreeRDPServer
(
9
COperateFreeRDPServer
* pOperate,
bool
bStopSignal)
10
:
CBackendServer
(pOperate, bStopSignal)
11
, m_pPara(pOperate->GetParameter())
12
, m_pSettings(
nullptr
)
13
, m_pServer(
nullptr
)
14
, m_bServerInit(false)
15
{
16
qDebug(log) << Q_FUNC_INFO;
17
}
18
19
CBackendFreeRDPServer::~CBackendFreeRDPServer()
20
{
21
qDebug(log) << Q_FUNC_INFO;
22
}
23
24
int
CBackendFreeRDPServer::WakeUp
()
25
{
26
return
0;
27
}
28
45
CBackend::OnInitReturnValue
CBackendFreeRDPServer::OnInit
()
46
{
47
shadow_subsystem_set_entry_builtin(NULL);
48
49
m_pServer = shadow_server_new();
50
if
(!m_pServer)
51
{
52
qCritical(log) <<
"Server new failed"
;
53
return
OnInitReturnValue::Fail;
54
}
55
56
SetParameters();
57
58
int
nRet = shadow_server_init(m_pServer);
59
if
(nRet < 0)
60
{
61
qCritical(log) <<
"Server initialization failed:"
<< nRet;
62
return
OnInitReturnValue::Fail;
63
}
64
m_bServerInit =
true
;
65
66
if
((nRet = shadow_server_start(m_pServer)) < 0)
67
{
68
qCritical(log) <<
"Failed to start server:"
<< nRet;
69
return
OnInitReturnValue::Fail;
70
}
71
72
// Don't use OnProcess (qt event loop)
73
// Because freerdp has new thread process loop
74
return
OnInitReturnValue::NotUseOnProcess;
75
}
76
77
int
CBackendFreeRDPServer::OnClean
()
78
{
79
int
nRet = 0;
80
if
(m_pServer)
81
{
82
if
(m_bServerInit)
83
shadow_server_uninit(m_pServer);
84
shadow_server_free(m_pServer);
85
m_pServer =
nullptr
;
86
}
87
88
return
nRet;
89
}
90
106
int
CBackendFreeRDPServer::OnProcess
()
107
{
108
// TODO: add event dispatch (non-Qt event loop)
109
110
// TODO: When an error occurs. emit sigStop();
111
112
return
0;
113
}
114
115
int
CBackendFreeRDPServer::SetParameters()
116
{
117
m_pSettings = m_pServer->settings;
118
m_pSettings->NlaSecurity = m_pPara->getNlaSecurity();
119
m_pSettings->TlsSecurity = m_pPara->getTlsSecurity();
120
m_pSettings->RdpSecurity = m_pPara->getRdpSecurity();
121
m_pSettings->UseRdpSecurityLayer = m_pSettings->RdpSecurity;
122
m_pSettings->ExtSecurity = m_pPara->getNlaExtSecurity();
123
if
(!m_pPara->getSamFile().isEmpty())
124
freerdp_settings_set_string(m_pSettings, FreeRDP_NtlmSamFile,
125
m_pPara->getSamFile().toStdString().c_str());
126
127
m_pServer->authentication = m_pPara->getAuthentication();
128
129
m_pServer->port = m_pPara->m_Net.GetPort();
130
m_pServer->mayView = m_pPara->getMayView();
131
m_pServer->mayInteract = m_pPara->getMayInteract();
132
133
return
0;
134
}
135
136
void
CBackendFreeRDPServer::slotDisconnect(
const
QString &szIp,
const
quint16 port)
137
{
138
// TODO: Disconnect
139
}
CBackendFreeRDPServer
定义
BackendFreeRDPServer.h:11
CBackendFreeRDPServer::WakeUp
virtual int WakeUp() override
唤醒后台线程。
定义
BackendFreeRDPServer.cpp:24
CBackendFreeRDPServer::OnInit
virtual OnInitReturnValue OnInit() override
初始化
定义
BackendFreeRDPServer.cpp:45
CBackendFreeRDPServer::OnProcess
virtual int OnProcess() override
具体操作处理
定义
BackendFreeRDPServer.cpp:106
CBackendFreeRDPServer::OnClean
virtual int OnClean() override
清理
定义
BackendFreeRDPServer.cpp:77
CBackendServer
服务接口。它由协议插件实现。
定义
BackendServer.h:20
COperateFreeRDPServer
定义
OperateFreeRDPServer.h:9
作者:康林 (kl222@126.com)
版权所有(c) 康林工作室 保留所有权力