Rabbit Remote Control 0.1.0-bate4
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#ifdef HAVE_PCAPPLUSPLUS
93 szDetails = "- PcapPlusPlus";
94 szDetails += "\n";
95 szDetails += " - " + tr("version: ")
96 + pcpp::getPcapPlusPlusVersionFull().c_str();
97 szDetails += "\n";
98 szDetails += " - " + tr("Pcap lib version info: ")
99 + pcpp::IPcapDevice::getPcapLibVersionInfo().c_str();
100#endif
101 return szDetails;
102}
103
105{
106 if(!m_pOperate) {
107 m_pOperate = CPlugin::CreateOperate(szId, para);
108 if(!m_pOperate) return m_pOperate;
109
110 QString szFile = m_pOperate->GetSettingsFile();
111 QDir d(szFile);
112 if(!d.exists(szFile)) return m_pOperate;
113 int nRet = false;
114 //bRet = m_pOperate->Load(szFile);
115 bool bRet = QMetaObject::invokeMethod(
116 m_pOperate,
117 "Load",
118 Qt::DirectConnection,
119 Q_RETURN_ARG(int, nRet),
120 Q_ARG(QString, szFile));
121 if(!bRet) {
122 qCritical(log) << "Call" << m_pOperate->metaObject()->className()
123 + QString("::") + "Load(QString szFile) fail." << szFile;
124 return nullptr;
125 }
126 if(nRet) {
127 qCritical(log) << "Load parameter fail" << nRet;
128 DeleteOperate(m_pOperate);
129 return nullptr;
130 }
131 }
132 return m_pOperate;
133}
134
135COperate* CPluginWakeOnLan::OnCreateOperate(const QString &szId)
136{
137 qDebug(log) << Q_FUNC_INFO;
138 if(Id() == szId)
139 {
140 return new COperateWakeOnLan(this);
141 }
142 return nullptr;
143}
144
146{
147 qDebug(log) << Q_FUNC_INFO;
148 Q_ASSERT(m_pOperate == p);
149 m_pOperate = nullptr;
150 return CPlugin::DeleteOperate(p);
151}
152
153const QString CPluginWakeOnLan::Protocol() const
154{
155 return QString();
156}
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:126
virtual const QString Id()
ID. Default: Type() + ":" + Protocol() + ":" + Name()
Definition Plugin.cpp:68
virtual Q_INVOKABLE COperate * CreateOperate(const QString &szId, CParameterPlugin *para)
New COperate instance.
Definition Plugin.cpp:84