diff --git a/sources/ext-sysmon/extscript.cpp b/sources/ext-sysmon/extscript.cpp index 4169225..d1d357c 100644 --- a/sources/ext-sysmon/extscript.cpp +++ b/sources/ext-sysmon/extscript.cpp @@ -19,6 +19,7 @@ #include #include +#include #include #include @@ -30,6 +31,7 @@ ExtScript::ExtScript(const QString scriptName, const QStringList directories, co dirs(directories), debug(debugCmd) { + readConfiguration(); } @@ -175,29 +177,67 @@ void ExtScript::readConfiguration() } +QMap ExtScript::run(const int time) +{ + if (debug) qDebug() << PDEBUG; + + QMap response; + if (time != interval) { + response[QString("refresh")] = false; + return response; + } + response[QString("refresh")] = true; + + QStringList cmdList; + if (!prefix.isEmpty()) + cmdList.append(prefix); + QString fullPath = name; + for (int i=0; itoUnicode(process.error).trimmed(); + QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed(); + switch(redirect) { + case stdout2stderr: + if (debug) qDebug() << PDEBUG << ":" << "Debug" << info; + if (debug) qDebug() << PDEBUG << ":" << "Output" << qoutput; + break; + case stderr2stdout: + response[QString("output")] = info + QString("\t") + qoutput; + break; + default: + if (debug) qDebug() << PDEBUG << ":" << "Debug" << info; + response[QString("output")] = qoutput; + break; + } + if (!output) + response[QString("output")] = QString::number(process.exitCode); + + return response; +} + + void ExtScript::fromExternalConfiguration(const QMap settings) { - if (settings.contains(QString("ACTIVE"))) { - if (settings[QString("ACTIVE")] == QString("true")) - setActive(true); - else - setActive(false); - } - if (settings.contains(QString("INTERVAL"))) { + if (settings.contains(QString("ACTIVE"))) + setActive(settings[QString("ACTIVE")] == QString("true")); + if (settings.contains(QString("INTERVAL"))) setInterval(settings[QString("INTERVAL")].toInt()); - } - if (settings.contains(QString("PREFIX"))) { + if (settings.contains(QString("PREFIX"))) setPrefix(settings[QString("PREFIX")]); - } - if (settings.contains(QString("OUTPUT"))) { - if (settings[QString("OUTPUT")] == QString("true")) - setHasOutput(true); - else - setHasOutput(false); - } - if (settings.contains(QString("REDIRECT"))) { + if (settings.contains(QString("OUTPUT"))) + setHasOutput(settings[QString("OUTPUT")] == QString("true")); + if (settings.contains(QString("REDIRECT"))) setRedirect((Redirect)settings[QString("REDIRECT")].toInt()); - } + if (!output) + redirect = stdout2stderr; } @@ -232,17 +272,17 @@ QMap ExtScript::toExternalConfiguration() if (debug) qDebug() << PDEBUG; QMap settings; - if (isActive()) + if (active) settings[QString("ACTIVE")] = QString("true"); else settings[QString("ACTIVE")] = QString("false"); - settings[QString("INTERVAL")] = QString::number(getInterval()); - settings[QString("PREFIX")] = getPrefix(); - if (hasOutput()) + settings[QString("INTERVAL")] = QString::number(interval); + settings[QString("PREFIX")] = prefix; + if (output) settings[QString("OUTPUT")] = QString("true"); else settings[QString("OUTPUT")] = QString("false"); - settings[QString("REDIRECT")] = QString::number(getRedirect()); + settings[QString("REDIRECT")] = QString::number(redirect); return settings; } diff --git a/sources/ext-sysmon/extscript.h b/sources/ext-sysmon/extscript.h index 3b8215e..8819c4c 100644 --- a/sources/ext-sysmon/extscript.h +++ b/sources/ext-sysmon/extscript.h @@ -50,6 +50,7 @@ public: public slots: void readConfiguration(); + QMap run(const int time); private: // configuration