From 89986cfb029a7a7fc3104dc51c24718ffa844d52 Mon Sep 17 00:00:00 2001 From: Vitaliy Dotsenko Date: Tue, 25 Jun 2019 11:54:56 +0300 Subject: [PATCH] Added Firewall rules endpoints --- src/Endpoints/Firewall.php | 84 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/Endpoints/Firewall.php diff --git a/src/Endpoints/Firewall.php b/src/Endpoints/Firewall.php new file mode 100644 index 0000000..1734ff4 --- /dev/null +++ b/src/Endpoints/Firewall.php @@ -0,0 +1,84 @@ +adapter = $adapter; + } + + public function createFirewallRules( + string $zoneID, + array $rules + ): array { + $query = $this->adapter->post('zones/' . $zoneID . '/firewall/rules', $rules); + $body = json_decode($query->getBody()); + + return $body->result; + } + + public function createFirewallRule( + string $zoneID, + string $expression, + string $action, + string $description = null, + bool $paused = true, + int $priority = null + ): array { + $rule = [ + 'filter' => [ + 'expression' => $expression, + 'paused' => false + ], + 'action' => $action, + 'paused' => $paused + ]; + + if ($description !== null) { + $options['description'] = $description; + } + + if ($priority !== null) { + $options['priority'] = $priority; + } + + return $this->createFirewallRules($zoneID, [$rule]); + } + + public function listFirewallRules( + string $zoneID, + int $page = 1, + int $perPage = 50 + ): array { + $query = [ + 'page' => $page, + 'per_page' => $perPage, + ]; + + $rules = $this->adapter->get('zones/' . $zoneID . '/firewall/rules', $query); + $body = json_decode($rules->getBody()); + + return $body->result; + } + + public function deleteFirewallRule( + string $zoneID, + string $ruleID + ): bool { + $rule = $this->adapter->delete('zones/' . $zoneID . '/firewall/rules/' . $ruleID); + + $body = json_decode($rule->getBody()); + + if (isset($body->result->id)) { + return true; + } + + return false; + } +}