This commit is contained in:
Andras Bacsai
2024-09-23 19:51:31 +02:00
parent 68efd4b553
commit b570ccd7d3
46 changed files with 236 additions and 211 deletions

View File

@@ -4,13 +4,13 @@ namespace App\Actions\CoolifyTask;
use App\Enums\ActivityTypes; use App\Enums\ActivityTypes;
use App\Enums\ProcessStatus; use App\Enums\ProcessStatus;
use App\Helpers\SshMultiplexingHelper;
use App\Jobs\ApplicationDeploymentJob; use App\Jobs\ApplicationDeploymentJob;
use App\Models\Server; use App\Models\Server;
use Illuminate\Process\ProcessResult; use Illuminate\Process\ProcessResult;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Process; use Illuminate\Support\Facades\Process;
use Spatie\Activitylog\Models\Activity; use Spatie\Activitylog\Models\Activity;
use App\Helpers\SshMultiplexingHelper;
class RunRemoteProcess class RunRemoteProcess
{ {

View File

@@ -37,7 +37,6 @@ class StartPostgresql
$this->generate_init_scripts(); $this->generate_init_scripts();
$this->add_custom_conf(); $this->add_custom_conf();
$docker_compose = [ $docker_compose = [
'services' => [ 'services' => [
$container_name => [ $container_name => [

View File

@@ -27,9 +27,9 @@ use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Process;
use Illuminate\Support\Sleep; use Illuminate\Support\Sleep;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Illuminate\Support\Facades\Process;
use RuntimeException; use RuntimeException;
use Symfony\Component\Yaml\Yaml; use Symfony\Component\Yaml\Yaml;
use Throwable; use Throwable;

View File

@@ -9,8 +9,8 @@ use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Http;
class CheckForUpdatesJob implements ShouldBeEncrypted, ShouldQueue class CheckForUpdatesJob implements ShouldBeEncrypted, ShouldQueue
{ {

View File

@@ -3,6 +3,7 @@
namespace App\Jobs; namespace App\Jobs;
use App\Models\Server; use App\Models\Server;
use Carbon\Carbon;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
@@ -10,7 +11,6 @@ use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Process; use Illuminate\Support\Facades\Process;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Carbon\Carbon;
class CleanupStaleMultiplexedConnections implements ShouldQueue class CleanupStaleMultiplexedConnections implements ShouldQueue
{ {
@@ -32,6 +32,7 @@ class CleanupStaleMultiplexedConnections implements ShouldQueue
if (! $server) { if (! $server) {
$this->removeMultiplexFile($muxFile); $this->removeMultiplexFile($muxFile);
continue; continue;
} }

View File

@@ -56,11 +56,14 @@ class ScheduledTaskJob implements ShouldQueue
{ {
if ($this->resource instanceof Application) { if ($this->resource instanceof Application) {
$timezone = $this->resource->destination->server->settings->server_timezone; $timezone = $this->resource->destination->server->settings->server_timezone;
return $timezone; return $timezone;
} elseif ($this->resource instanceof Service) { } elseif ($this->resource instanceof Service) {
$timezone = $this->resource->server->settings->server_timezone; $timezone = $this->resource->server->settings->server_timezone;
return $timezone; return $timezone;
} }
return 'UTC'; return 'UTC';
} }

View File

@@ -1,6 +1,7 @@
<?php <?php
namespace App\Livewire\Destination; namespace App\Livewire\Destination;
use Livewire\Component; use Livewire\Component;
class Form extends Component class Form extends Component

View File

@@ -2,10 +2,10 @@
namespace App\Livewire; namespace App\Livewire;
use Illuminate\Support\Facades\DB;
use Livewire\Component;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Livewire\Component;
class NavbarDeleteTeam extends Component class NavbarDeleteTeam extends Component
{ {
@@ -20,6 +20,7 @@ class NavbarDeleteTeam extends Component
{ {
if (! Hash::check($password, Auth::user()->password)) { if (! Hash::check($password, Auth::user()->password)) {
$this->addError('password', 'The provided password is incorrect.'); $this->addError('password', 'The provided password is incorrect.');
return; return;
} }

View File

@@ -4,7 +4,6 @@ namespace App\Livewire\Project\Application\Deployment;
use App\Models\Application; use App\Models\Application;
use App\Models\ApplicationDeploymentQueue; use App\Models\ApplicationDeploymentQueue;
use Illuminate\Support\Collection;
use Livewire\Component; use Livewire\Component;
class Show extends Component class Show extends Component

View File

@@ -5,12 +5,12 @@ namespace App\Livewire\Project\Application;
use App\Actions\Docker\GetContainersStatus; use App\Actions\Docker\GetContainersStatus;
use App\Models\Application; use App\Models\Application;
use App\Models\ApplicationPreview; use App\Models\ApplicationPreview;
use Illuminate\Process\InvokedProcess;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Process;
use Livewire\Component; use Livewire\Component;
use Spatie\Url\Url; use Spatie\Url\Url;
use Visus\Cuid2\Cuid2; use Visus\Cuid2\Cuid2;
use Illuminate\Process\InvokedProcess;
use Illuminate\Support\Facades\Process;
class Previews extends Component class Previews extends Component
{ {

View File

@@ -3,10 +3,10 @@
namespace App\Livewire\Project\Database; namespace App\Livewire\Project\Database;
use App\Models\ScheduledDatabaseBackup; use App\Models\ScheduledDatabaseBackup;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Livewire\Component; use Livewire\Component;
use Spatie\Url\Url; use Spatie\Url\Url;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;
class BackupEdit extends Component class BackupEdit extends Component
{ {
@@ -15,7 +15,9 @@ class BackupEdit extends Component
public $s3s; public $s3s;
public bool $delete_associated_backups_locally = false; public bool $delete_associated_backups_locally = false;
public bool $delete_associated_backups_s3 = false; public bool $delete_associated_backups_s3 = false;
public bool $delete_associated_backups_sftp = false; public bool $delete_associated_backups_sftp = false;
public ?string $status = null; public ?string $status = null;
@@ -56,6 +58,7 @@ class BackupEdit extends Component
{ {
if (! Hash::check($password, Auth::user()->password)) { if (! Hash::check($password, Auth::user()->password)) {
$this->addError('password', 'The provided password is incorrect.'); $this->addError('password', 'The provided password is incorrect.');
return; return;
} }
@@ -182,7 +185,7 @@ class BackupEdit extends Component
['id' => 'delete_associated_backups_locally', 'label' => 'All backups associated with this backup job from this database will be permanently deleted from local storage.'], ['id' => 'delete_associated_backups_locally', 'label' => 'All backups associated with this backup job from this database will be permanently deleted from local storage.'],
// ['id' => 'delete_associated_backups_s3', 'label' => 'All backups associated with this backup job from this database will be permanently deleted from the selected S3 Storage.'] // ['id' => 'delete_associated_backups_s3', 'label' => 'All backups associated with this backup job from this database will be permanently deleted from the selected S3 Storage.']
// ['id' => 'delete_associated_backups_sftp', 'label' => 'All backups associated with this backup job from this database will be permanently deleted from the selected SFTP Storage.'] // ['id' => 'delete_associated_backups_sftp', 'label' => 'All backups associated with this backup job from this database will be permanently deleted from the selected SFTP Storage.']
] ],
]); ]);
} }
} }

View File

@@ -3,19 +3,23 @@
namespace App\Livewire\Project\Database; namespace App\Livewire\Project\Database;
use App\Models\ScheduledDatabaseBackup; use App\Models\ScheduledDatabaseBackup;
use Livewire\Component;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Livewire\Attributes\On; use Livewire\Attributes\On;
use Livewire\Component;
class BackupExecutions extends Component class BackupExecutions extends Component
{ {
public ?ScheduledDatabaseBackup $backup = null; public ?ScheduledDatabaseBackup $backup = null;
public $database; public $database;
public $executions = []; public $executions = [];
public $setDeletableBackup; public $setDeletableBackup;
public $delete_backup_s3 = true; public $delete_backup_s3 = true;
public $delete_backup_sftp = true; public $delete_backup_sftp = true;
public function getListeners() public function getListeners()
@@ -42,12 +46,14 @@ class BackupExecutions extends Component
{ {
if (! Hash::check($password, Auth::user()->password)) { if (! Hash::check($password, Auth::user()->password)) {
$this->addError('password', 'The provided password is incorrect.'); $this->addError('password', 'The provided password is incorrect.');
return; return;
} }
$execution = $this->backup->executions()->where('id', $executionId)->first(); $execution = $this->backup->executions()->where('id', $executionId)->first();
if (is_null($execution)) { if (is_null($execution)) {
$this->dispatch('error', 'Backup execution not found.'); $this->dispatch('error', 'Backup execution not found.');
return; return;
} }
@@ -103,6 +109,7 @@ class BackupExecutions extends Component
return $server; return $server;
} }
} }
return null; return null;
} }
@@ -113,6 +120,7 @@ class BackupExecutions extends Component
return 'UTC'; return 'UTC';
} }
$serverTimezone = $server->settings->server_timezone; $serverTimezone = $server->settings->server_timezone;
return $serverTimezone; return $serverTimezone;
} }
@@ -125,6 +133,7 @@ class BackupExecutions extends Component
} catch (\Exception $e) { } catch (\Exception $e) {
$dateObj->setTimezone(new \DateTimeZone('UTC')); $dateObj->setTimezone(new \DateTimeZone('UTC'));
} }
return $dateObj->format('Y-m-d H:i:s T'); return $dateObj->format('Y-m-d H:i:s T');
} }
@@ -134,7 +143,7 @@ class BackupExecutions extends Component
'checkboxes' => [ 'checkboxes' => [
['id' => 'delete_backup_s3', 'label' => 'Delete the selected backup permanently form S3 Storage'], ['id' => 'delete_backup_s3', 'label' => 'Delete the selected backup permanently form S3 Storage'],
['id' => 'delete_backup_sftp', 'label' => 'Delete the selected backup permanently form SFTP Storage'], ['id' => 'delete_backup_sftp', 'label' => 'Delete the selected backup permanently form SFTP Storage'],
] ],
]); ]);
} }
} }

