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 @@
-
- -
- Apps
- {!! $applications !!}
-
- -
- Clients
- {!! $clients !!}
-
- -
- Messages
- {!! $messages !!}
-
-
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 @@
+
+ -
+ Mailboxes
+ {!! $mailboxes !!}
+
+ -
+ Domains
+ {!! $domains !!}
+
+ -
+ Queue
+ {!! $queue !!}
+
+