玉兔远程控制 0.0.36
载入中...
搜索中...
未找到
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}
virtual QString GetDetails() override
依赖信息
连接者应用接口。
Definition Connecter.h:62
客户端插件接口。用于建立 CConnecter 实例,它由协议插件实现。
virtual const QString Id() const
标识。默认: Protocol() + ":" + Name()
virtual const QString DisplayName() const override
在界面上显示的名称
virtual const QString Version() const override
Version
virtual const QString Name() const override
[Clean resource]
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]