View File

@@ -14,9 +14,9 @@ use App\Models\StandaloneMongodb;
use App\Models\StandaloneMysql; use App\Models\StandaloneMysql;
use App\Models\StandalonePostgresql; use App\Models\StandalonePostgresql;
use App\Models\StandaloneRedis; use App\Models\StandaloneRedis;
use Livewire\Component;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Livewire\Component;
class FileStorage extends Component class FileStorage extends Component
{ {
@@ -89,6 +89,7 @@ class FileStorage extends Component
{ {
if (! Hash::check($password, Auth::user()->password)) { if (! Hash::check($password, Auth::user()->password)) {
$this->addError('password', 'The provided password is incorrect.'); $this->addError('password', 'The provided password is incorrect.');
return; return;
} }
@@ -142,7 +143,7 @@ class FileStorage extends Component
], ],
'fileDeletionCheckboxes' => [ 'fileDeletionCheckboxes' => [
['id' => 'permanently_delete', 'label' => 'The selected file will be permanently deleted form the server.'], ['id' => 'permanently_delete', 'label' => 'The selected file will be permanently deleted form the server.'],
] ],
]); ]);
} }
} }

View File

@@ -8,10 +8,10 @@ use App\Events\ApplicationStatusChanged;
use App\Jobs\ContainerStatusJob; use App\Jobs\ContainerStatusJob;
use App\Models\Server; use App\Models\Server;
use App\Models\StandaloneDocker; use App\Models\StandaloneDocker;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Livewire\Component; use Livewire\Component;
use Visus\Cuid2\Cuid2; use Visus\Cuid2\Cuid2;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;
class Destination extends Component class Destination extends Component
{ {
@@ -121,6 +121,7 @@ class Destination extends Component
{ {
if (! Hash::check($password, Auth::user()->password)) { if (! Hash::check($password, Auth::user()->password)) {
$this->addError('password', 'The provided password is incorrect.'); $this->addError('password', 'The provided password is incorrect.');
return; return;
} }

View File

@@ -2,6 +2,7 @@
namespace App\Livewire\Project\Shared; namespace App\Livewire\Project\Shared;
use App\Helpers\SshMultiplexingHelper;
use App\Models\Application; use App\Models\Application;
use App\Models\Server; use App\Models\Server;
use App\Models\Service; use App\Models\Service;
@@ -17,7 +18,6 @@ use App\Models\StandalonePostgresql;
use App\Models\StandaloneRedis; use App\Models\StandaloneRedis;
use Illuminate\Support\Facades\Process; use Illuminate\Support\Facades\Process;
use Livewire\Component; use Livewire\Component;
use App\Helpers\SshMultiplexingHelper;
class GetLogs extends Component class GetLogs extends Component
{ {

View File

@@ -7,7 +7,9 @@ use Livewire\Component;
class Executions extends Component class Executions extends Component
{ {
public $executions = []; public $executions = [];
public $selectedKey; public $selectedKey;
public $task; public $task;
public function getListeners() public function getListeners()
@@ -42,6 +44,7 @@ class Executions extends Component
return $this->task->service->destination->server; return $this->task->service->destination->server;
} }
} }
return null; return null;
} }
@@ -52,6 +55,7 @@ class Executions extends Component
return 'UTC'; return 'UTC';
} }
$serverTimezone = $server->settings->server_timezone; $serverTimezone = $server->settings->server_timezone;
return $serverTimezone; return $serverTimezone;
} }
@@ -64,6 +68,7 @@ class Executions extends Component
} catch (\Exception $e) { } catch (\Exception $e) {
$dateObj->setTimezone(new \DateTimeZone('UTC')); $dateObj->setTimezone(new \DateTimeZone('UTC'));
} }
return $dateObj->format('Y-m-d H:i:s T'); return $dateObj->format('Y-m-d H:i:s T');
} }
} }

