玉兔远程控制
0.1.0-bate11
Toggle main menu visibility
载入中...
搜索中...
未找到
Plugins
FreeRDP
Client
PluginFreeRDP.cpp
1
// Author: Kang Lin <kl222@126.com>
2
3
#include "PluginFreeRDP.h"
4
#include "winpr/wlog.h"
5
#include "freerdp/version.h"
6
7
#include <QLoggingCategory>
8
9
#ifdef HAVE_LIBSSH
10
#include "ChannelSSHTunnel.h"
11
#endif
12
13
#include "OperateFreeRDP.h"
14
15
static
Q_LOGGING_CATEGORY(log,
"FreeRDP.Plugin"
)
16
static Q_LOGGING_CATEGORY(LoggerFreeRDP,
"FreeRDP.Log"
)
17
static Q_LOGGING_CATEGORY(LoggerFreeRDPTrace,
"FreeRDP.Log.Trace"
)
18
static Q_LOGGING_CATEGORY(LoggerFreeRDPFatal,
"FreeRDP.Log.Fatal"
)
19
21
CPluginFreeRDP
::
CPluginFreeRDP
(QObject *parent)
22
: CPlugin(parent)
23
{
24
qDebug(log) << Q_FUNC_INFO;
25
qInfo(log) <<
"FreeRDP version:"
<< freerdp_get_version_string()
26
<<
"revision:"
<< freerdp_get_build_revision();
27
28
static
wLogCallbacks* pCbLog =
new
wLogCallbacks;
29
BOOL bRet = WLog_SetLogAppenderType(WLog_GetRoot(), WLOG_APPENDER_CALLBACK);
30
if
(bRet && pCbLog)
31
{
32
memset(pCbLog, 0,
sizeof
(wLogCallbacks));
33
pCbLog->message = [](
const
wLogMessage* msg)->BOOL{
34
switch
(msg->Level)
35
{
36
case
WLOG_TRACE:
37
qDebug(LoggerFreeRDPTrace)
/*<< msg->PrefixString */
<< msg->TextString;
38
break
;
39
case
WLOG_DEBUG:
40
qDebug(LoggerFreeRDP)
/*<< msg->PrefixString */
<< msg->TextString;
41
break
;
42
case
WLOG_INFO:
43
qInfo(LoggerFreeRDP)
/*<< msg->PrefixString*/
<< msg->TextString;
44
break
;
45
case
WLOG_WARN:
46
qWarning(LoggerFreeRDP)
/*<< msg->PrefixString */
<< msg->TextString;
47
case
WLOG_ERROR:
48
qCritical(LoggerFreeRDP)
/*<< msg->PrefixString*/
<< msg->TextString;
49
break
;
50
case
WLOG_FATAL:
51
case
WLOG_OFF:
52
qCritical(LoggerFreeRDPFatal)
/*<< msg->PrefixString*/
<< msg->TextString;
53
break
;
54
default
:
55
break
;
56
}
57
return
TRUE;
58
};
59
WLog_ConfigureAppender(WLog_GetLogAppender(WLog_GetRoot()),
"callbacks"
, pCbLog);
60
}
61
WLog_SetLogLevel(WLog_GetRoot(), WLOG_TRACE);
62
}
63
64
66
CPluginFreeRDP::~CPluginFreeRDP
()
67
{
68
qDebug(log) << Q_FUNC_INFO;
69
}
70
71
72
const
CPlugin::TYPE
CPluginFreeRDP::Type
()
const
73
{
74
return
TYPE::RemoteDesktop;
75
}
76
77
const
QString
CPluginFreeRDP::Name
()
const
78
{
79
return
"FreeRDP"
;
80
}
81
82
const
QString
CPluginFreeRDP::DisplayName
()
const
83
{
84
return
tr(
"Free remote desktop protocol"
);
85
}
86
87
const
QString
CPluginFreeRDP::Description
()
const
88
{
89
return
tr(
"RDP(Remote desktop Protocol): Access remote desktops such as windows."
) +
"\n"
90
+ tr(
"It uses FreeRDP: https://github.com/FreeRDP/FreeRDP/"
);
91
}
92
93
const
QString
CPluginFreeRDP::Protocol
()
const
94
{
95
return
"RDP"
;
96
}
97
98
const
QIcon CPluginFreeRDP::Icon()
const
99
{
100
return
QIcon::fromTheme(
"windows"
);
101
}
102
103
const
QString
CPluginFreeRDP::Version
()
const
104
{
105
return
PluginFreeDP_VERSION;
106
}
107
111
const
QString
CPluginFreeRDP::Details
()
const
112
{
113
QString szDetails;
114
szDetails +=
"- "
+ tr(
"Dependency libraries"
) +
"\n"
;
115
szDetails +=
" - "
+ tr(
"FreeRDP"
) +
"\n"
;
116
szDetails +=
" - "
+ tr(
"version: "
);
117
szDetails += freerdp_get_version_string();
118
szDetails +=
"\n"
;
119
szDetails +=
" - "
+ tr(
"Build version: "
);
120
szDetails += freerdp_get_build_revision();
121
szDetails +=
":"
;
122
szDetails += freerdp_get_build_revision();
123
szDetails +=
"\n"
;
124
#if FREERDP_VERSION_MAJOR < 3
125
szDetails +=
" - "
+ tr(
"Build date: "
);
126
szDetails += freerdp_get_build_date();
127
szDetails +=
"\n"
;
128
#endif
129
szDetails +=
" - "
;
130
szDetails += freerdp_get_build_config();
131
szDetails +=
"\n"
;
132
133
#ifdef HAVE_LIBSSH
134
CChannelSSH
channel(
nullptr
,
nullptr
);
135
szDetails += channel.
GetDetails
();
136
#endif
137
138
return
szDetails;
139
}
140
141
COperate
*CPluginFreeRDP::OnCreateOperate(
const
QString &szId)
142
{
143
if
(
Id
() == szId)
144
return
new
COperateFreeRDP
(
this
);
145
146
return
nullptr
;
147
}
CChannelSSH
定义
ChannelSSH.h:14
CChannelSSH::GetDetails
virtual QString GetDetails() override
依赖信息
定义
ChannelSSH.cpp:27
COperateFreeRDP
定义
OperateFreeRDP.h:9
COperate
操作接口。
定义
Operate.h:51
CPluginFreeRDP::CPluginFreeRDP
CPluginFreeRDP(QObject *parent=nullptr)
[Initialize resource]
定义
PluginFreeRDP.cpp:21
CPluginFreeRDP::DisplayName
virtual const QString DisplayName() const override
在界面上显示的名称
定义
PluginFreeRDP.cpp:82
CPluginFreeRDP::Type
virtual const TYPE Type() const override
[Clean resource]
定义
PluginFreeRDP.cpp:72
CPluginFreeRDP::Version
virtual const QString Version() const override
Version
定义
PluginFreeRDP.cpp:103
CPluginFreeRDP::Name
virtual const QString Name() const override
插件名,这个名一定要与工程名(${PROJECT_NAME})相同。 翻译文件(${PROJECT_NAME}_*.ts))名与其相关。
定义
PluginFreeRDP.cpp:77
CPluginFreeRDP::Description
virtual const QString Description() const override
描述
定义
PluginFreeRDP.cpp:87
CPluginFreeRDP::Details
virtual const QString Details() const override
Show the plugin depends on the freerdp version
定义
PluginFreeRDP.cpp:111
CPluginFreeRDP::Protocol
virtual const QString Protocol() const override
协议
定义
PluginFreeRDP.cpp:93
CPluginFreeRDP::~CPluginFreeRDP
virtual ~CPluginFreeRDP() override
[Initialize resource]
定义
PluginFreeRDP.cpp:66
CPlugin::Id
virtual const QString Id() const
标识。默认: Type() + ":" + Protocol() + ":" + Name()
定义
Plugin.cpp:71
作者:康林 (kl222@126.com)
版权所有(c) 康林工作室 保留所有权力