From 108a2da675a9fe8b4175ea3a99b2581c246448c9 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Mon, 12 Sep 2016 15:29:24 -0400 Subject: [PATCH] API CHANGE: New action for sysadm/firewall "action":"status" Returns the current status of the firewall REST Request (example): ------------------------------- PUT /sysadm/firewall { "action" : "status" } WebSocket Request: ------------------------------- { "name" : "firewall", "args" : { "action" : "status" }, "id" : "fooid", "namespace" : "sysadm" } Response: ------------------------------- { "args": { "is_enabled": "true", "is_running": "true" }, "id": "fooid", "name": "response", "namespace": "sysadm" } --- src/server/WebBackend.cpp | 6 ++++++ src/server/library/sysadm-firewall.cpp | 5 +++++ src/server/library/sysadm-firewall.h | 1 + 3 files changed, 12 insertions(+) diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index e66954a..d6ba84c 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -1130,6 +1130,12 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmFirewallRequest(const QJsonV oports << QString::number(all[i].Port)+"/"+all[i].Type; } out->insert("openports", QJsonArray::fromStringList(oports)); + + }else if(action=="status"){ + ok = true; + out->insert("is_running", FMGR.IsRunning() ? "true" : "false" ); + out->insert("is_enabled", FMGR.IsEnabled() ? "true" : "false" ); + } diff --git a/src/server/library/sysadm-firewall.cpp b/src/server/library/sysadm-firewall.cpp index c972ff9..5751d9e 100644 --- a/src/server/library/sysadm-firewall.cpp +++ b/src/server/library/sysadm-firewall.cpp @@ -147,6 +147,11 @@ bool Firewall::IsRunning() return General::sysctlAsInt("net.inet.ip.fw.enable") == 1; } +bool Firewall::IsEnabled(){ + ServiceManager serviceManager; + return serviceManager.isEnabled( serviceManager.GetService("ipfw") ); +} + void Firewall::Start() { ServiceManager serviceManager; diff --git a/src/server/library/sysadm-firewall.h b/src/server/library/sysadm-firewall.h index 1d1b608..65a5d23 100644 --- a/src/server/library/sysadm-firewall.h +++ b/src/server/library/sysadm-firewall.h @@ -96,6 +96,7 @@ public: * @return true if the firewall is running, false if not */ bool IsRunning(); + bool IsEnabled(); /** * @brief Starts the firewall */