玉兔远程控制
0.1.0-bate11
Toggle main menu visibility
载入中...
搜索中...
未找到
Plugins
FreeRDP
Service
ServiceFreeRDP.cpp
1
// Author: Kang Lin <kl222@126.com>
2
3
#include "ServiceFreeRDP.h"
4
#include "ParameterServiceFreeRDP.h"
5
#ifdef HAVE_GUI
6
#include "FrmParameterFreeRDP.h"
7
#endif
8
9
CServiceFreeRDP::CServiceFreeRDP(
CPluginServiceFreeRDP
*plugin)
10
:
CService
(plugin),
11
m_Log(
"FreeRDP"
),
12
m_pSettings(nullptr),
13
m_pServer(nullptr),
14
m_bServerInit(false)
15
{
16
m_pPara =
new
CParameterServiceFreeRDP
(
this
);
17
}
18
19
CServiceFreeRDP::~CServiceFreeRDP()
20
{
21
}
22
23
int
CServiceFreeRDP::OnInit
()
24
{
25
int
nRet = 0;
26
shadow_subsystem_set_entry_builtin(NULL);
27
28
m_pServer = shadow_server_new();
29
if
(!m_pServer)
30
{
31
qCritical(m_Log) <<
"Server new failed"
;
32
return
-1;
33
}
34
35
SetParameters();
36
37
nRet = shadow_server_init(m_pServer);
38
if
(nRet < 0)
39
{
40
qCritical(m_Log) <<
"Server initialization failed."
;
41
return
nRet;
42
}
43
m_bServerInit =
true
;
44
45
if
((nRet = shadow_server_start(m_pServer)) < 0)
46
{
47
qCritical(m_Log) <<
"Failed to start server."
;
48
return
nRet;
49
}
50
51
// Don't use OnProcess (qt event loop)
52
// Because freerdp has new thread process loop
53
return
1;
54
}
55
56
int
CServiceFreeRDP::OnClean
()
57
{
58
int
nRet = 0;
59
60
if
(m_pServer)
61
{
62
if
(m_bServerInit)
63
shadow_server_uninit(m_pServer);
64
shadow_server_free(m_pServer);
65
m_pServer =
nullptr
;
66
}
67
68
return
nRet;
69
}
70
71
#ifdef HAVE_GUI
72
QWidget* CServiceFreeRDP::GetParameterWidget(QWidget *parent)
73
{
74
return
new
CFrmParameterFreeRDP
(
75
dynamic_cast<
CParameterServiceFreeRDP
*
>
(GetParameters()), parent);
76
}
77
#endif
78
79
int
CServiceFreeRDP::SetParameters()
80
{
81
CParameterServiceFreeRDP* p =
82
dynamic_cast<
CParameterServiceFreeRDP*
>
(GetParameters());
83
84
m_pSettings = m_pServer->settings;
85
m_pSettings->NlaSecurity = p->getNlaSecurity();
86
m_pSettings->TlsSecurity = p->getTlsSecurity();
87
m_pSettings->RdpSecurity = p->getRdpSecurity();
88
m_pSettings->UseRdpSecurityLayer = m_pSettings->RdpSecurity;
89
m_pSettings->ExtSecurity = p->getNlaExtSecurity();
90
if
(!p->getSamFile().isEmpty())
91
freerdp_settings_set_string(m_pSettings, FreeRDP_NtlmSamFile,
92
p->getSamFile().toStdString().c_str());
93
94
m_pServer->authentication = p->getAuthentication();
95
96
m_pServer->port = p->getPort();
97
m_pServer->mayView = p->getMayView();
98
m_pServer->mayInteract = p->getMayInteract();
99
100
return
0;
101
}
CFrmParameterFreeRDP
定义
FrmParameterFreeRDP.h:15
CParameterServiceFreeRDP
定义
ParameterServiceFreeRDP.h:9
CPluginServiceFreeRDP
定义
PluginServiceFreeRDP.h:9
CServiceFreeRDP::OnClean
virtual int OnClean() override
清理服务
定义
ServiceFreeRDP.cpp:56
CServiceFreeRDP::OnInit
virtual int OnInit() override
初始化服务
定义
ServiceFreeRDP.cpp:23
CService
服务接口。由具体的协议实现。此接口仅由插件实现。 支持非Qt事件循环。详见: Init() 、 slotProcess() 如果不启用非Qt事件循环。则 OnInit() 返回 > 0
定义
Service.h:38
作者:康林 (kl222@126.com)
版权所有(c) 康林工作室 保留所有权力