@@ -119,6 +119,7 @@ class General extends Component
 | 
			
		||||
    public function instantSave()
 | 
			
		||||
    {
 | 
			
		||||
        // @TODO: find another way - if possible
 | 
			
		||||
        $force_https = $this->application->settings->is_force_https_enabled;
 | 
			
		||||
        $this->application->settings->is_static = $this->is_static;
 | 
			
		||||
        if ($this->is_static) {
 | 
			
		||||
            $this->application->ports_exposes = 80;
 | 
			
		||||
@@ -137,6 +138,9 @@ class General extends Component
 | 
			
		||||
        $this->emit('success', 'Application settings updated!');
 | 
			
		||||
        $this->checkLabelUpdates();
 | 
			
		||||
        $this->isConfigurationChanged = $this->application->isConfigurationChanged();
 | 
			
		||||
        if ($force_https !== $this->is_force_https_enabled) {
 | 
			
		||||
            $this->resetDefaultLabels(false);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getWildcardDomain()
 | 
			
		||||
 
 | 
			
		||||
@@ -40,9 +40,7 @@ class ContainerStatusJob implements ShouldQueue, ShouldBeEncrypted
 | 
			
		||||
 | 
			
		||||
    public function __construct(public Server $server)
 | 
			
		||||
    {
 | 
			
		||||
        if (isDev()) {
 | 
			
		||||
            $this->handle();
 | 
			
		||||
        }
 | 
			
		||||
        $this->handle();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function handle()
 | 
			
		||||
@@ -129,7 +127,6 @@ class ContainerStatusJob implements ShouldQueue, ShouldBeEncrypted
 | 
			
		||||
                } catch (\Throwable $e) {
 | 
			
		||||
                    ray($e);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            } else {
 | 
			
		||||
                $this->server->proxy->status = data_get($foundProxyContainer, 'State.Status');
 | 
			
		||||
                $this->server->save();
 | 
			
		||||
 
 | 
			
		||||
@@ -538,7 +538,7 @@ class Service extends BaseModel
 | 
			
		||||
                $serviceLabels = $serviceLabels->merge($defaultLabels);
 | 
			
		||||
                if (!$isDatabase && $fqdns->count() > 0) {
 | 
			
		||||
                    if ($fqdns) {
 | 
			
		||||
                        $serviceLabels = $serviceLabels->merge(fqdnLabelsForTraefik($fqdns, true));
 | 
			
		||||
                        $serviceLabels = $serviceLabels->merge(fqdnLabelsForTraefik($this->uuid, $fqdns, true));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                data_set($service, 'labels', $serviceLabels->toArray());
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,12 @@ class EmailChannel
 | 
			
		||||
            );
 | 
			
		||||
        } catch (Exception $e) {
 | 
			
		||||
            ray($e->getMessage());
 | 
			
		||||
            send_internal_notification("EmailChannel error: {$e->getMessage()}. Failed to send email to: " . implode(', ', $recepients) . " with subject: {$mailMessage->subject}");
 | 
			
		||||
            $message = "EmailChannel error: {$e->getMessage()}. Failed to send email to:";
 | 
			
		||||
            if (isset($recepients)) {
 | 
			
		||||
                $message .= implode(', ', $recepients);
 | 
			
		||||
            }
 | 
			
		||||
            $message .= " with subject: {$mailMessage->subject}";
 | 
			
		||||
            send_internal_notification($message);
 | 
			
		||||
            throw $e;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -147,12 +147,11 @@ function defaultLabels($id, $name, $pull_request_id = 0, string $type = 'applica
 | 
			
		||||
    }
 | 
			
		||||
    return $labels;
 | 
			
		||||
}
 | 
			
		||||
function fqdnLabelsForTraefik(Collection $domains, bool $is_force_https_enabled, $onlyPort = null)
 | 
			
		||||
function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_https_enabled, $onlyPort = null)
 | 
			
		||||
{
 | 
			
		||||
    $labels = collect([]);
 | 
			
		||||
    $labels->push('traefik.enable=true');
 | 
			
		||||
    foreach ($domains as $domain) {
 | 
			
		||||
        $uuid = (string)new Cuid2(7);
 | 
			
		||||
    foreach ($domains as $loop => $domain) {
 | 
			
		||||
        $url = Url::fromString($domain);
 | 
			
		||||
        $host = $url->getHost();
 | 
			
		||||
        $path = $url->getPath();
 | 
			
		||||
@@ -161,8 +160,8 @@ function fqdnLabelsForTraefik(Collection $domains, bool $is_force_https_enabled,
 | 
			
		||||
        if (is_null($port) && !is_null($onlyPort)) {
 | 
			
		||||
            $port = $onlyPort;
 | 
			
		||||
        }
 | 
			
		||||
        $http_label = "{$uuid}-http";
 | 
			
		||||
        $https_label = "{$uuid}-https";
 | 
			
		||||
        $http_label = "{$uuid}-{$loop}-http";
 | 
			
		||||
        $https_label = "{$uuid}-{$loop}-https";
 | 
			
		||||
 | 
			
		||||
        if ($schema === 'https') {
 | 
			
		||||
            // Set labels for https
 | 
			
		||||
@@ -213,13 +212,13 @@ function generateLabelsApplication(Application $application, ?ApplicationPreview
 | 
			
		||||
        $onlyPort = $ports[0];
 | 
			
		||||
    }
 | 
			
		||||
    $pull_request_id = data_get($preview, 'pull_request_id', 0);
 | 
			
		||||
    $container_name = generateApplicationContainerName($application, $pull_request_id);
 | 
			
		||||
    // $container_name = generateApplicationContainerName($application, $pull_request_id);
 | 
			
		||||
    $appId = $application->id;
 | 
			
		||||
    if ($pull_request_id !== 0 && $pull_request_id !== null) {
 | 
			
		||||
        $appId = $appId . '-pr-' . $pull_request_id;
 | 
			
		||||
    }
 | 
			
		||||
    $labels = collect([]);
 | 
			
		||||
    $labels = $labels->merge(defaultLabels($appId, $container_name, $pull_request_id));
 | 
			
		||||
    $labels = $labels->merge(defaultLabels($appId, $application->uuid, $pull_request_id));
 | 
			
		||||
    if ($application->fqdn) {
 | 
			
		||||
        if ($pull_request_id !== 0) {
 | 
			
		||||
            $domains = Str::of(data_get($preview, 'fqdn'))->explode(',');
 | 
			
		||||
@@ -227,8 +226,7 @@ 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($domains, $application->settings->is_force_https_enabled, $onlyPort));
 | 
			
		||||
        $labels = $labels->merge(fqdnLabelsForTraefik($application->uuid, $domains, $application->settings->is_force_https_enabled, $onlyPort));
 | 
			
		||||
    }
 | 
			
		||||
    ray($labels);
 | 
			
		||||
    return $labels->all();
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ return [
 | 
			
		||||
 | 
			
		||||
    // The release version of your application
 | 
			
		||||
    // Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
 | 
			
		||||
    'release' => '4.0.0-beta.94',
 | 
			
		||||
    'release' => '4.0.0-beta.95',
 | 
			
		||||
    // When left empty or `null` the Laravel environment will be used
 | 
			
		||||
    'environment' => config('app.env'),
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,3 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
return '4.0.0-beta.94';
 | 
			
		||||
return '4.0.0-beta.95';
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
            "version": "3.12.36"
 | 
			
		||||
        },
 | 
			
		||||
        "v4": {
 | 
			
		||||
            "version": "4.0.0-beta.94"
 | 
			
		||||
            "version": "4.0.0-beta.95"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user