View File

@@ -3,8 +3,8 @@
namespace App\Livewire\Project\Shared\Storages; namespace App\Livewire\Project\Shared\Storages;
use App\Models\LocalPersistentVolume; use App\Models\LocalPersistentVolume;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Livewire\Component; use Livewire\Component;
class Show extends Component class Show extends Component
@@ -42,6 +42,7 @@ class Show extends Component
{ {
if (! Hash::check($password, Auth::user()->password)) { if (! Hash::check($password, Auth::user()->password)) {
$this->addError('password', 'The provided password is incorrect.'); $this->addError('password', 'The provided password is incorrect.');
return; return;
} }

View File

@@ -8,9 +8,13 @@ use Livewire\Component;
class Create extends Component class Create extends Component
{ {
public string $name = ''; public string $name = '';
public string $value = ''; public string $value = '';
public ?string $from = null; public ?string $from = null;
public ?string $description = null; public ?string $description = null;
public ?string $publicKey = null; public ?string $publicKey = null;
protected $rules = [ protected $rules = [

View File

@@ -2,8 +2,8 @@
namespace App\Livewire\Security\PrivateKey; namespace App\Livewire\Security\PrivateKey;
use Livewire\Component;
use App\Models\PrivateKey; use App\Models\PrivateKey;
use Livewire\Component;
class Index extends Component class Index extends Component
{ {

View File

@@ -3,9 +3,9 @@
namespace App\Livewire\Server; namespace App\Livewire\Server;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Livewire\Component;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Livewire\Component;
class Delete extends Component class Delete extends Component
{ {
@@ -17,6 +17,7 @@ class Delete extends Component
{ {
if (! Hash::check($password, Auth::user()->password)) { if (! Hash::check($password, Auth::user()->password)) {
$this->addError('password', 'The provided password is incorrect.'); $this->addError('password', 'The provided password is incorrect.');
return; return;
} }
try { try {

View File

@@ -6,9 +6,9 @@ use App\Actions\Proxy\CheckProxy;
use App\Actions\Proxy\StartProxy; use App\Actions\Proxy\StartProxy;
use App\Events\ProxyStatusChanged; use App\Events\ProxyStatusChanged;
use App\Models\Server; use App\Models\Server;
use Livewire\Component;
use Illuminate\Support\Facades\Process;
use Illuminate\Process\InvokedProcess; use Illuminate\Process\InvokedProcess;
use Illuminate\Support\Facades\Process;
use Livewire\Component;
class Deploy extends Component class Deploy extends Component
{ {

View File

@@ -4,9 +4,9 @@ namespace App\Livewire\Team;
use App\Models\Team; use App\Models\Team;
use App\Models\User; use App\Models\User;
use Livewire\Component;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Livewire\Component;
class AdminView extends Component class AdminView extends Component
{ {
@@ -79,6 +79,7 @@ class AdminView extends Component
{ {
if (! Hash::check($password, Auth::user()->password)) { if (! Hash::check($password, Auth::user()->password)) {
$this->addError('password', 'The provided password is incorrect.'); $this->addError('password', 'The provided password is incorrect.');
return; return;
} }
if (! auth()->user()->isInstanceAdmin()) { if (! auth()->user()->isInstanceAdmin()) {

View File

@@ -6,10 +6,10 @@ use App\Enums\ApplicationDeploymentStatus;
use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Collection;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Process;
use Illuminate\Process\InvokedProcess; use Illuminate\Process\InvokedProcess;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Process;
use Illuminate\Support\Str;
use OpenApi\Attributes as OA; use OpenApi\Attributes as OA;
use RuntimeException; use RuntimeException;
use Spatie\Activitylog\Models\Activity; use Spatie\Activitylog\Models\Activity;
@@ -237,7 +237,6 @@ class Application extends BaseModel
instant_remote_process(["docker network rm {$uuid}"], $server, false); instant_remote_process(["docker network rm {$uuid}"], $server, false);
} }
public function additional_servers() public function additional_servers()
{ {
return $this->belongsToMany(Server::class, 'additional_destinations') return $this->belongsToMany(Server::class, 'additional_destinations')
@@ -1096,6 +1095,7 @@ class Application extends BaseModel
throw new \Exception($e->getMessage()); throw new \Exception($e->getMessage());
} }
$services = data_get($yaml, 'services'); $services = data_get($yaml, 'services');
$commands = collect([]); $commands = collect([]);
$services = collect($services)->map(function ($service) use ($commands) { $services = collect($services)->map(function ($service) use ($commands) {
$serviceVolumes = collect(data_get($service, 'volumes', [])); $serviceVolumes = collect(data_get($service, 'volumes', []));

View File

@@ -35,14 +35,17 @@ class ScheduledDatabaseBackup extends BaseModel
{ {
return $this->hasMany(ScheduledDatabaseBackupExecution::class)->where('created_at', '>=', now()->subDays($days))->get(); return $this->hasMany(ScheduledDatabaseBackupExecution::class)->where('created_at', '>=', now()->subDays($days))->get();
} }
public function server() public function server()
{ {
if ($this->database) { if ($this->database) {
if ($this->database->destination && $this->database->destination->server) { if ($this->database->destination && $this->database->destination->server) {
$server = $this->database->destination->server; $server = $this->database->destination->server;
return $server; return $server;
} }
} }
return null; return null;
} }
} }

View File

@@ -4,8 +4,6 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\HasOne;
use App\Models\Service;
use App\Models\Application;
class ScheduledTask extends BaseModel class ScheduledTask extends BaseModel
{ {
@@ -37,19 +35,23 @@ class ScheduledTask extends BaseModel
if ($this->application) { if ($this->application) {
if ($this->application->destination && $this->application->destination->server) { if ($this->application->destination && $this->application->destination->server) {
$server = $this->application->destination->server; $server = $this->application->destination->server;
return $server; return $server;
} }
} elseif ($this->service) { } elseif ($this->service) {
if ($this->service->destination && $this->service->destination->server) { if ($this->service->destination && $this->service->destination->server) {
$server = $this->service->destination->server; $server = $this->service->destination->server;
return $server; return $server;
} }
} elseif ($this->database) { } elseif ($this->database) {
if ($this->database->destination && $this->database->destination->server) { if ($this->database->destination && $this->database->destination->server) {
$server = $this->database->destination->server; $server = $this->database->destination->server;
return $server; return $server;
} }
} }
return null; return null;
} }
} }

View File

@@ -6,9 +6,9 @@ use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Process\InvokedProcess;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Process; use Illuminate\Support\Facades\Process;
use Illuminate\Process\InvokedProcess;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use OpenApi\Attributes as OA; use OpenApi\Attributes as OA;
use Spatie\Url\Url; use Spatie\Url\Url;
@@ -144,6 +144,7 @@ class Service extends BaseModel
foreach ($dbs as $db) { foreach ($dbs as $db) {
$containersToStop[] = "{$db->name}-{$this->uuid}"; $containersToStop[] = "{$db->name}-{$this->uuid}";
} }
return $containersToStop; return $containersToStop;
} }

View File

@@ -3,11 +3,11 @@
namespace App\Traits; namespace App\Traits;
use App\Enums\ApplicationDeploymentStatus; use App\Enums\ApplicationDeploymentStatus;
use App\Helpers\SshMultiplexingHelper;
use App\Models\Server; use App\Models\Server;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Process; use Illuminate\Support\Facades\Process;
use App\Helpers\SshMultiplexingHelper;
trait ExecuteRemoteCommand trait ExecuteRemoteCommand
{ {

View File

@@ -2,8 +2,8 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
class UpdateServerSettingsDefaultTimezone extends Migration class UpdateServerSettingsDefaultTimezone extends Migration
{ {

View File

@@ -68,17 +68,10 @@
<option value="www">Redirect to www.</option> <option value="www">Redirect to www.</option>
<option value="non-www">Redirect to non-www.</option> <option value="non-www">Redirect to non-www.</option>
</x-forms.select> </x-forms.select>
<x-modal-confirmation <x-modal-confirmation title="Confirm Redirection Setting?" buttonTitle="Set Direction"
title="Confirm Redirection Setting?" submitAction="set_redirect" :actions="['All traffic will be redirected to the selected direction.']" confirmationText="{{ $application->fqdn . '/' }}"
buttonTitle="Set Direction"
submitAction="set_redirect"
:actions="['All traffic will be redirected to the selected direction.']"
confirmationText="{{ $application->fqdn . '/' }}"
confirmationLabel="Please confirm the execution of the action by entering the Application URL below" confirmationLabel="Please confirm the execution of the action by entering the Application URL below"
shortConfirmationLabel="Application URL" shortConfirmationLabel="Application URL" :confirmWithPassword="false" step2ButtonText="Set Direction">
:confirmWithPassword="false"
step2ButtonText="Set Direction"
>
<x-slot:customButton> <x-slot:customButton>
<div class="w-[7.2rem]">Set Direction</div> <div class="w-[7.2rem]">Set Direction</div>
</x-slot:customButton> </x-slot:customButton>
@@ -311,18 +304,15 @@
helper="If you know what are you doing, you can enable this to edit the labels directly. Coolify won't update labels automatically. <br><br>Be careful, it could break the proxy configuration after you restart the container." helper="If you know what are you doing, you can enable this to edit the labels directly. Coolify won't update labels automatically. <br><br>Be careful, it could break the proxy configuration after you restart the container."
id="application.settings.is_container_label_readonly_enabled" instantSave></x-forms.checkbox> id="application.settings.is_container_label_readonly_enabled" instantSave></x-forms.checkbox>
</div> </div>
<x-modal-confirmation <x-modal-confirmation title="Confirm Labels Reset to Coolify Defaults?"
title="Confirm Labels Reset to Coolify Defaults?" buttonTitle="Reset Labels to Coolify Defaults" buttonFullWidth submitAction="resetDefaultLabels"
buttonTitle="Reset Labels to Coolify Defaults" :actions="[
buttonFullWidth 'All your custom proxy labels will be lost.',
submitAction="resetDefaultLabels" 'Proxy labels (traefik, caddy, etc) will be reset to the coolify defaults.',
:actions="['All your custom proxy labels will be lost.', 'Proxy labels (traefik, caddy, etc) will be reset to the coolify defaults.']" ]" confirmationText="{{ $application->fqdn . '/' }}"
confirmationText="{{ $application->fqdn . '/' }}"
confirmationLabel="Please confirm the execution of the actions by entering the Application URL below" confirmationLabel="Please confirm the execution of the actions by entering the Application URL below"
shortConfirmationLabel="Application URL" shortConfirmationLabel="Application URL" :confirmWithPassword="false"
:confirmWithPassword="false" step2ButtonText="Permanently Reset Labels" />
step2ButtonText="Permanently Reset Labels"
/>
@endif @endif
<h3 class="pt-8">Pre/Post Deployment Commands</h3> <h3 class="pt-8">Pre/Post Deployment Commands</h3>

View File

@@ -67,7 +67,6 @@ use App\Livewire\Team\Member\Index as TeamMemberIndex;
use App\Livewire\Terminal\Index as TerminalIndex; use App\Livewire\Terminal\Index as TerminalIndex;
use App\Livewire\Waitlist\Index as WaitlistIndex; use App\Livewire\Waitlist\Index as WaitlistIndex;
use App\Models\GitlabApp; use App\Models\GitlabApp;
use App\Models\PrivateKey;
use App\Models\ScheduledDatabaseBackupExecution; use App\Models\ScheduledDatabaseBackupExecution;
use App\Models\Server; use App\Models\Server;
use App\Models\StandaloneDocker; use App\Models\StandaloneDocker;