Rabbit Remote Control 0.0.36
Loading...
Searching...
No Matches
PluginFreeRDP.cpp
1// Author: Kang Lin <kl222@126.com>
2
3#include "PluginFreeRDP.h"
4#include "ConnecterFreeRDP.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 : CPluginClient(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 QString CPluginFreeRDP::Name() const
73{
74 return "FreeRDP";
75}
76
77const QString CPluginFreeRDP::DisplayName() const
78{
79 return tr("Free remote desktop");
80}
81
82const QString CPluginFreeRDP::Description() const
83{
84 return tr("RDP(Windows remote desktop Protocol): Access remote desktops such as windows.");
85}
86
87const QString CPluginFreeRDP::Protocol() const
88{
89 return "RDP";
90}
91
92const QIcon CPluginFreeRDP::Icon() const
93{
94 return QIcon::fromTheme("windows");
95}
96
97const QString CPluginFreeRDP::Version() const
98{
99 return PluginFreeDP_VERSION;
100}
101
105const QString CPluginFreeRDP::Details() const
106{
107 QString szDetails;
108 szDetails = "- " + tr("FreeRDP");
109 szDetails += "\n";
110 szDetails += " - " + tr("version: ");
111 szDetails += freerdp_get_version_string();
112 szDetails += "\n";
113 szDetails += " - " + tr("Build version: ");
114 szDetails += freerdp_get_build_revision();
115 szDetails += ":";
116 szDetails += freerdp_get_build_revision();
117 szDetails += "\n";
118#if FREERDP_VERSION_MAJOR < 3
119 szDetails += " - " + tr("Build date: ");
120 szDetails += freerdp_get_build_date();
121 szDetails += "\n";
122#endif
123 szDetails += " - ";
124 szDetails += freerdp_get_build_config();
125
126#ifdef HAVE_LIBSSH
127 CChannelSSHTunnel channel(nullptr, nullptr, nullptr);
128 szDetails += channel.GetDetails();
129#endif
130
131 return szDetails;
132}
133
134CConnecter* CPluginFreeRDP::OnCreateConnecter(const QString &szId)
135{
136 if(Id() == szId)
137 return new CConnecterFreeRDP(this);
138
139 return nullptr;
140}
ssh tunnel class
virtual QString GetDetails() override
Depend on information.
Connecter interface.
Definition Connecter.h:62
The plugin interface.
virtual const QString Id() const
ID. Default: Protocol() + ":" + Name()
virtual const QString DisplayName() const override
The plugin display name.
virtual const QString Version() const override
Version.
virtual const QString Name() const override
[Clean resource]
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]