diff --git a/src/library/sysadm-lifepreserver.cpp b/src/library/sysadm-lifepreserver.cpp index b96582d..f7a1adf 100644 --- a/src/library/sysadm-lifepreserver.cpp +++ b/src/library/sysadm-lifepreserver.cpp @@ -105,3 +105,51 @@ QJsonObject LifePreserver::listSnap(QJsonObject jsin) { return retObject; } + +// Return a list of settings for life-preserver +QJsonObject LifePreserver::settings() { + QJsonObject retObject; + + QStringList output = General::RunCommand("lpreserver get").split("\n"); + QStringList setitems; + QString tmpkey; + QRegExp sep("\\s+"); + + // Parse the output + bool inSection = false; + for ( int i = 0; i < output.size(); i++) + { + if ( output.at(i).indexOf("-----------------") != -1 ) { + inSection = true; + continue; + } + + if (!inSection) + continue; + + if ( output.at(i).isEmpty() || output.at(i).indexOf("-----------------") != -1 ) + break; + + // Breakdown the setting we got + tmpkey = ""; + setitems.clear(); + setitems << output.at(i).section(":", 0, 0).simplified(); + setitems << output.at(i).section(":", 1, 1).simplified(); + if ( setitems.at(0) == "Recursive mode" ) + tmpkey = "recursive"; + if ( setitems.at(0) == "E-mail notifications" ) + tmpkey = "email"; + if ( setitems.at(0) == "E-mail addresses" ) + tmpkey = "emailaddress"; + if ( setitems.at(0) == "Disk space warn at" ) + tmpkey = "diskwarn"; + + // Unknown key we dont support? + if ( tmpkey.isEmpty() ) + continue; + + retObject.insert(tmpkey, setitems.at(1)); + } + + return retObject; +} diff --git a/src/library/sysadm-lifepreserver.h b/src/library/sysadm-lifepreserver.h index 7b749d9..4452586 100644 --- a/src/library/sysadm-lifepreserver.h +++ b/src/library/sysadm-lifepreserver.h @@ -17,6 +17,7 @@ public: // List schedule snapshots static QJsonObject listCron(); static QJsonObject listSnap(QJsonObject jsin); + static QJsonObject settings(); }; } //end of pcbsd namespace diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index 2b64bb6..3ec8cbb 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -149,6 +149,10 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmLifePreserverRequest(const Q ok = true; out->insert("listsnap", sysadm::LifePreserver::listSnap(in_args.toObject())); } + if(act=="settings"){ + ok = true; + out->insert("settings", sysadm::LifePreserver::settings()); + } } //end of "action" key usage