玉兔远程控制 0.1.0-alpha.2
载入中...
搜索中...
未找到
PluginFreeRDP.cpp
1// Author: Kang Lin <kl222@126.com>
2
3#include "PluginFreeRDP.h"
4#include "OperateFreeRDP.h"
5#include "winpr/wlog.h"
6
7#include <QLoggingCategory>
8
9#ifdef HAVE_LIBSSH
10 #include "ChannelSSHTunnel.h"
11#endif
12
13#include "freerdp/version.h"
14
15static Q_LOGGING_CATEGORY(log, "FreeRDP.Plugin")
16static Q_LOGGING_CATEGORY(LoggerFreeRDP, "FreeRDP.Log")
17static Q_LOGGING_CATEGORY(LoggerFreeRDPTrace, "FreeRDP.Log.Trace")
18static Q_LOGGING_CATEGORY(LoggerFreeRDPFatal, "FreeRDP.Log.Fatal")
19
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}
64
67{
68 qDebug(log) << Q_FUNC_INFO;
69}
71
72const CPlugin::TYPE CPluginFreeRDP::Type() const
73{
74 return TYPE::RemoteDesktop;
75}
76
77const QString CPluginFreeRDP::Name() const
78{
79 return "FreeRDP";
80}
81
82const QString CPluginFreeRDP::DisplayName() const
83{
84 return tr("Free remote desktop protocol");
85}
86
87const 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
93const QString CPluginFreeRDP::Protocol() const
94{
95 return "RDP";
96}
97
98const QIcon CPluginFreeRDP::Icon() const
99{
100 return QIcon::fromTheme("windows");
101}
102
103const QString CPluginFreeRDP::Version() const
104{
105 return PluginFreeDP_VERSION;
106}
107
111const QString CPluginFreeRDP::Details() const
112{
113 QString szDetails;
114 szDetails = "- " + tr("FreeRDP");
115 szDetails += "\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
132#ifdef HAVE_LIBSSH
133 CChannelSSH channel(nullptr, nullptr);
134 szDetails += channel.GetDetails();
135#endif
136
137 return szDetails;
138}
139
140COperate *CPluginFreeRDP::OnCreateOperate(const QString &szId)
141{
142 if(Id() == szId)
143 return new COperateFreeRDP(this);
144
145 return nullptr;
146}
virtual QString GetDetails() override
依赖信息
操作接口。
Definition Operate.h:51
virtual const QString DisplayName() const override
在界面上显示的名称
virtual const TYPE Type() const override
[Clean resource]
virtual const QString Version() const override
Version
virtual const QString Name() const override
插件名,这个名一定要与工程名(${PROJECT_NAME})相同。 翻译文件(${PROJECT_NAME}_*.ts))名与其相关。
virtual const QString Description() const override
描述
virtual const QString Details() const override
Show the plugin depends on the freerdp version
virtual const QString Protocol() const override
协议
virtual ~CPluginFreeRDP() override
[Initialize resource]
插件接口
Definition Plugin.h:15
virtual const QString Id()
标识。默认: Type() + ":" + Protocol() + ":" + Name()
Definition Plugin.cpp:68