diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index e544db4..53cc975 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -647,7 +647,7 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmIocageRequest(const QJsonVal bool ok = false; if(keys.contains("action")){ QString act = JsonValueToString(in_args.toObject().value("action")); - if(act=="execjail"){ + /*if(act=="execjail"){ ok = true; out->insert("execjail", sysadm::Iocage::execJail(in_args.toObject())); } @@ -703,10 +703,6 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmIocageRequest(const QJsonVal ok = true; out->insert("startjail", sysadm::Iocage::startJail(in_args.toObject())); } - /*if(act=="getdefaultsettings"){ - ok = true; - out->insert("getdefaultsettings", sysadm::Iocage::getDefaultSettings()); - }*/ else if(act=="getjailsettings"){ ok = true; out->insert("getjailsettings", sysadm::Iocage::getJailSettings(in_args.toObject())); @@ -722,7 +718,7 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmIocageRequest(const QJsonVal else if(act=="listreleases"){ ok = true; out->insert("listjails", sysadm::Iocage::listReleases()); - } + }*/ } //end of "action" key usage diff --git a/src/server/library/sysadm-iocage.cpp b/src/server/library/sysadm-iocage.cpp index e025fc0..7ff9b7c 100644 --- a/src/server/library/sysadm-iocage.cpp +++ b/src/server/library/sysadm-iocage.cpp @@ -202,7 +202,106 @@ QJsonObject Iocage::cleanReleases() { } // =================JAIL MANAGEMENT==================== +// List the jails on the box +QJsonObject Iocage::listJails() { + QJsonObject retObject; + QStringList output = General::RunCommand("iocage list -lh").split("\n"); + for(int i=0; iqueueProcess(Dispatcher::IOCAGE_QUEUE, newid, args.join(" ")); + retObject.insert("new_dispatcher_id", newid); + return retObject; +} + +// Destroy a jail on the box +QJsonObject Iocage::destroyJail(QJsonObject jsin) { + QJsonObject retObject; + if( !jsin.contains("jail_uuid") ){ return retObject; } + QString jail = jsin.value("jail_uuid").toString(); + bool success = false; + QString output = General::RunCommand(success, "iocage destroy -f " + jail); + if(success){ + retObject.insert("success",jail+"destroyed"); + }else{ + retObject.insert("error",output); + } + return retObject; +} + +// Clean all jails on a box +QJsonObject Iocage::cleanJails() { + QJsonObject retObject; + bool success = false; + QString output = General::RunCommand(success, "iocage clean -fj "); + if(success){ + retObject.insert("success", "jails cleaned"); + }else{ + retObject.insert("error", output); + } + return retObject; +} // Execute a process in a jail on the box QJsonObject Iocage::execJail(QJsonObject jsin) { @@ -247,189 +346,6 @@ QJsonObject Iocage::execJail(QJsonObject jsin) { return retObject; } -// Show resource usage for jails on the box -QJsonObject Iocage::df() { - QJsonObject retObject; - - // Get the key values - QStringList output = General::RunCommand("iocage df").split("\n"); - QJsonObject vals; - - for ( int i = 0; i < output.size(); i++) - { - // Null output at first - if ( output.at(i).isEmpty() ) - continue; - - QJsonObject jail; - QString line = output.at(i).simplified(); - QString uuid = line.section(" ", 0, 0); - - // Otherwise we get a list of what we already know. - if ( line.section(" ", 0, 0) == "UUID" ) - continue; - - jail.insert("crt", line.section(" ", 1, 1)); - jail.insert("res", line.section(" ", 2, 2)); - jail.insert("qta", line.section(" ", 3, 3)); - jail.insert("use", line.section(" ", 4, 4)); - jail.insert("ava", line.section(" ", 5, 5)); - jail.insert("tag", line.section(" ", 6, 6)); - - retObject.insert(uuid, jail); - } - - return retObject; -} - -// Destroy a jail on the box -QJsonObject Iocage::destroyJail(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; - - output = General::RunCommand("iocage destroy -f " + jail).split("\n"); - - QJsonObject vals; - for ( int i = 0; i < output.size(); i++) - { - if ( output.at(i).isEmpty() ) - break; - - if ( output.at(i).indexOf("ERROR:") != -1 ) { - retObject.insert("error", output.at(i)); - return retObject; - } else { - QString key = output.at(i).simplified().section(":", 0, 0); - QString value = output.at(i).simplified().section(":", 1, 1); - - vals.insert(key, value); - } - } - - retObject.insert("success", vals); - - return retObject; -} - -// Create a jail on the box -QJsonObject Iocage::createJail(QJsonObject jsin) { - QJsonObject retObject; - - QStringList keys = jsin.keys(); - - // Get the key values - QString switches = jsin.value("switches").toString(); - QString props = jsin.value("props").toString(); - QStringList output; - - if ( keys.contains("switches" ) ) { - output = General::RunCommand("iocage create " + switches + " " + props).split("\n"); - } else { - output = General::RunCommand("iocage create " + props).split("\n"); - } - - QJsonObject vals; - for ( int i = 0; i < output.size(); i++) - { - if ( output.at(i).isEmpty() ) - break; - - if ( output.at(i).indexOf("ERROR:") != -1 ) { - retObject.insert("error", output.at(i)); - return retObject; - } else { - QString key = output.at(i).simplified().section(":", 0, 0); - QString value = output.at(i).simplified().section(":", 1, 1); - - if ( keys.contains("switches" ) ) { - vals.insert("uuid", key); - } else { - vals.insert(key, value); - } - } - } - - retObject.insert("switches", switches); - retObject.insert("props", props); - retObject.insert("success", vals); - - return retObject; -} - -// Clone a jail on the box -QJsonObject Iocage::cloneJail(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(); - QString props = jsin.value("props").toString(); - - QStringList output = General::RunCommand("iocage clone " + jail + " " + props).split("\n"); - - QJsonObject vals; - for ( int i = 0; i < output.size(); i++) - { - if ( output.at(i).isEmpty() ) - break; - - if ( output.at(i).indexOf("ERROR:") != -1 ) { - retObject.insert("error", output.at(i)); - return retObject; - } else { - 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", jail); - retObject.insert("props", props); - retObject.insert("success", vals); - - return retObject; -} - - - -// Clean all jails on a box -QJsonObject Iocage::cleanJails() { - QJsonObject retObject; - - QStringList output = General::RunCommand("iocage clean -fj ").split("\n"); - - for ( int i = 0; i < output.size(); i++) - { - // This means either a mount is stuck or a jail cannot be stopped, - // give them the error. - if ( output.at(i).indexOf("ERROR:") != -1 ) { - retObject.insert("error", output.at(i)); - break; - } else { - // iocage does a spinner for these that is distracting to see returned, - // returning what a user wants to actually see. - retObject.insert("success", "All jails have been cleaned."); - } - } - - return retObject; -} - // Resource cap a jail on the box QJsonObject Iocage::capJail(QJsonObject jsin) { QJsonObject retObject; @@ -623,34 +539,3 @@ QJsonObject Iocage::getJailSettings(QJsonObject jsin) { return retObject; } - -// List the jails on the box -QJsonObject Iocage::listJails() { - QJsonObject retObject; - - QStringList output = General::RunCommand("iocage list").split("\n"); - - for ( int i = 0; i < output.size(); i++) - { - if ( output.at(i).indexOf("JID") != -1 ) - continue; - - if ( output.at(i).isEmpty() ) - break; - - QJsonObject jail; - QString line = output.at(i).simplified(); - QString uuid = line.section(" ", 1, 1); - - jail.insert("jid", line.section(" ", 0, 0)); - jail.insert("boot", line.section(" ", 2, 2)); - jail.insert("state", line.section(" ", 3, 3)); - jail.insert("tag", line.section(" ", 4, 4)); - jail.insert("type", line.section(" ", 5, 5)); - jail.insert("ip4", line.section(" ", 6, 6)); - - retObject.insert(uuid, jail); - } - - return retObject; -} diff --git a/src/server/library/sysadm-iocage.h b/src/server/library/sysadm-iocage.h index 128175f..41284a3 100644 --- a/src/server/library/sysadm-iocage.h +++ b/src/server/library/sysadm-iocage.h @@ -30,23 +30,23 @@ public: static QJsonObject cleanReleases(); //Jail management - - static QJsonObject execJail(QJsonObject); + static QJsonObject listJails(); static QJsonObject df(); - static QJsonObject destroyJail(QJsonObject); + // - create/destroy jails static QJsonObject createJail(QJsonObject); - static QJsonObject cloneJail(QJsonObject); - - + static QJsonObject destroyJail(QJsonObject); static QJsonObject cleanJails(); - static QJsonObject capJail(QJsonObject); - + // - actions on jails static QJsonObject stopJail(QJsonObject); static QJsonObject startJail(QJsonObject); - //static QJsonObject getDefaultSettings(); + static QJsonObject execJail(QJsonObject); //execute command in jail + + + static QJsonObject capJail(QJsonObject); + static QJsonObject getJailSettings(QJsonObject); - static QJsonObject listJails(); + }; } //end of namespace