diff --git a/src/library/sysadm-iocage.cpp b/src/library/sysadm-iocage.cpp index 3652059..5c6a35d 100644 --- a/src/library/sysadm-iocage.cpp +++ b/src/library/sysadm-iocage.cpp @@ -12,6 +12,40 @@ using namespace sysadm; //PLEASE: Keep the functions in the same order as listed in pcbsd-general.h +// List the jails on the box +QJsonObject Iocage::getJailSettings(QJsonObject jsin) { + QJsonObject retObject; + + QStringList keys = jsin.keys(); + if (! keys.contains("jail") ) { + retObject.insert("error", "Missing required keys"); + return retObject; + } + + // Get the key values + QString jail = jsin.value("jail").toString(); + + QStringList output = General::RunCommand("iocage get all " + jail).split("\n"); + + QJsonObject vals; + for ( int i = 0; i < output.size(); i++) + { + if ( output.at(i).indexOf("JID") != -1 ) + continue; + + if ( output.at(i).isEmpty() ) + break; + + QString key = output.at(i).simplified().section(":", 0, 0); + QString value = output.at(i).simplified().section(":", 1, 1); + + vals.insert(key, value); + } + + retObject.insert(jail, vals); + return retObject; +} + // List the jails on the box QJsonObject Iocage::listJails() { QJsonObject retObject; diff --git a/src/library/sysadm-iocage.h b/src/library/sysadm-iocage.h index d9f191e..d23a444 100644 --- a/src/library/sysadm-iocage.h +++ b/src/library/sysadm-iocage.h @@ -14,6 +14,7 @@ namespace sysadm{ class Iocage{ public: + static QJsonObject getJailSettings(QJsonObject); static QJsonObject listJails(); }; diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index 352c67c..26d331b 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -343,6 +343,10 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmIocageRequest(const QJsonVal bool ok = false; if(keys.contains("action")){ QString act = JsonValueToString(in_args.toObject().value("action")); + if(act=="getjailsettings"){ + ok = true; + out->insert("getjailsettings", sysadm::Iocage::getJailSettings(in_args.toObject())); + } if(act=="listjails"){ ok = true; out->insert("listjails", sysadm::Iocage::listJails()); diff --git a/tests/api-test.sh b/tests/api-test.sh index 2321f04..00f947b 100755 --- a/tests/api-test.sh +++ b/tests/api-test.sh @@ -7,14 +7,20 @@ JSAWK="./utils/jsawk -j js24" which npm >/dev/null 2>/dev/null if [ $? -ne 0 ] ; then - echo "Please install npm first" - exit 1 + pkg install -y npm + if [ $? -ne 0 ] ; then + echo "Requires npm!" + exit 1 + fi fi pkg info p5-JSON >/dev/null 2>/dev/null if [ $? -ne 0 ] ; then - echo "Please install p5-JSON first" - exit 1 + pkg install -y p5-JSON + if [ $? -ne 0 ] ; then + echo "Requires p5-JSON!" + exit 1 + fi fi if [ ! -d "${HOME}/.npm/ws" ] ; then