diff --git a/app/Actions/Database/StartMariadb.php b/app/Actions/Database/StartMariadb.php index 8dca584f2..3274566a1 100644 --- a/app/Actions/Database/StartMariadb.php +++ b/app/Actions/Database/StartMariadb.php @@ -71,7 +71,7 @@ class StartMariadb if (!is_null($this->database->limits_cpuset)) { data_set($docker_compose, "services.{$container_name}.cpuset", $this->database->limits_cpuset); } - if ($this->database->destination->server->isLogDrainEnabled() && $this->database->isLogDrainEnabled()) { + if ($this->database->destination->server->is_log_drain_enabled() && $this->database->is_log_drain_enabled()) { $docker_compose['services'][$container_name]['logging'] = [ 'driver' => 'fluentd', 'options' => [ diff --git a/app/Actions/Database/StartMongodb.php b/app/Actions/Database/StartMongodb.php index ef04a9be8..75bfe3ed3 100644 --- a/app/Actions/Database/StartMongodb.php +++ b/app/Actions/Database/StartMongodb.php @@ -78,7 +78,7 @@ class StartMongodb if (!is_null($this->database->limits_cpuset)) { data_set($docker_compose, "services.{$container_name}.cpuset", $this->database->limits_cpuset); } - if ($this->database->destination->server->isLogDrainEnabled() && $this->database->isLogDrainEnabled()) { + if ($this->database->destination->server->is_log_drain_enabled() && $this->database->is_log_drain_enabled()) { $docker_compose['services'][$container_name]['logging'] = [ 'driver' => 'fluentd', 'options' => [ diff --git a/app/Actions/Database/StartMysql.php b/app/Actions/Database/StartMysql.php index 3b47483a3..4a8edc1e2 100644 --- a/app/Actions/Database/StartMysql.php +++ b/app/Actions/Database/StartMysql.php @@ -71,7 +71,7 @@ class StartMysql if (!is_null($this->database->limits_cpuset)) { data_set($docker_compose, "services.{$container_name}.cpuset", $this->database->limits_cpuset); } - if ($this->database->destination->server->isLogDrainEnabled() && $this->database->isLogDrainEnabled()) { + if ($this->database->destination->server->is_log_drain_enabled() && $this->database->is_log_drain_enabled()) { $docker_compose['services'][$container_name]['logging'] = [ 'driver' => 'fluentd', 'options' => [ diff --git a/app/Actions/Database/StartPostgresql.php b/app/Actions/Database/StartPostgresql.php index 844f81c31..ea5de10da 100644 --- a/app/Actions/Database/StartPostgresql.php +++ b/app/Actions/Database/StartPostgresql.php @@ -77,7 +77,7 @@ class StartPostgresql if (!is_null($this->database->limits_cpuset)) { data_set($docker_compose, "services.{$container_name}.cpuset", $this->database->limits_cpuset); } - if ($this->database->destination->server->isLogDrainEnabled() && $this->database->isLogDrainEnabled()) { + if ($this->database->destination->server->is_log_drain_enabled() && $this->database->is_log_drain_enabled()) { ray('Log Drain Enabled'); $docker_compose['services'][$container_name]['logging'] = [ 'driver' => 'fluentd', diff --git a/app/Actions/Database/StartRedis.php b/app/Actions/Database/StartRedis.php index e1a8eef41..692c14c1c 100644 --- a/app/Actions/Database/StartRedis.php +++ b/app/Actions/Database/StartRedis.php @@ -81,7 +81,7 @@ class StartRedis if (!is_null($this->database->limits_cpuset)) { data_set($docker_compose, "services.{$container_name}.cpuset", $this->database->limits_cpuset); } - if ($this->database->destination->server->isLogDrainEnabled() && $this->database->isLogDrainEnabled()) { + if ($this->database->destination->server->is_log_drain_enabled() && $this->database->is_log_drain_enabled()) { $docker_compose['services'][$container_name]['logging'] = [ 'driver' => 'fluentd', 'options' => [ diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index e92c602cf..4599dd5a4 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -77,7 +77,7 @@ class Kernel extends ConsoleKernel // ray('dispatching container status job in ' . $randomSeconds . ' seconds'); // dispatch($job); // })->name('container-status-' . $server->id)->everyMinute()->onOneServer(); - if ($server->isLogDrainEnabled()) { + if ($server->is_log_drain_enabled()) { $schedule->job(new CheckLogDrainContainerJob($server))->everyMinute()->onOneServer(); // $schedule // ->call(function () use ($server) { diff --git a/app/Jobs/ApplicationDeploymentJob.php b/app/Jobs/ApplicationDeploymentJob.php index 0dedfd596..29709d675 100644 --- a/app/Jobs/ApplicationDeploymentJob.php +++ b/app/Jobs/ApplicationDeploymentJob.php @@ -1185,7 +1185,7 @@ class ApplicationDeploymentJob implements ShouldQueue, ShouldBeEncrypted } else { $docker_compose['services'][$this->container_name]['labels'] = $labels; } - if ($this->server->isLogDrainEnabled() && $this->application->isLogDrainEnabled()) { + if ($this->server->is_log_drain_enabled() && $this->application->is_log_drain_enabled()) { $docker_compose['services'][$this->container_name]['logging'] = [ 'driver' => 'fluentd', 'options' => [ diff --git a/app/Jobs/DatabaseBackupJob.php b/app/Jobs/DatabaseBackupJob.php index 71de3e352..aa4b2fa7f 100644 --- a/app/Jobs/DatabaseBackupJob.php +++ b/app/Jobs/DatabaseBackupJob.php @@ -319,7 +319,7 @@ class DatabaseBackupJob implements ShouldQueue, ShouldBeEncrypted private function backup_standalone_mongodb(string $databaseWithCollections): void { try { - $url = $this->database->getDbUrl(useInternal: true); + $url = $this->database->get_db_url(useInternal: true); if ($databaseWithCollections === 'all') { $commands[] = "mkdir -p " . $this->backup_dir; $commands[] = "docker exec $this->container_name mongodump --authenticationDatabase=admin --uri=$url --gzip --archive > $this->backup_location"; diff --git a/app/Livewire/Project/Application/Advanced.php b/app/Livewire/Project/Application/Advanced.php index 08b4f9523..442f5488a 100644 --- a/app/Livewire/Project/Application/Advanced.php +++ b/app/Livewire/Project/Application/Advanced.php @@ -9,6 +9,8 @@ class Advanced extends Component { public Application $application; public bool $is_force_https_enabled; + public bool $is_gzip_enabled; + public bool $is_stripprefix_enabled; protected $rules = [ 'application.settings.is_git_submodules_enabled' => 'boolean|required', 'application.settings.is_git_lfs_enabled' => 'boolean|required', @@ -19,6 +21,8 @@ class Advanced extends Component 'application.settings.is_gpu_enabled' => 'boolean|required', 'application.settings.is_build_server_enabled' => 'boolean|required', 'application.settings.is_consistent_container_name_enabled' => 'boolean|required', + 'application.settings.is_gzip_enabled' => 'boolean|required', + 'application.settings.is_stripprefix_enabled' => 'boolean|required', 'application.settings.gpu_driver' => 'string|required', 'application.settings.gpu_count' => 'string|required', 'application.settings.gpu_device_ids' => 'string|required', @@ -26,11 +30,13 @@ class Advanced extends Component ]; public function mount() { $this->is_force_https_enabled = $this->application->settings->is_force_https_enabled; + $this->is_gzip_enabled = $this->application->settings->is_gzip_enabled; + $this->is_stripprefix_enabled = $this->application->settings->is_stripprefix_enabled; } public function instantSave() { - if ($this->application->isLogDrainEnabled()) { - if (!$this->application->destination->server->isLogDrainEnabled()) { + if ($this->application->is_log_drain_enabled()) { + if (!$this->application->destination->server->is_log_drain_enabled()) { $this->application->settings->is_log_drain_enabled = false; $this->dispatch('error', 'Log drain is not enabled on this server.'); return; @@ -40,6 +46,14 @@ class Advanced extends Component $this->application->settings->is_force_https_enabled = $this->is_force_https_enabled; $this->dispatch('resetDefaultLabels', false); } + if ($this->application->settings->is_gzip_enabled !== $this->is_gzip_enabled) { + $this->application->settings->is_gzip_enabled = $this->is_gzip_enabled; + $this->dispatch('resetDefaultLabels', false); + } + if ($this->application->settings->is_stripprefix_enabled !== $this->is_stripprefix_enabled) { + $this->application->settings->is_stripprefix_enabled = $this->is_stripprefix_enabled; + $this->dispatch('resetDefaultLabels', false); + } $this->application->settings->save(); $this->dispatch('success', 'Settings saved.'); } diff --git a/app/Livewire/Project/Database/Mariadb/General.php b/app/Livewire/Project/Database/Mariadb/General.php index 9b15c6c3c..9e0a0c5fc 100644 --- a/app/Livewire/Project/Database/Mariadb/General.php +++ b/app/Livewire/Project/Database/Mariadb/General.php @@ -46,14 +46,14 @@ class General extends Component public function mount() { - $this->db_url = $this->database->getDbUrl(true); + $this->db_url = $this->database->get_db_url(true); if ($this->database->is_public) { - $this->db_url_public = $this->database->getDbUrl(); + $this->db_url_public = $this->database->get_db_url(); } } public function instantSaveAdvanced() { try { - if (!$this->database->destination->server->isLogDrainEnabled()) { + if (!$this->database->destination->server->is_log_drain_enabled()) { $this->database->is_log_drain_enabled = false; $this->dispatch('error', 'Log drain is not enabled on the server. Please enable it first.'); return; @@ -93,7 +93,7 @@ class General extends Component return; } StartDatabaseProxy::run($this->database); - $this->db_url_public = $this->database->getDbUrl(); + $this->db_url_public = $this->database->get_db_url(); $this->dispatch('success', 'Database is now publicly accessible.'); } else { StopDatabaseProxy::run($this->database); diff --git a/app/Livewire/Project/Database/Mongodb/General.php b/app/Livewire/Project/Database/Mongodb/General.php index cd3ea0630..5c9f9cb47 100644 --- a/app/Livewire/Project/Database/Mongodb/General.php +++ b/app/Livewire/Project/Database/Mongodb/General.php @@ -44,15 +44,15 @@ class General extends Component public function mount() { - $this->db_url = $this->database->getDbUrl(true); + $this->db_url = $this->database->get_db_url(true); if ($this->database->is_public) { - $this->db_url_public = $this->database->getDbUrl(); + $this->db_url_public = $this->database->get_db_url(); } } public function instantSaveAdvanced() { try { - if (!$this->database->destination->server->isLogDrainEnabled()) { + if (!$this->database->destination->server->is_log_drain_enabled()) { $this->database->is_log_drain_enabled = false; $this->dispatch('error', 'Log drain is not enabled on the server. Please enable it first.'); return; @@ -95,7 +95,7 @@ class General extends Component return; } StartDatabaseProxy::run($this->database); - $this->db_url_public = $this->database->getDbUrl(); + $this->db_url_public = $this->database->get_db_url(); $this->dispatch('success', 'Database is now publicly accessible.'); } else { StopDatabaseProxy::run($this->database); diff --git a/app/Livewire/Project/Database/Mysql/General.php b/app/Livewire/Project/Database/Mysql/General.php index 2470a934b..f67641b31 100644 --- a/app/Livewire/Project/Database/Mysql/General.php +++ b/app/Livewire/Project/Database/Mysql/General.php @@ -46,15 +46,15 @@ class General extends Component public function mount() { - $this->db_url = $this->database->getDbUrl(true); + $this->db_url = $this->database->get_db_url(true); if ($this->database->is_public) { - $this->db_url_public = $this->database->getDbUrl(); + $this->db_url_public = $this->database->get_db_url(); } } public function instantSaveAdvanced() { try { - if (!$this->database->destination->server->isLogDrainEnabled()) { + if (!$this->database->destination->server->is_log_drain_enabled()) { $this->database->is_log_drain_enabled = false; $this->dispatch('error', 'Log drain is not enabled on the server. Please enable it first.'); return; @@ -94,7 +94,7 @@ class General extends Component return; } StartDatabaseProxy::run($this->database); - $this->db_url_public = $this->database->getDbUrl(); + $this->db_url_public = $this->database->get_db_url(); $this->dispatch('success', 'Database is now publicly accessible.'); } else { StopDatabaseProxy::run($this->database); diff --git a/app/Livewire/Project/Database/Postgresql/General.php b/app/Livewire/Project/Database/Postgresql/General.php index 43f559140..102557351 100644 --- a/app/Livewire/Project/Database/Postgresql/General.php +++ b/app/Livewire/Project/Database/Postgresql/General.php @@ -53,14 +53,14 @@ class General extends Component ]; public function mount() { - $this->db_url = $this->database->getDbUrl(true); + $this->db_url = $this->database->get_db_url(true); if ($this->database->is_public) { - $this->db_url_public = $this->database->getDbUrl(); + $this->db_url_public = $this->database->get_db_url(); } } public function instantSaveAdvanced() { try { - if (!$this->database->destination->server->isLogDrainEnabled()) { + if (!$this->database->destination->server->is_log_drain_enabled()) { $this->database->is_log_drain_enabled = false; $this->dispatch('error', 'Log drain is not enabled on the server. Please enable it first.'); return; @@ -87,7 +87,7 @@ class General extends Component return; } StartDatabaseProxy::run($this->database); - $this->db_url_public = $this->database->getDbUrl(); + $this->db_url_public = $this->database->get_db_url(); $this->dispatch('success', 'Database is now publicly accessible.'); } else { StopDatabaseProxy::run($this->database); diff --git a/app/Livewire/Project/Database/Redis/General.php b/app/Livewire/Project/Database/Redis/General.php index 07c161de5..ee02239af 100644 --- a/app/Livewire/Project/Database/Redis/General.php +++ b/app/Livewire/Project/Database/Redis/General.php @@ -39,14 +39,14 @@ class General extends Component ]; public function mount() { - $this->db_url = $this->database->getDbUrl(true); + $this->db_url = $this->database->get_db_url(true); if ($this->database->is_public) { - $this->db_url_public = $this->database->getDbUrl(); + $this->db_url_public = $this->database->get_db_url(); } } public function instantSaveAdvanced() { try { - if (!$this->database->destination->server->isLogDrainEnabled()) { + if (!$this->database->destination->server->is_log_drain_enabled()) { $this->database->is_log_drain_enabled = false; $this->dispatch('error', 'Log drain is not enabled on the server. Please enable it first.'); return; @@ -86,7 +86,7 @@ class General extends Component return; } StartDatabaseProxy::run($this->database); - $this->db_url_public = $this->database->getDbUrl(); + $this->db_url_public = $this->database->get_db_url(); $this->dispatch('success', 'Database is now publicly accessible.'); } else { StopDatabaseProxy::run($this->database); diff --git a/app/Livewire/Project/Service/Database.php b/app/Livewire/Project/Service/Database.php index 8dec97852..c86c54da2 100644 --- a/app/Livewire/Project/Service/Database.php +++ b/app/Livewire/Project/Service/Database.php @@ -36,7 +36,7 @@ class Database extends Component } public function instantSaveAdvanced() { - if (!$this->database->service->destination->server->isLogDrainEnabled()) { + if (!$this->database->service->destination->server->is_log_drain_enabled()) { $this->database->is_log_drain_enabled = false; $this->dispatch('error', 'Log drain is not enabled on the server. Please enable it first.'); return; diff --git a/app/Livewire/Project/Service/ServiceApplicationView.php b/app/Livewire/Project/Service/ServiceApplicationView.php index 2bae41a80..9a4738c9f 100644 --- a/app/Livewire/Project/Service/ServiceApplicationView.php +++ b/app/Livewire/Project/Service/ServiceApplicationView.php @@ -18,6 +18,7 @@ class ServiceApplicationView extends Component 'application.required_fqdn' => 'required|boolean', 'application.is_log_drain_enabled' => 'nullable|boolean', 'application.is_gzip_enabled' => 'nullable|boolean', + 'application.is_stripprefix_enabled' => 'nullable|boolean', ]; public function render() { @@ -29,7 +30,7 @@ class ServiceApplicationView extends Component } public function instantSaveAdvanced() { - if (!$this->application->service->destination->server->isLogDrainEnabled()) { + if (!$this->application->service->destination->server->is_log_drain_enabled()) { $this->application->is_log_drain_enabled = false; $this->dispatch('error', 'Log drain is not enabled on the server. Please enable it first.'); return; diff --git a/app/Livewire/Server/LogDrains.php b/app/Livewire/Server/LogDrains.php index 4eca682d4..605aa25b5 100644 --- a/app/Livewire/Server/LogDrains.php +++ b/app/Livewire/Server/LogDrains.php @@ -54,7 +54,7 @@ class LogDrains extends Component { try { InstallLogDrain::run($this->server); - if (!$this->server->isLogDrainEnabled()) { + if (!$this->server->is_log_drain_enabled()) { $this->dispatch('serverRefresh'); $this->dispatch('success', 'Log drain service stopped.'); return; diff --git a/app/Models/Application.php b/app/Models/Application.php index f6df1ca88..24a61eca9 100644 --- a/app/Models/Application.php +++ b/app/Models/Application.php @@ -80,6 +80,18 @@ class Application extends BaseModel } return false; } + public function is_force_https_enabled() + { + return data_get($this, 'settings.is_force_https_enabled', false); + } + public function is_stripprefix_enabled() + { + return data_get($this, 'settings.is_stripprefix_enabled', true); + } + public function is_gzip_enabled() + { + return data_get($this, 'settings.is_gzip_enabled', true); + } public function link() { if (data_get($this, 'environment.project.uuid')) { @@ -481,7 +493,7 @@ class Application extends BaseModel { return application_configuration_dir() . "/{$this->uuid}"; } - public function isLogDrainEnabled() + public function is_log_drain_enabled() { return data_get($this, 'settings.is_log_drain_enabled', false); } diff --git a/app/Models/Server.php b/app/Models/Server.php index 4028109e2..5293bdd99 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -405,7 +405,7 @@ class Server extends BaseModel { return $this->settings->is_reachable && $this->settings->is_usable && !$this->settings->force_disabled; } - public function isLogDrainEnabled() + public function is_log_drain_enabled() { return $this->settings->is_logdrain_newrelic_enabled || $this->settings->is_logdrain_highlight_enabled || $this->settings->is_logdrain_axiom_enabled || $this->settings->is_logdrain_custom_enabled; } diff --git a/app/Models/ServiceApplication.php b/app/Models/ServiceApplication.php index 314a01ba3..8a01aa50e 100644 --- a/app/Models/ServiceApplication.php +++ b/app/Models/ServiceApplication.php @@ -19,11 +19,15 @@ class ServiceApplication extends BaseModel $service->fileStorages()->delete(); }); } - public function isLogDrainEnabled() + public function is_log_drain_enabled() { return data_get($this, 'is_log_drain_enabled', false); } - public function isGzipEnabled() + public function is_stripprefix_enabled() + { + return data_get($this, 'is_stripprefix_enabled', true); + } + public function is_gzip_enabled() { return data_get($this, 'is_gzip_enabled', true); } diff --git a/app/Models/ServiceDatabase.php b/app/Models/ServiceDatabase.php index 31bd2786d..c3f4cc278 100644 --- a/app/Models/ServiceDatabase.php +++ b/app/Models/ServiceDatabase.php @@ -17,11 +17,11 @@ class ServiceDatabase extends BaseModel $service->fileStorages()->delete(); }); } - public function isLogDrainEnabled() + public function is_log_drain_enabled() { return data_get($this, 'is_log_drain_enabled', false); } - public function isGzipEnabled() + public function is_gzip_enabled() { return true; } diff --git a/app/Models/StandaloneMariadb.php b/app/Models/StandaloneMariadb.php index 174397baa..2f2be6757 100644 --- a/app/Models/StandaloneMariadb.php +++ b/app/Models/StandaloneMariadb.php @@ -100,7 +100,7 @@ class StandaloneMariadb extends BaseModel } return null; } - public function isLogDrainEnabled() + public function is_log_drain_enabled() { return data_get($this, 'is_log_drain_enabled', false); } @@ -126,7 +126,7 @@ class StandaloneMariadb extends BaseModel ); } - public function getDbUrl(bool $useInternal = false): string + public function get_db_url(bool $useInternal = false): string { if ($this->is_public && !$useInternal) { return "mysql://{$this->mariadb_user}:{$this->mariadb_password}@{$this->destination->server->getIp}:{$this->public_port}/{$this->mariadb_database}"; diff --git a/app/Models/StandaloneMongodb.php b/app/Models/StandaloneMongodb.php index d6efaaa1e..cb10f8f55 100644 --- a/app/Models/StandaloneMongodb.php +++ b/app/Models/StandaloneMongodb.php @@ -92,7 +92,7 @@ class StandaloneMongodb extends BaseModel { return data_get($this, 'environment.project.team'); } - public function isLogDrainEnabled() + public function is_log_drain_enabled() { return data_get($this, 'is_log_drain_enabled', false); } @@ -142,7 +142,7 @@ class StandaloneMongodb extends BaseModel { return 'standalone-mongodb'; } - public function getDbUrl(bool $useInternal = false) + public function get_db_url(bool $useInternal = false) { if ($this->is_public && !$useInternal) { return "mongodb://{$this->mongo_initdb_root_username}:{$this->mongo_initdb_root_password}@{$this->destination->server->getIp}:{$this->public_port}/?directConnection=true"; diff --git a/app/Models/StandaloneMysql.php b/app/Models/StandaloneMysql.php index f317196aa..c2d2b5c6f 100644 --- a/app/Models/StandaloneMysql.php +++ b/app/Models/StandaloneMysql.php @@ -105,7 +105,7 @@ class StandaloneMysql extends BaseModel return 'standalone-mysql'; } - public function isLogDrainEnabled() + public function is_log_drain_enabled() { return data_get($this, 'is_log_drain_enabled', false); } @@ -127,7 +127,7 @@ class StandaloneMysql extends BaseModel ); } - public function getDbUrl(bool $useInternal = false): string + public function get_db_url(bool $useInternal = false): string { if ($this->is_public && !$useInternal) { return "mysql://{$this->mysql_user}:{$this->mysql_password}@{$this->destination->server->getIp}:{$this->public_port}/{$this->mysql_database}"; diff --git a/app/Models/StandalonePostgresql.php b/app/Models/StandalonePostgresql.php index 3d2317159..ad0dce108 100644 --- a/app/Models/StandalonePostgresql.php +++ b/app/Models/StandalonePostgresql.php @@ -97,7 +97,7 @@ class StandalonePostgresql extends BaseModel } return null; } - public function isLogDrainEnabled() + public function is_log_drain_enabled() { return data_get($this, 'is_log_drain_enabled', false); } @@ -126,7 +126,7 @@ class StandalonePostgresql extends BaseModel { return 'standalone-postgresql'; } - public function getDbUrl(bool $useInternal = false): string + public function get_db_url(bool $useInternal = false): string { if ($this->is_public && !$useInternal) { return "postgres://{$this->postgres_user}:{$this->postgres_password}@{$this->destination->server->getIp}:{$this->public_port}/{$this->postgres_db}"; diff --git a/app/Models/StandaloneRedis.php b/app/Models/StandaloneRedis.php index 6b6b6c415..c1b1d1390 100644 --- a/app/Models/StandaloneRedis.php +++ b/app/Models/StandaloneRedis.php @@ -96,7 +96,7 @@ class StandaloneRedis extends BaseModel } return null; } - public function isLogDrainEnabled() + public function is_log_drain_enabled() { return data_get($this, 'is_log_drain_enabled', false); } @@ -122,7 +122,7 @@ class StandaloneRedis extends BaseModel { return 'standalone-redis'; } - public function getDbUrl(bool $useInternal = false): string + public function get_db_url(bool $useInternal = false): string { if ($this->is_public && !$useInternal) { return "redis://:{$this->redis_password}@{$this->destination->server->getIp}:{$this->public_port}/0"; diff --git a/bootstrap/helpers/docker.php b/bootstrap/helpers/docker.php index 008bd4d7f..237a12d74 100644 --- a/bootstrap/helpers/docker.php +++ b/bootstrap/helpers/docker.php @@ -215,7 +215,7 @@ function generateServiceSpecificFqdns(ServiceApplication|Application $resource, } return $payload; } -function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_https_enabled = false, $onlyPort = null, ?Collection $serviceLabels = null, ?bool $is_gzip_enabled = true, ?string $service_name = null) +function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_https_enabled = false, $onlyPort = null, ?Collection $serviceLabels = null, ?bool $is_gzip_enabled = true, ?bool $is_stripprefix_enabled = true, ?string $service_name = null) { $labels = collect([]); $labels->push('traefik.enable=true'); @@ -281,8 +281,10 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_ $labels->push("traefik.http.services.{$https_label}.loadbalancer.server.port=$port"); } if ($path !== '/') { - $labels->push("traefik.http.middlewares.{$https_label}-stripprefix.stripprefix.prefixes={$path}"); - $middlewares = collect(["{$https_label}-stripprefix"]); + if ($is_stripprefix_enabled) { + $labels->push("traefik.http.middlewares.{$https_label}-stripprefix.stripprefix.prefixes={$path}"); + $middlewares = collect(["{$https_label}-stripprefix"]); + } if ($is_gzip_enabled) { $middlewares->push('gzip'); } @@ -334,8 +336,10 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_ $labels->push("traefik.http.routers.{$http_label}.service={$http_label}"); } if ($path !== '/') { - $labels->push("traefik.http.middlewares.{$http_label}-stripprefix.stripprefix.prefixes={$path}"); - $middlewares = collect(["{$http_label}-stripprefix"]); + if ($is_stripprefix_enabled) { + $labels->push("traefik.http.middlewares.{$http_label}-stripprefix.stripprefix.prefixes={$path}"); + $middlewares = collect(["{$http_label}-stripprefix"]); + } if ($is_gzip_enabled) { $middlewares->push('gzip'); } @@ -392,7 +396,14 @@ function generateLabelsApplication(Application $application, ?ApplicationPreview $domains = Str::of(data_get($application, 'fqdn'))->explode(','); } // Add Traefik labels no matter which proxy is selected - $labels = $labels->merge(fqdnLabelsForTraefik($appUuid, $domains, $application->settings->is_force_https_enabled, $onlyPort)); + $labels = $labels->merge(fqdnLabelsForTraefik( + uuid: $appUuid, + domains: $domains, + onlyPort: $onlyPort, + is_force_https_enabled: $application->is_force_https_enabled(), + is_gzip_enabled: $application->is_gzip_enabled(), + is_stripprefix_enabled: $application->is_stripprefix_enabled() + )); } return $labels->all(); } diff --git a/bootstrap/helpers/shared.php b/bootstrap/helpers/shared.php index 47dd8b284..47cc57c35 100644 --- a/bootstrap/helpers/shared.php +++ b/bootstrap/helpers/shared.php @@ -1047,10 +1047,17 @@ function parseDockerComposeFile(Service|Application $resource, bool $isNew = fal $serviceLabels = $serviceLabels->merge($defaultLabels); if (!$isDatabase && $fqdns->count() > 0) { if ($fqdns) { - $serviceLabels = $serviceLabels->merge(fqdnLabelsForTraefik($resource->uuid, $fqdns, true, serviceLabels: $serviceLabels, is_gzip_enabled: $savedService->isGzipEnabled(), service_name: $serviceName)); + $serviceLabels = $serviceLabels->merge(fqdnLabelsForTraefik( + uuid: $resource->uuid, + domains: $fqdns, + is_force_https_enabled: true, + serviceLabels: $serviceLabels, + is_gzip_enabled: $savedService->is_gzip_enabled(), + is_stripprefix_enabled: $savedService->is_stripprefix_enabled(), + service_name: $serviceName)); } } - if ($resource->server->isLogDrainEnabled() && $savedService->isLogDrainEnabled()) { + if ($resource->server->is_log_drain_enabled() && $savedService->is_log_drain_enabled()) { data_set($service, 'logging', [ 'driver' => 'fluentd', 'options' => [ @@ -1494,7 +1501,7 @@ function parseDockerComposeFile(Service|Application $resource, bool $isNew = fal $defaultLabels = defaultLabels($resource->id, $containerName, $pull_request_id, type: 'application'); $serviceLabels = $serviceLabels->merge($defaultLabels); - if ($server->isLogDrainEnabled() && $resource->isLogDrainEnabled()) { + if ($server->is_log_drain_enabled() && $resource->is_log_drain_enabled()) { data_set($service, 'logging', [ 'driver' => 'fluentd', 'options' => [ diff --git a/database/migrations/2024_03_04_092244_add_gzip_enabled_and_stripprefix_settings.php b/database/migrations/2024_03_04_092244_add_gzip_enabled_and_stripprefix_settings.php new file mode 100644 index 000000000..1787a07eb --- /dev/null +++ b/database/migrations/2024_03_04_092244_add_gzip_enabled_and_stripprefix_settings.php @@ -0,0 +1,36 @@ +boolean('is_gzip_enabled')->default(true); + $table->boolean('is_stripprefix_enabled')->default(true); + }); + Schema::table('service_applications', function (Blueprint $table) { + $table->boolean('is_stripprefix_enabled')->default(true); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('application_settings', function (Blueprint $table) { + $table->dropColumn('is_gzip_enabled'); + $table->dropColumn('is_stripprefix_enabled'); + }); + Schema::table('service_applications', function (Blueprint $table) { + $table->dropColumn('is_stripprefix_enabled'); + }); + } +}; diff --git a/resources/views/livewire/project/application/advanced.blade.php b/resources/views/livewire/project/application/advanced.blade.php index e88fb8a27..d4566a2b2 100644 --- a/resources/views/livewire/project/application/advanced.blade.php +++ b/resources/views/livewire/project/application/advanced.blade.php @@ -20,6 +20,11 @@ helper="The deployed container will have the same name ({{ $application->uuid }}). You will lose the rolling update feature!" instantSave id="application.settings.is_consistent_container_name_enabled" label="Consistent Container Names" /> + +

Logs

@if (!$application->settings->is_raw_compose_deployment_enabled) Advanced
+ helper="You can disable gzip compression if you want. Some services are compressing data by default. In this case, you do not need this." /> + diff --git a/resources/views/livewire/server/log-drains.blade.php b/resources/views/livewire/server/log-drains.blade.php index 496f60369..3936bf5f9 100644 --- a/resources/views/livewire/server/log-drains.blade.php +++ b/resources/views/livewire/server/log-drains.blade.php @@ -12,7 +12,7 @@
- @if ($server->isLogDrainEnabled()) + @if ($server->is_log_drain_enabled())
- @if ($server->isLogDrainEnabled()) + @if ($server->is_log_drain_enabled())
- @if ($server->isLogDrainEnabled()) + @if ($server->is_log_drain_enabled())