Rabbit Remote Control 0.1.0-bate10
Loading...
Searching...
No Matches
PluginFreeRDPServer.cpp
1// Author: Kang Lin <kl222@126.com>
2
3#include <freerdp/server/shadow.h>
4#include <freerdp/version.h>
5#include "winpr/wlog.h"
6
7#include <QLoggingCategory>
8
9#ifdef HAVE_LIBSSH
10#include "ChannelSSHTunnel.h"
11#endif
12
13#include "OperateFreeRDPServer.h"
14#include "PluginFreeRDPServer.h"
15
16static Q_LOGGING_CATEGORY(log, "FreeRDPServer.Plugin")
17static Q_LOGGING_CATEGORY(LoggerFreeRDP, "FreeRDP.Log")
18static Q_LOGGING_CATEGORY(LoggerFreeRDPTrace, "FreeRDP.Log.Trace")
19static Q_LOGGING_CATEGORY(LoggerFreeRDPFatal, "FreeRDP.Log.Fatal")
21 : CPlugin{parent}
22{
23 qDebug(log) << Q_FUNC_INFO;
24 qInfo(log) << "FreeRDP version:" << freerdp_get_version_string()
25 << "revision:" << freerdp_get_build_revision();
26
27 static wLogCallbacks* pCbLog = new wLogCallbacks;
28 BOOL bRet = WLog_SetLogAppenderType(WLog_GetRoot(), WLOG_APPENDER_CALLBACK);
29 if(bRet && pCbLog)
30 {
31 memset(pCbLog, 0, sizeof(wLogCallbacks));
32 pCbLog->message = [](const wLogMessage* msg)->BOOL{
33 switch(msg->Level)
34 {
35 case WLOG_TRACE:
36 qDebug(LoggerFreeRDPTrace) /*<< msg->PrefixString */ << msg->TextString;
37 break;
38 case WLOG_DEBUG:
39 qDebug(LoggerFreeRDP) /*<< msg->PrefixString */ << msg->TextString;
40 break;
41 case WLOG_INFO:
42 qInfo(LoggerFreeRDP) /*<< msg->PrefixString*/ << msg->TextString;
43 break;
44 case WLOG_WARN:
45 qWarning(LoggerFreeRDP) /*<< msg->PrefixString */<< msg->TextString;
46 case WLOG_ERROR:
47 qCritical(LoggerFreeRDP) /*<< msg->PrefixString*/ << msg->TextString;
48 break;
49 case WLOG_FATAL:
50 case WLOG_OFF:
51 qCritical(LoggerFreeRDPFatal) /*<< msg->PrefixString*/ << msg->TextString;
52 break;
53 default:
54 break;
55 }
56 return TRUE;
57 };
58 WLog_ConfigureAppender(WLog_GetLogAppender(WLog_GetRoot()), "callbacks", pCbLog);
59 }
60 WLog_SetLogLevel(WLog_GetRoot(), WLOG_TRACE);
61}
62
63CPluginFreeRDPServer::~CPluginFreeRDPServer()
64{
65 qDebug(log) << Q_FUNC_INFO;
66}
67
68const CPlugin::TYPE CPluginFreeRDPServer::Type() const
69{
70 return TYPE::Server;
71}
72
73const QString CPluginFreeRDPServer::Protocol() const
74{
75 return "RDP";
76}
77
78const QString CPluginFreeRDPServer::Name() const
79{
80 return "FreeRDPServer";
81}
82
84{
85 return "FreeRDP - Server";
86}
87
88const QString CPluginFreeRDPServer::Version() const
89{
90#ifdef FreeRDPServer_VERSION
91 return FreeRDPServer_VERSION;
92#else
93 return QString();
94#endif
95}
96
97const QIcon CPluginFreeRDPServer::Icon() const
98{
99 return QIcon::fromTheme("windows");
100}
101
102const QString CPluginFreeRDPServer::Details() const
103{
104 QString szDetails;
105 szDetails += "- " + tr("Dependency libraries") + "\n";
106 szDetails += " - " + tr("FreeRDP") + "\n";
107 szDetails += " - " + tr("version: ");
108 szDetails += freerdp_get_version_string();
109 szDetails += "\n";
110 szDetails += " - " + tr("Build version: ");
111 szDetails += freerdp_get_build_revision();
112 szDetails += ":";
113 szDetails += freerdp_get_build_revision();
114 szDetails += "\n";
115#if FREERDP_VERSION_MAJOR < 3
116 szDetails += " - " + tr("Build date: ");
117 szDetails += freerdp_get_build_date();
118 szDetails += "\n";
119#endif
120 szDetails += " - ";
121 szDetails += freerdp_get_build_config();
122 szDetails += "\n";
123
124#ifdef HAVE_LIBSSH
125 CChannelSSH channel(nullptr, nullptr);
126 szDetails += channel.GetDetails();
127#endif
128
129 return szDetails;
130}
131
132COperate *CPluginFreeRDPServer::OnCreateOperate(const QString &szId)
133{
134 if(szId != Id()) {
135 qCritical(log) << "Invalid ID:" << szId;
136 return nullptr;
137 }
138 return new COperateFreeRDPServer(this);
139}
virtual QString GetDetails() override
Depend on information.
Operate interface.
Definition Operate.h:51
virtual const QString Details() const override
Display more information in About dialog or log.
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 Protocol() const override
Plugin Protocol.
virtual const QString Version() const override
Version.
Plugin interface.
Definition Plugin.h:15
virtual const QString Id() const
ID. Default: Type() + ":" + Protocol() + ":" + Name()
Definition Plugin.cpp:71