diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index ac384d7..9fa478e 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -329,6 +329,10 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmSystemMgmtRequest(const QJso ok = true; out->insert("procinfo", sysadm::SysMgmt::procInfo()); } + if(act=="setsysctl"){ + ok = true; + out->insert("setsysctl", sysadm::SysMgmt::setSysctl(in_args.toObject())); + } if(act=="sysctllist"){ ok = true; out->insert("sysctllist", sysadm::SysMgmt::sysctlList()); diff --git a/src/server/library/sysadm-systemmanager.cpp b/src/server/library/sysadm-systemmanager.cpp index 1a4ed93..444e727 100644 --- a/src/server/library/sysadm-systemmanager.cpp +++ b/src/server/library/sysadm-systemmanager.cpp @@ -291,6 +291,27 @@ QJsonObject SysMgmt::procInfo() { return retObject; } +// Set a sysctl +QJsonObject SysMgmt::setSysctl(QJsonObject jsin) { + QJsonObject retObject; + + QStringList keys = jsin.keys(); + if (! keys.contains("sysctl") || ! keys.contains("value") ) { + retObject.insert("error", "Missing required keys 'sysctl / value'"); + return retObject; + } + QString sysctl, value; + sysctl = jsin.value("sysctl").toString(); + value = jsin.value("value").toString(); + QString output = General::RunCommand("sysctl " + sysctl + "=" + value); + + retObject.insert("sysctl", sysctl); + retObject.insert("value", value); + retObject.insert("response", output.simplified()); + + return retObject; +} + // Return list of sysctls and their values QJsonObject SysMgmt::sysctlList() { QJsonObject retObject; diff --git a/src/server/library/sysadm-systemmanager.h b/src/server/library/sysadm-systemmanager.h index 13948a2..d73b845 100644 --- a/src/server/library/sysadm-systemmanager.h +++ b/src/server/library/sysadm-systemmanager.h @@ -21,6 +21,7 @@ public: static QJsonObject killProc(QJsonObject); static QJsonObject memoryStats(); static QJsonObject procInfo(); + static QJsonObject setSysctl(QJsonObject); static QJsonObject sysctlList(); static QJsonObject systemInfo(); };