2024-07-23 12:20:53 +00:00
< ? php
namespace App\Actions\Server ;
use App\Models\Server ;
2025-01-07 13:52:08 +00:00
use Exception ;
2024-07-23 12:20:53 +00:00
use Lorisleiva\Actions\Concerns\AsAction ;
class ValidateServer
{
use AsAction ;
2024-11-22 10:16:01 +00:00
public string $jobQueue = 'high' ;
2024-07-23 12:20:53 +00:00
public ? string $uptime = null ;
public ? string $error = null ;
public ? string $supported_os_type = null ;
public ? string $docker_installed = null ;
public ? string $docker_compose_installed = null ;
public ? string $docker_version = null ;
public function handle ( Server $server )
{
$server -> update ([
'validation_logs' => null ,
]);
[ 'uptime' => $this -> uptime , 'error' => $error ] = $server -> validateConnection ();
if ( ! $this -> uptime ) {
$this -> error = 'Server is not reachable. Please validate your configuration and connection.<br>Check this <a target="_blank" class="text-black underline dark:text-white" href="https://coolify.io/docs/knowledge-base/server/openssh">documentation</a> for further help. <br><br><div class="text-error">Error: ' . $error . '</div>' ;
$server -> update ([
'validation_logs' => $this -> error ,
]);
2025-01-07 13:52:08 +00:00
throw new Exception ( $this -> error );
2024-07-23 12:20:53 +00:00
}
$this -> supported_os_type = $server -> validateOS ();
if ( ! $this -> supported_os_type ) {
$this -> error = 'Server OS type is not supported. Please install Docker manually before continuing: <a target="_blank" class="text-black underline dark:text-white" href="https://docs.docker.com/engine/install/#server">documentation</a>.' ;
$server -> update ([
'validation_logs' => $this -> error ,
]);
2025-01-07 13:52:08 +00:00
throw new Exception ( $this -> error );
2024-07-23 12:20:53 +00:00
}
$this -> docker_installed = $server -> validateDockerEngine ();
$this -> docker_compose_installed = $server -> validateDockerCompose ();
if ( ! $this -> docker_installed || ! $this -> docker_compose_installed ) {
$this -> error = 'Docker Engine is not installed. Please install Docker manually before continuing: <a target="_blank" class="text-black underline dark:text-white" href="https://docs.docker.com/engine/install/#server">documentation</a>.' ;
$server -> update ([
'validation_logs' => $this -> error ,
]);
2025-01-07 13:52:08 +00:00
throw new Exception ( $this -> error );
2024-07-23 12:20:53 +00:00
}
$this -> docker_version = $server -> validateDockerEngineVersion ();
if ( $this -> docker_version ) {
return 'OK' ;
}
2025-01-07 13:52:08 +00:00
$this -> error = 'Docker Engine is not installed. Please install Docker manually before continuing: <a target="_blank" class="text-black underline dark:text-white" href="https://docs.docker.com/engine/install/#server">documentation</a>.' ;
$server -> update ([
'validation_logs' => $this -> error ,
]);
throw new Exception ( $this -> error );
2024-07-23 12:20:53 +00:00
}
}