Rabbit Remote Control 0.0.37
Loading...
Searching...
No Matches
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
Depend on information.
Operate interface.
Definition Operate.h:50
virtual const QString DisplayName() const override
The plugin display name.
virtual const TYPE Type() const override
[Clean resource]
virtual const QString Version() const override
Version.
virtual const QString Name() const override
This name must be the same as the project name (${PROJECT_NAME}). The translation file (${PROJECT_NAM...
virtual const QString Description() const override
Plugin description.
virtual const QString Details() const override
Show the plugin depends on the freerdp version.
virtual const QString Protocol() const override
Plugin Protocol.
virtual ~CPluginFreeRDP() override
[Initialize resource]
Plugin interface.
Definition Plugin.h:15
virtual const QString Id()
ID. Default: Type() + ":" + Protocol() + ":" + Name()
Definition Plugin.cpp:68