2023-11-16 10:53:37 +00:00
< ? php
namespace App\Notifications\Server ;
use App\Models\Server ;
2024-11-26 09:19:05 +00:00
use App\Notifications\CustomEmailNotification ;
2024-10-01 19:38:12 +00:00
use App\Notifications\Dto\DiscordMessage ;
2024-12-11 14:54:11 +00:00
use App\Notifications\Dto\PushoverMessage ;
2024-11-12 21:37:55 +00:00
use App\Notifications\Dto\SlackMessage ;
2023-11-16 10:53:37 +00:00
use Illuminate\Notifications\Messages\MailMessage ;
2024-11-26 09:19:05 +00:00
class HighDiskUsage extends CustomEmailNotification
2023-11-16 10:53:37 +00:00
{
2024-11-12 21:37:55 +00:00
public function __construct ( public Server $server , public int $disk_usage , public int $server_disk_usage_notification_threshold )
{
2024-11-22 10:16:01 +00:00
$this -> onQueue ( 'high' );
2024-11-12 21:37:55 +00:00
}
2023-11-16 10:53:37 +00:00
public function via ( object $notifiable ) : array
{
2024-12-09 15:57:15 +00:00
return $notifiable -> getEnabledChannels ( 'server_disk_usage' );
2023-11-16 10:53:37 +00:00
}
public function toMail () : MailMessage
{
2025-01-07 14:31:43 +00:00
$mail = new MailMessage ;
$mail -> subject ( " Coolify: Server ( { $this -> server -> name } ) high disk usage detected! " );
$mail -> view ( 'emails.high-disk-usage' , [
2023-11-16 10:53:37 +00:00
'name' => $this -> server -> name ,
'disk_usage' => $this -> disk_usage ,
2024-10-22 12:01:36 +00:00
'threshold' => $this -> server_disk_usage_notification_threshold ,
2023-11-16 10:53:37 +00:00
]);
2024-06-10 20:43:34 +00:00
2025-01-07 14:31:43 +00:00
return $mail ;
2023-11-16 10:53:37 +00:00
}
2024-10-01 19:38:12 +00:00
public function toDiscord () : DiscordMessage
2023-11-16 10:53:37 +00:00
{
2025-01-07 14:31:43 +00:00
$message = new DiscordMessage (
2024-10-21 20:40:43 +00:00
title : ':cross_mark: High disk usage detected' ,
description : " Server ' { $this -> server -> name } ' high disk usage detected! " ,
2024-10-01 19:38:12 +00:00
color : DiscordMessage :: errorColor (),
2024-10-22 12:47:01 +00:00
isCritical : true ,
2024-10-01 19:38:12 +00:00
);
2025-01-07 14:31:43 +00:00
$message -> addField ( 'Disk usage' , " { $this -> disk_usage } % " , true );
$message -> addField ( 'Threshold' , " { $this -> server_disk_usage_notification_threshold } % " , true );
$message -> addField ( 'What to do?' , '[Link](https://coolify.io/docs/knowledge-base/server/automated-cleanup)' , true );
$message -> addField ( 'Change Settings' , '[Threshold](' . base_url () . '/server/' . $this -> server -> uuid . '#advanced) | [Notification](' . base_url () . '/notifications/discord)' );
2024-06-10 20:43:34 +00:00
2025-01-07 14:31:43 +00:00
return $message ;
2023-11-16 10:53:37 +00:00
}
2024-06-10 20:43:34 +00:00
2023-11-16 10:53:37 +00:00
public function toTelegram () : array
{
return [
2024-10-22 12:01:36 +00:00
'message' => " Coolify: Server ' { $this -> server -> name } ' high disk usage detected! \n Disk usage: { $this -> disk_usage } %. Threshold: { $this -> server_disk_usage_notification_threshold } %. \n Please cleanup your disk to prevent data-loss. \n Here are some tips: https://coolify.io/docs/knowledge-base/server/automated-cleanup. " ,
2023-11-16 10:53:37 +00:00
];
}
2024-11-12 21:37:55 +00:00
2024-12-11 14:54:11 +00:00
public function toPushover () : PushoverMessage
{
return new PushoverMessage (
title : 'High disk usage detected' ,
level : 'warning' ,
message : " Server ' { $this -> server -> name } ' high disk usage detected!<br/><br/><b>Disk usage:</b> { $this -> disk_usage } %.<br/><b>Threshold:</b> { $this -> server_disk_usage_notification_threshold } %.<br/>Please cleanup your disk to prevent data-loss. " ,
buttons : [
2025-01-07 13:52:08 +00:00
'Change settings' => base_url () . '/server/' . $this -> server -> uuid . '#advanced' ,
'Tips for cleanup' => 'https://coolify.io/docs/knowledge-base/server/automated-cleanup' ,
2024-12-11 14:54:11 +00:00
],
);
}
2024-11-12 21:37:55 +00:00
public function toSlack () : SlackMessage
{
$description = " Server ' { $this -> server -> name } ' high disk usage detected! \n " ;
$description .= " Disk usage: { $this -> disk_usage } % \n " ;
$description .= " Threshold: { $this -> server_disk_usage_notification_threshold } % \n \n " ;
$description .= " Please cleanup your disk to prevent data-loss. \n " ;
$description .= " Tips for cleanup: https://coolify.io/docs/knowledge-base/server/automated-cleanup \n " ;
$description .= " Change settings: \n " ;
2024-12-09 15:57:15 +00:00
$description .= '- Threshold: ' . base_url () . '/server/' . $this -> server -> uuid . " #advanced \n " ;
$description .= '- Notifications: ' . base_url () . '/notifications/discord' ;
2024-11-12 21:37:55 +00:00
return new SlackMessage (
title : 'High disk usage detected' ,
description : $description ,
color : SlackMessage :: errorColor ()
);
}
2023-11-16 10:53:37 +00:00
}