diff --git a/src/binary/main.cpp b/src/binary/main.cpp index 4ec38df..740fa54 100644 --- a/src/binary/main.cpp +++ b/src/binary/main.cpp @@ -49,11 +49,5 @@ int main( int argc, char ** argv ) qDebug() << " - Allow Secure Wifi:" << set.wifisecurity; } - // LP tests - qDebug() << "Life-Preserver::listCron()"; - QList cronSnaps = sysadm::LifePreserver::listCron(); - for ( int i = 0; i < cronSnaps.size(); i++) - qDebug() << cronSnaps.at(i); - return 0; } diff --git a/src/library/sysadm-lifepreserver.cpp b/src/library/sysadm-lifepreserver.cpp index c2ed101..683a5b4 100644 --- a/src/library/sysadm-lifepreserver.cpp +++ b/src/library/sysadm-lifepreserver.cpp @@ -13,7 +13,9 @@ using namespace sysadm; // Build list of scheduled cron snapshot jobs -QList LifePreserver::listCron() { +QJsonObject LifePreserver::listCron() { + QJsonObject retObject; + QStringList output = General::RunCommand("lpreserver listcron").split("\n"); QList snaps; QStringList snapitems; @@ -33,14 +35,17 @@ QList LifePreserver::listCron() { if ( output.at(i).isEmpty() || output.at(i).indexOf("-----------------") != -1 ) break; - // Save this cron job + // Breakdown this cron job snapitems.clear(); snapitems << output.at(i).section("-", 0, 0).simplified(); snapitems << output.at(i).section("-", 1, 1).simplified(); snapitems << output.at(i).section("-", 2, 2).simplified().replace("total: ", ""); - snaps << snapitems; + QJsonObject values; + values.insert("schedule", snapitems.at(1)); + values.insert("keep", snapitems.at(2)); + retObject.insert(snapitems.at(0), values); } - return snaps; + return retObject; } diff --git a/src/library/sysadm-lifepreserver.h b/src/library/sysadm-lifepreserver.h index fba0635..560fcf8 100644 --- a/src/library/sysadm-lifepreserver.h +++ b/src/library/sysadm-lifepreserver.h @@ -7,6 +7,7 @@ #ifndef __PCBSD_LIB_UTILS_LIFEPRESERVER_H #define __PCBSD_LIB_UTILS_LIFEPRESERVER_H +#include #include "sysadm-global.h" namespace sysadm{ @@ -14,7 +15,7 @@ namespace sysadm{ class LifePreserver{ public: // List schedule snapshots - static QList listCron(); + static QJsonObject listCron(); }; } //end of pcbsd namespace diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index 9aa55ae..1e79c27 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -8,6 +8,7 @@ //sysadm library interface classes #include "sysadm-general.h" #include "sysadm-network.h" +#include "sysadm-lifepreserver.h" #include "syscache-client.h" #include "dispatcher-client.h" @@ -30,6 +31,8 @@ RestOutputStruct::ExitCode WebSocket::EvaluateBackendRequest(QString namesp, QSt return EvaluateSyscacheRequest(args, out); }else if(namesp=="sysadm" && name=="network"){ return EvaluateSysadmNetworkRequest(args, out); + }else if(namesp=="sysadm" && name=="lifepreserver"){ + return EvaluateSysadmLifePreserverRequest(args, out); }else{ return RestOutputStruct::BADREQUEST; } @@ -130,3 +133,27 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmNetworkRequest(const QJsonVa } return RestOutputStruct::OK; } + +//==== SYSADM -- LifePreserver ==== +RestOutputStruct::ExitCode WebSocket::EvaluateSysadmLifePreserverRequest(const QJsonValue in_args, QJsonObject *out){ + if(in_args.isObject()){ + QStringList keys = in_args.toObject().keys(); + bool ok = false; + if(keys.contains("action")){ + QString act = JsonValueToString(in_args.toObject().value("action")); + if(act=="listcron"){ + ok = true; + out->insert("listcron", sysadm::LifePreserver::listCron()); + } + + } //end of "action" key usage + + //If nothing done - return the proper code + if(!ok){ + return RestOutputStruct::BADREQUEST; + } + }else{ // if(in_args.isArray()){ + return RestOutputStruct::BADREQUEST; + } + return RestOutputStruct::OK; +} diff --git a/src/server/WebSocket.cpp b/src/server/WebSocket.cpp index d4aeb6f..42b8e56 100644 --- a/src/server/WebSocket.cpp +++ b/src/server/WebSocket.cpp @@ -5,7 +5,7 @@ // ================================= #include "WebSocket.h" -#define DEBUG 0 +#define DEBUG 1 #define IDLETIMEOUTMINS 30 WebSocket::WebSocket(QWebSocket *sock, QString ID, AuthorizationManager *auth){ diff --git a/src/server/WebSocket.h b/src/server/WebSocket.h index fca1675..14857d1 100644 --- a/src/server/WebSocket.h +++ b/src/server/WebSocket.h @@ -52,8 +52,10 @@ private: // -- Individual subsystems RestOutputStruct::ExitCode EvaluateSyscacheRequest(const QJsonValue in_args, QJsonObject *out); RestOutputStruct::ExitCode EvaluateDispatcherRequest(const QJsonValue in_args, QJsonObject *out); - // -- sysadm library/subsystems + // -- sysadm Network API RestOutputStruct::ExitCode EvaluateSysadmNetworkRequest(const QJsonValue in_args, QJsonObject *out); + // -- sysadm LifePreserver API + RestOutputStruct::ExitCode EvaluateSysadmLifePreserverRequest(const QJsonValue in_args, QJsonObject *out); private slots: void checkIdle(); //see if the currently-connected client is idle