From fccac94ab63f31da16a16d5c2c64a152bd3bbc16 Mon Sep 17 00:00:00 2001 From: Kris Moore Date: Wed, 3 Feb 2016 13:09:31 -0500 Subject: [PATCH] Add new API call "sysctllist" Returns the list of all setable sysctl values REST Request: ------------------------------- PUT /sysadm/systemmanager { "action" : "sysctllist" } REST Response: ------------------------------- { "args": { "sysctllist": { "compat.ia32.maxdsiz": "536870912", "compat.ia32.maxssiz": "67108864", "compat.ia32.maxvmem": "0", "compat.linux.osname": "Linux", "compat.linux.osrelease": "2.6.18", "compat.linux.oss_version": "198144", "compat.linux32.maxdsiz": "536870912", "compat.linux32.maxssiz": "67108864", "compat.linux32.maxvmem": "0", .... } } } WebSocket Request: ------------------------------- { "name" : "systemmanager", "namespace" : "sysadm", "id" : "fooid", "args" : { "action" : "sysctllist" } } WebSocket Response: ------------------------------- { "args": { "sysctllist": { "compat.ia32.maxdsiz": "536870912", "compat.ia32.maxssiz": "67108864", "compat.ia32.maxvmem": "0", "compat.linux.osname": "Linux", "compat.linux.osrelease": "2.6.18", "compat.linux.oss_version": "198144", "compat.linux32.maxdsiz": "536870912", "compat.linux32.maxssiz": "67108864", "compat.linux32.maxvmem": "0", .... } }, "id": "fooid", "name": "response", "namespace": "sysadm" } --- src/server/WebBackend.cpp | 4 ++++ src/server/library/sysadm-systemmanager.cpp | 20 ++++++++++++++++++++ src/server/library/sysadm-systemmanager.h | 1 + 3 files changed, 25 insertions(+) diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index ba256f1..ac384d7 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=="sysctllist"){ + ok = true; + out->insert("sysctllist", sysadm::SysMgmt::sysctlList()); + } if(act=="systeminfo"){ ok = true; out->insert("systeminfo", sysadm::SysMgmt::systemInfo()); diff --git a/src/server/library/sysadm-systemmanager.cpp b/src/server/library/sysadm-systemmanager.cpp index 176e5a6..1a4ed93 100644 --- a/src/server/library/sysadm-systemmanager.cpp +++ b/src/server/library/sysadm-systemmanager.cpp @@ -291,6 +291,26 @@ QJsonObject SysMgmt::procInfo() { return retObject; } +// Return list of sysctls and their values +QJsonObject SysMgmt::sysctlList() { + QJsonObject retObject; + + // This can be cleaned up and not use CLI + QStringList output = General::RunCommand("sysctl -W -a").split("\n"); + + QString sysctl, value; + for(int i=0; i