From 95926bdc71dd46836cc77f3dba0d376fc5968377 Mon Sep 17 00:00:00 2001 From: PedroBuffon Date: Sat, 13 Jul 2024 19:11:13 -0300 Subject: [PATCH] Enhanced mailcow (#757) * Enhancing Gotify App(Need Testing) * Enhancing Gotify tested and working * Enchance Mailcow * Reset gotify app for branch consistency * Remove whitespaces * reset Gotify App * Update Gotify.php Added last line on the code --- Gotify/Gotify.php | 74 --------------------------- Gotify/app.json | 4 +- Gotify/livestats.blade.php | 14 ----- Mailcow/Mailcow.php | 76 +++++++++++++++++++++++++++- Mailcow/app.json | 2 +- {Gotify => Mailcow}/config.blade.php | 0 Mailcow/livestats.blade.php | 14 +++++ 7 files changed, 92 insertions(+), 92 deletions(-) delete mode 100644 Gotify/livestats.blade.php rename {Gotify => Mailcow}/config.blade.php (100%) create mode 100644 Mailcow/livestats.blade.php diff --git a/Gotify/Gotify.php b/Gotify/Gotify.php index e07181b5c1..9ae316faa3 100644 --- a/Gotify/Gotify.php +++ b/Gotify/Gotify.php @@ -4,78 +4,4 @@ class Gotify extends \App\SupportedApps implements \App\EnhancedApps { - public $config; - - public function __construct() - { - } - - public function test() - { - $attrs = $this->getAttrs(); - $test = parent::appTest($this->url("health"), $attrs); - echo $test->status; - } - - public function livestats() - { - $status = "inactive"; - $data = []; - $attrs = $this->getAttrs(); - - // Fetch applications - $applicationsResponse = parent::execute($this->url("application"), $attrs); - $applications = json_decode($applicationsResponse->getBody()); - - // Count applications - if ($applications) { - $data["applications"] = count($applications); - } else { - $data["applications"] = 0; - } - - // Fetch clients - $clientsResponse = parent::execute($this->url("client"), $attrs); - $clients = json_decode($clientsResponse->getBody()); - - // Count clients - if ($clients) { - $data["clients"] = count($clients); - } else { - $data["clients"] = 0; - } - - // Fetch messages - $messagesResponse = parent::execute($this->url("message"), $attrs); - $messages = json_decode($messagesResponse->getBody()); - - // Count messages - if ($messages && isset($messages->messages)) { - $data["messages"] = count($messages->messages); - } else { - $data["messages"] = 0; - } - - // Determine status based on data - if ($data["applications"] > 0 || $data["clients"] > 0 || $data["messages"] > 0) { - $status = "active"; - } - - return parent::getLiveStats($status, $data); - } - - public function url($endpoint) - { - $api_url = parent::normaliseurl($this->config->url) . $endpoint; - return $api_url; - } - private function getAttrs() - { - return [ - "headers" => [ - "Accept" => "application/json", - "X-Gotify-Key" => $this->config->apikey - ], - ]; - } } diff --git a/Gotify/app.json b/Gotify/app.json index 04c632383f..c135dd446f 100644 --- a/Gotify/app.json +++ b/Gotify/app.json @@ -4,7 +4,7 @@ "website": "https://gotify.net", "license": "MIT License", "description": "A self-hosted push notification service.", - "enhanced": true, + "enhanced": false, "tile_background": "dark", "icon": "gotify.png" -} +} \ No newline at end of file diff --git a/Gotify/livestats.blade.php b/Gotify/livestats.blade.php deleted file mode 100644 index 77df438e86..0000000000 --- a/Gotify/livestats.blade.php +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/Mailcow/Mailcow.php b/Mailcow/Mailcow.php index ad59477422..30138e146b 100644 --- a/Mailcow/Mailcow.php +++ b/Mailcow/Mailcow.php @@ -2,6 +2,80 @@ namespace App\SupportedApps\Mailcow; -class Mailcow extends \App\SupportedApps +class Mailcow extends \App\SupportedApps implements \App\EnhancedApps { + public $config; + + public function __construct() + { + } + + public function test() + { + $attrs = $this->getAttrs(); + $test = parent::appTest($this->url("status/containers"), $attrs); + echo $test->status; + } + + public function livestats() + { + $status = "inactive"; + $data = []; + $attrs = $this->getAttrs(); + + // Fetch mailboxes + $mailboxesResponse = parent::execute($this->url("mailbox/all"), $attrs); + $mailboxes = json_decode($mailboxesResponse->getBody()); + + // Count mailboxes + if ($mailboxes) { + $data["mailboxes"] = count($mailboxes); + } else { + $data["mailboxes"] = 0; + } + + // Fetch clients + $domainsResponse = parent::execute($this->url("domain/all"), $attrs); + $domains = json_decode($domainsResponse->getBody()); + + // Count clients + if ($domains) { + $data["domains"] = count($domains); + } else { + $data["domains"] = 0; + } + + // Fetch messages + $queueResponse = parent::execute($this->url("mailq/all"), $attrs); + $queue = json_decode($queueResponse->getBody()); + + // Count messages + if ($queue && isset($queue->messages)) { + $data["queue"] = count($queue->messages); + } else { + $data["queue"] = 0; + } + + // Determine status based on data + if ($data["mailboxes"] > 0 || $data["domains"] > 0 || $data["queue"] >= 0) { + $status = "active"; + } + + return parent::getLiveStats($status, $data); + } + + public function url($endpoint) + { + $api_url = parent::normaliseurl($this->config->url) . "api/v1/get/" . $endpoint; + return $api_url; + } + private function getAttrs() + { + return [ + "headers" => [ + "Accept" => "application/json", + "X-API-Key" => $this->config->apikey + ], + ]; + } } diff --git a/Mailcow/app.json b/Mailcow/app.json index 3d6ae8cfe9..68554d62f9 100644 --- a/Mailcow/app.json +++ b/Mailcow/app.json @@ -4,7 +4,7 @@ "website": "https://mailcow.email", "license": "GNU General Public License v3.0 only", "description": "Mailcow is a Docker based email server which provides an elegant web interface for managing domains, mailboxes and more.", - "enhanced": false, + "enhanced": true, "tile_background": "dark", "icon": "mailcow.svg" } diff --git a/Gotify/config.blade.php b/Mailcow/config.blade.php similarity index 100% rename from Gotify/config.blade.php rename to Mailcow/config.blade.php diff --git a/Mailcow/livestats.blade.php b/Mailcow/livestats.blade.php new file mode 100644 index 0000000000..6fe23a6ff3 --- /dev/null +++ b/Mailcow/livestats.blade.php @@ -0,0 +1,14 @@ +