Rabbit Remote Control 0.1.0-bate8
Loading...
Searching...
No Matches
PluginWakeOnLan.cpp
1// Author: Kang Lin <kl222@126.com>
2
3#ifdef HAVE_PCAPPLUSPLUS
4 #include "PcapPlusPlusVersion.h"
5 #include "PcapDevice.h"
6 #include <Logger.h>
7 #include <QLoggingCategory>
8 static Q_LOGGING_CATEGORY(logPcpp, "WOL.PCPP")
9 void Pcpp_Logger(pcpp::Logger::LogLevel logLevel,
10 const std::string& logMessage,
11 const std::string& file,
12 const std::string& method,
13 const int line)
14 {
15 switch(logLevel)
16 {
17 case pcpp::Logger::LogLevel::Debug:
18 qDebug(logPcpp) << logMessage.c_str();
19 break;
20 case pcpp::Logger::LogLevel::Info:
21 qInfo(logPcpp) << logMessage.c_str();
22 break;
23 case pcpp::Logger::LogLevel::Error:
24 qCritical(logPcpp) << logMessage.c_str();
25 break;
26 default:
27 break;
28 }
29 }
30#endif
31
32#include <QLoggingCategory>
33#include <QDir>
34
35#include "PluginWakeOnLan.h"
36#include "OperateWakeOnLan.h"
37
38static Q_LOGGING_CATEGORY(log, "WakeOnLan.Plugin")
39CPluginWakeOnLan::CPluginWakeOnLan(QObject *parent)
40 : CPlugin{parent}
41 , m_pOperate(nullptr)
42{
43#ifdef HAVE_PCAPPLUSPLUS
44 pcpp::Logger::getInstance().setLogPrinter(Pcpp_Logger);
45 pcpp::Logger::getInstance().setAllModulesToLogLevel(
46 pcpp::Logger::LogLevel::Debug);
47 // suppressing errors to avoid cluttering stdout
48 pcpp::Logger::getInstance().enableLogs();
49 pcpp::Logger::getInstance().setLogLevel(
50 pcpp::LogModule::PcapLogModuleLiveDevice, pcpp::Logger::LogLevel::Info);
51#endif
52}
53
54CPluginWakeOnLan::~CPluginWakeOnLan()
55{
56 qDebug(log) << "CPluginWakeOnLan::~CPluginWakeOnLan()";
57}
58
59const CPlugin::TYPE CPluginWakeOnLan::Type() const
60{
61 return TYPE::NetworkTools;
62}
63
64const QString CPluginWakeOnLan::Name() const
65{
66 return "WakeOnLan";
67}
68
69const QString CPluginWakeOnLan::DisplayName() const
70{
71 return tr("Wake on lan");
72}
73
74const QString CPluginWakeOnLan::Description() const
75{
76 return tr("Wake on lan");
77}
78
79const QIcon CPluginWakeOnLan::Icon() const
80{
81 return QIcon::fromTheme("lan");
82}
83
84const QString CPluginWakeOnLan::Version() const
85{
86 return PluginWakeOnLan_VERSION;
87}
88
89const QString CPluginWakeOnLan::Details() const
90{
91 QString szDetails;
92 szDetails += "- " + tr("Dependency libraries") + "\n";
93#ifdef HAVE_PCAPPLUSPLUS
94 szDetails += " - PcapPlusPlus";
95 szDetails += "\n";
96 szDetails += " - " + tr("version: ")
97 + pcpp::getPcapPlusPlusVersionFull().c_str();
98 szDetails += "\n";
99 szDetails += " - " + tr("Pcap lib version info: ")
100 + pcpp::IPcapDevice::getPcapLibVersionInfo().c_str();
101#endif
102 return szDetails;
103}
104
106{
107 if(!m_pOperate) {
108 m_pOperate = CPlugin::CreateOperate(szId, para);
109 if(!m_pOperate) return m_pOperate;
110
111 QString szFile = m_pOperate->GetSettingsFile();
112 QDir d(szFile);
113 if(!d.exists(szFile)) return m_pOperate;
114 int nRet = false;
115 //bRet = m_pOperate->Load(szFile);
116 bool bRet = QMetaObject::invokeMethod(
117 m_pOperate,
118 "Load",
119 Qt::DirectConnection,
120 Q_RETURN_ARG(int, nRet),
121 Q_ARG(QString, szFile));
122 if(!bRet) {
123 qCritical(log) << "Call" << m_pOperate->metaObject()->className()
124 + QString("::") + "Load(QString szFile) fail." << szFile;
125 return nullptr;
126 }
127 if(nRet) {
128 qCritical(log) << "Load parameter fail" << nRet;
129 DeleteOperate(m_pOperate);
130 return nullptr;
131 }
132 }
133 return m_pOperate;
134}
135
136COperate* CPluginWakeOnLan::OnCreateOperate(const QString &szId)
137{
138 qDebug(log) << Q_FUNC_INFO;
139 if(Id() == szId)
140 {
141 return new COperateWakeOnLan(this);
142 }
143 return nullptr;
144}
145
147{
148 qDebug(log) << Q_FUNC_INFO;
149 Q_ASSERT(m_pOperate == p);
150 m_pOperate = nullptr;
151 return CPlugin::DeleteOperate(p);
152}
153
154const QString CPluginWakeOnLan::Protocol() const
155{
156 return QString();
157}
Wake on lan operate interface.
Operate interface.
Definition Operate.h:51
Global parameters of plugins.
virtual const QString Details() const override
Display more information in About dialog or log.
virtual const QString Protocol() const override
Plugin Protocol.
virtual int DeleteOperate(COperate *p) override
Delete COperate.
virtual const QString DisplayName() const override
The plugin display name.
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 Version() const override
Version.
virtual const QString Description() const override
Plugin description.
virtual COperate * CreateOperate(const QString &szId, CParameterPlugin *para) override
New COperate instance.
Plugin interface.
Definition Plugin.h:15
virtual Q_INVOKABLE int DeleteOperate(COperate *p)
Delete COperate.
Definition Plugin.cpp:124
virtual const QString Id() const
ID. Default: Type() + ":" + Protocol() + ":" + Name()
Definition Plugin.cpp:71
virtual Q_INVOKABLE COperate * CreateOperate(const QString &szId, CParameterPlugin *para)
New COperate instance.
Definition Plugin.cpp:82