diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index 7e4e39f..07d110f 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -797,6 +797,8 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmPkgRequest(const QJsonValue out->insert("pkg_upgrade", sysadm::PKG::pkg_upgrade()); }else if(act=="pkg_audit"){ out->insert("pkg_audit", sysadm::PKG::pkg_audit()); + }else if(act=="pkg_autoremove"){ + out->insert("pkg_autoremove", sysadm::PKG::pkg_autoremove()); }else{ //unknown action return RestOutputStruct::BADREQUEST; diff --git a/src/server/library/sysadm-pkg.cpp b/src/server/library/sysadm-pkg.cpp index 99618d7..cc4f2d5 100644 --- a/src/server/library/sysadm-pkg.cpp +++ b/src/server/library/sysadm-pkg.cpp @@ -440,3 +440,17 @@ QJsonObject PKG::pkg_audit(){ obj.insert("proc_id",ID); return obj; } + +QJsonObject PKG::pkg_autoremove(){ + //Generate the command to run + QString cmd = "pkg autoremove -y"; + //Now kick off the dispatcher process (within the pkg queue - since only one pkg process can run at a time) + QString ID = "sysadm_pkg_autoremove-"+QUuid::createUuid().toString(); //create a random tag for the process + DISPATCHER->queueProcess(Dispatcher::PKG_QUEUE, ID, cmd); + //Now return the info about the process + QJsonObject obj; + obj.insert("status", "pending"); + obj.insert("proc_cmd",cmd); + obj.insert("proc_id",ID); + return obj; +} diff --git a/src/server/library/sysadm-pkg.h b/src/server/library/sysadm-pkg.h index 769bb74..5d8d3f8 100644 --- a/src/server/library/sysadm-pkg.h +++ b/src/server/library/sysadm-pkg.h @@ -36,9 +36,10 @@ public: static QJsonObject pkg_check_upgrade(); //Check for updates to pkgs static QJsonObject pkg_upgrade(); //upgrade all pkgs (use sysadm/updates if possible instead) static QJsonObject pkg_audit(); //List details of vulnerable packages + static QJsonObject pkg_autoremove(); //Autoremove orphaned packages }; } //end of sysadm namespace -#endif \ No newline at end of file +#endif