From e0aa28ba312520e6d89dcd38573791a9684bd6c0 Mon Sep 17 00:00:00 2001
From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com>
Date: Thu, 28 Aug 2025 10:00:19 +0200
Subject: [PATCH] refactor(domains): rename check_domain_usage to
checkDomainUsage and update references across the application
---
app/Livewire/Project/Application/General.php | 4 +-
app/Livewire/Project/Application/Previews.php | 2 +-
app/Livewire/Project/Service/EditDomain.php | 2 +-
.../Service/ServiceApplicationView.php | 2 +-
app/Livewire/Settings/Index.php | 2 +-
bootstrap/helpers/domains.php | 78 +++++++++++++++++++
bootstrap/helpers/shared.php | 73 -----------------
7 files changed, 84 insertions(+), 79 deletions(-)
create mode 100644 bootstrap/helpers/domains.php
diff --git a/app/Livewire/Project/Application/General.php b/app/Livewire/Project/Application/General.php
index 2c8ebb9e2..67731c87d 100644
--- a/app/Livewire/Project/Application/General.php
+++ b/app/Livewire/Project/Application/General.php
@@ -485,7 +485,7 @@ class General extends Component
}
}
}
- check_domain_usage(resource: $this->application);
+ checkDomainUsage(resource: $this->application);
$this->application->fqdn = $domains->implode(',');
$this->resetDefaultLabels(false);
}
@@ -588,7 +588,7 @@ class General extends Component
}
}
}
- check_domain_usage(resource: $this->application);
+ checkDomainUsage(resource: $this->application);
$this->application->save();
$this->resetDefaultLabels();
}
diff --git a/app/Livewire/Project/Application/Previews.php b/app/Livewire/Project/Application/Previews.php
index 9164c1475..cc3c5ea46 100644
--- a/app/Livewire/Project/Application/Previews.php
+++ b/app/Livewire/Project/Application/Previews.php
@@ -63,7 +63,7 @@ class Previews extends Component
$this->dispatch('error', 'Validating DNS failed.', "Make sure you have added the DNS records correctly.
$preview->fqdn->{$this->application->destination->server->ip}
Check this documentation for further help.");
$success = false;
}
- check_domain_usage(resource: $this->application, domain: $preview->fqdn);
+ checkDomainUsage(resource: $this->application, domain: $preview->fqdn);
}
if (! $preview) {
diff --git a/app/Livewire/Project/Service/EditDomain.php b/app/Livewire/Project/Service/EditDomain.php
index b7f73159e..1b24dc23a 100644
--- a/app/Livewire/Project/Service/EditDomain.php
+++ b/app/Livewire/Project/Service/EditDomain.php
@@ -37,7 +37,7 @@ class EditDomain extends Component
if ($warning) {
$this->dispatch('warning', __('warning.sslipdomain'));
}
- check_domain_usage(resource: $this->application);
+ checkDomainUsage(resource: $this->application);
$this->validate();
$this->application->save();
updateCompose($this->application);
diff --git a/app/Livewire/Project/Service/ServiceApplicationView.php b/app/Livewire/Project/Service/ServiceApplicationView.php
index 5e178374b..80fe59891 100644
--- a/app/Livewire/Project/Service/ServiceApplicationView.php
+++ b/app/Livewire/Project/Service/ServiceApplicationView.php
@@ -145,7 +145,7 @@ class ServiceApplicationView extends Component
if ($warning) {
$this->dispatch('warning', __('warning.sslipdomain'));
}
- check_domain_usage(resource: $this->application);
+ checkDomainUsage(resource: $this->application);
$this->validate();
$this->application->save();
updateCompose($this->application);
diff --git a/app/Livewire/Settings/Index.php b/app/Livewire/Settings/Index.php
index bce343224..98e5ce8bd 100644
--- a/app/Livewire/Settings/Index.php
+++ b/app/Livewire/Settings/Index.php
@@ -108,7 +108,7 @@ class Index extends Component
}
}
if ($this->fqdn) {
- check_domain_usage(domain: $this->fqdn);
+ checkDomainUsage(domain: $this->fqdn);
}
$this->instantSave(isSave: false);
diff --git a/bootstrap/helpers/domains.php b/bootstrap/helpers/domains.php
new file mode 100644
index 000000000..36e044344
--- /dev/null
+++ b/bootstrap/helpers/domains.php
@@ -0,0 +1,78 @@
+getMorphClass() === Application::class && $resource->build_pack === 'dockercompose') {
+ $domains = data_get(json_decode($resource->docker_compose_domains, true), '*.domain');
+ $domains = collect($domains);
+ } else {
+ $domains = collect($resource->fqdns);
+ }
+ } elseif ($domain) {
+ $domains = collect([$domain]);
+ } else {
+ throw new \RuntimeException('No resource or FQDN provided.');
+ }
+ $domains = $domains->map(function ($domain) {
+ if (str($domain)->endsWith('/')) {
+ $domain = str($domain)->beforeLast('/');
+ }
+
+ return str($domain);
+ });
+ $apps = Application::all();
+ foreach ($apps as $app) {
+ $list_of_domains = collect(explode(',', $app->fqdn))->filter(fn ($fqdn) => $fqdn !== '');
+ foreach ($list_of_domains as $domain) {
+ if (str($domain)->endsWith('/')) {
+ $domain = str($domain)->beforeLast('/');
+ }
+ $naked_domain = str($domain)->value();
+ if ($domains->contains($naked_domain)) {
+ if (data_get($resource, 'uuid')) {
+ if ($resource->uuid !== $app->uuid) {
+ throw new \RuntimeException("Domain $naked_domain is already in use by another resource:
Link: {$app->name}");
+ }
+ } elseif ($domain) {
+ throw new \RuntimeException("Domain $naked_domain is already in use by another resource:
Link: {$app->name}");
+ }
+ }
+ }
+ }
+ $apps = ServiceApplication::all();
+ foreach ($apps as $app) {
+ $list_of_domains = collect(explode(',', $app->fqdn))->filter(fn ($fqdn) => $fqdn !== '');
+ foreach ($list_of_domains as $domain) {
+ if (str($domain)->endsWith('/')) {
+ $domain = str($domain)->beforeLast('/');
+ }
+ $naked_domain = str($domain)->value();
+ if ($domains->contains($naked_domain)) {
+ if (data_get($resource, 'uuid')) {
+ if ($resource->uuid !== $app->uuid) {
+ throw new \RuntimeException("Domain $naked_domain is already in use by another resource:
Link: {$app->service->name}");
+ }
+ } elseif ($domain) {
+ throw new \RuntimeException("Domain $naked_domain is already in use by another resource:
Link: {$app->service->name}");
+ }
+ }
+ }
+ }
+ if ($resource) {
+ $settings = instanceSettings();
+ if (data_get($settings, 'fqdn')) {
+ $domain = data_get($settings, 'fqdn');
+ if (str($domain)->endsWith('/')) {
+ $domain = str($domain)->beforeLast('/');
+ }
+ $naked_domain = str($domain)->value();
+ if ($domains->contains($naked_domain)) {
+ throw new \RuntimeException("Domain $naked_domain is already in use by this Coolify instance.");
+ }
+ }
+ }
+}
diff --git a/bootstrap/helpers/shared.php b/bootstrap/helpers/shared.php
index 7a9b5df80..4743a811b 100644
--- a/bootstrap/helpers/shared.php
+++ b/bootstrap/helpers/shared.php
@@ -1157,79 +1157,6 @@ function checkIfDomainIsAlreadyUsed(Collection|array $domains, ?string $teamId =
}
}
}
-function check_domain_usage(ServiceApplication|Application|null $resource = null, ?string $domain = null)
-{
- if ($resource) {
- if ($resource->getMorphClass() === \App\Models\Application::class && $resource->build_pack === 'dockercompose') {
- $domains = data_get(json_decode($resource->docker_compose_domains, true), '*.domain');
- $domains = collect($domains);
- } else {
- $domains = collect($resource->fqdns);
- }
- } elseif ($domain) {
- $domains = collect($domain);
- } else {
- throw new \RuntimeException('No resource or FQDN provided.');
- }
- $domains = $domains->map(function ($domain) {
- if (str($domain)->endsWith('/')) {
- $domain = str($domain)->beforeLast('/');
- }
-
- return str($domain);
- });
- $apps = Application::all();
- foreach ($apps as $app) {
- $list_of_domains = collect(explode(',', $app->fqdn))->filter(fn ($fqdn) => $fqdn !== '');
- foreach ($list_of_domains as $domain) {
- if (str($domain)->endsWith('/')) {
- $domain = str($domain)->beforeLast('/');
- }
- $naked_domain = str($domain)->value();
- if ($domains->contains($naked_domain)) {
- if (data_get($resource, 'uuid')) {
- if ($resource->uuid !== $app->uuid) {
- throw new \RuntimeException("Domain $naked_domain is already in use by another resource:
Link: {$app->name}");
- }
- } elseif ($domain) {
- throw new \RuntimeException("Domain $naked_domain is already in use by another resource:
Link: {$app->name}");
- }
- }
- }
- }
- $apps = ServiceApplication::all();
- foreach ($apps as $app) {
- $list_of_domains = collect(explode(',', $app->fqdn))->filter(fn ($fqdn) => $fqdn !== '');
- foreach ($list_of_domains as $domain) {
- if (str($domain)->endsWith('/')) {
- $domain = str($domain)->beforeLast('/');
- }
- $naked_domain = str($domain)->value();
- if ($domains->contains($naked_domain)) {
- if (data_get($resource, 'uuid')) {
- if ($resource->uuid !== $app->uuid) {
- throw new \RuntimeException("Domain $naked_domain is already in use by another resource:
Link: {$app->service->name}");
- }
- } elseif ($domain) {
- throw new \RuntimeException("Domain $naked_domain is already in use by another resource:
Link: {$app->service->name}");
- }
- }
- }
- }
- if ($resource) {
- $settings = instanceSettings();
- if (data_get($settings, 'fqdn')) {
- $domain = data_get($settings, 'fqdn');
- if (str($domain)->endsWith('/')) {
- $domain = str($domain)->beforeLast('/');
- }
- $naked_domain = str($domain)->value();
- if ($domains->contains($naked_domain)) {
- throw new \RuntimeException("Domain $naked_domain is already in use by this Coolify instance.");
- }
- }
- }
-}
function parseCommandsByLineForSudo(Collection $commands, Server $server): array
{