fix: ghost subdir
This commit is contained in:
		@@ -234,7 +234,7 @@ function generateServiceSpecificFqdns(ServiceApplication|Application $resource)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    return $payload;
 | 
					    return $payload;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
function fqdnLabelsForCaddy(string $network, 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)
 | 
					function fqdnLabelsForCaddy(string $network, 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, ?string $image = null)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    $labels = collect([]);
 | 
					    $labels = collect([]);
 | 
				
			||||||
    if ($serviceLabels) {
 | 
					    if ($serviceLabels) {
 | 
				
			||||||
@@ -247,7 +247,6 @@ function fqdnLabelsForCaddy(string $network, string $uuid, Collection $domains,
 | 
				
			|||||||
        $url = Url::fromString($domain);
 | 
					        $url = Url::fromString($domain);
 | 
				
			||||||
        $host = $url->getHost();
 | 
					        $host = $url->getHost();
 | 
				
			||||||
        $path = $url->getPath();
 | 
					        $path = $url->getPath();
 | 
				
			||||||
        // $stripped_path = str($path)->replaceEnd('/', '');
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $schema = $url->getScheme();
 | 
					        $schema = $url->getScheme();
 | 
				
			||||||
        $port = $url->getPort();
 | 
					        $port = $url->getPort();
 | 
				
			||||||
@@ -273,7 +272,7 @@ function fqdnLabelsForCaddy(string $network, string $uuid, Collection $domains,
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    return $labels->sort();
 | 
					    return $labels->sort();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
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, bool $generate_unique_uuid = false)
 | 
					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, bool $generate_unique_uuid = false, ?string $image = null)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    $labels = collect([]);
 | 
					    $labels = collect([]);
 | 
				
			||||||
    $labels->push('traefik.enable=true');
 | 
					    $labels->push('traefik.enable=true');
 | 
				
			||||||
@@ -331,7 +330,10 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
 | 
				
			|||||||
                $http_label = "http-{$loop}-{$uuid}-{$service_name}";
 | 
					                $http_label = "http-{$loop}-{$uuid}-{$service_name}";
 | 
				
			||||||
                $https_label = "https-{$loop}-{$uuid}-{$service_name}";
 | 
					                $https_label = "https-{$loop}-{$uuid}-{$service_name}";
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            if (str($image)->contains('ghost')) {
 | 
				
			||||||
 | 
					                $labels->push("traefik.http.middlewares.redir-ghost.redirectregex.regex=^{$path}/(.*)");
 | 
				
			||||||
 | 
					                $labels->push("traefik.http.middlewares.redir-ghost.redirectregex.replacement=/$1");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            if ($schema === 'https') {
 | 
					            if ($schema === 'https') {
 | 
				
			||||||
                // Set labels for https
 | 
					                // Set labels for https
 | 
				
			||||||
                $labels->push("traefik.http.routers.{$https_label}.rule=Host(`{$host}`) && PathPrefix(`{$path}`)");
 | 
					                $labels->push("traefik.http.routers.{$https_label}.rule=Host(`{$host}`) && PathPrefix(`{$path}`)");
 | 
				
			||||||
@@ -341,9 +343,10 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
 | 
				
			|||||||
                    $labels->push("traefik.http.services.{$https_label}.loadbalancer.server.port=$port");
 | 
					                    $labels->push("traefik.http.services.{$https_label}.loadbalancer.server.port=$port");
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if ($path !== '/') {
 | 
					                if ($path !== '/') {
 | 
				
			||||||
                    if ($is_stripprefix_enabled) {
 | 
					                    $middlewares = collect([]);
 | 
				
			||||||
 | 
					                    if ($is_stripprefix_enabled && !str($image)->contains('ghost')) {
 | 
				
			||||||
                        $labels->push("traefik.http.middlewares.{$https_label}-stripprefix.stripprefix.prefixes={$path}");
 | 
					                        $labels->push("traefik.http.middlewares.{$https_label}-stripprefix.stripprefix.prefixes={$path}");
 | 
				
			||||||
                        $middlewares = collect(["{$https_label}-stripprefix"]);
 | 
					                        $middlewares->push("{$https_label}-stripprefix");
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    if ($is_gzip_enabled) {
 | 
					                    if ($is_gzip_enabled) {
 | 
				
			||||||
                        $middlewares->push('gzip');
 | 
					                        $middlewares->push('gzip');
 | 
				
			||||||
@@ -354,6 +357,9 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
 | 
				
			|||||||
                    if ($redirect && $redirect_middleware) {
 | 
					                    if ($redirect && $redirect_middleware) {
 | 
				
			||||||
                        $middlewares->push($redirect_middleware);
 | 
					                        $middlewares->push($redirect_middleware);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					                    if (str($image)->contains('ghost')) {
 | 
				
			||||||
 | 
					                        $middlewares->push('redir-ghost');
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                    if ($middlewares->isNotEmpty()) {
 | 
					                    if ($middlewares->isNotEmpty()) {
 | 
				
			||||||
                        $middlewares = $middlewares->join(',');
 | 
					                        $middlewares = $middlewares->join(',');
 | 
				
			||||||
                        $labels->push("traefik.http.routers.{$https_label}.middlewares={$middlewares}");
 | 
					                        $labels->push("traefik.http.routers.{$https_label}.middlewares={$middlewares}");
 | 
				
			||||||
@@ -369,6 +375,9 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
 | 
				
			|||||||
                    if ($redirect && $redirect_middleware) {
 | 
					                    if ($redirect && $redirect_middleware) {
 | 
				
			||||||
                        $middlewares->push($redirect_middleware);
 | 
					                        $middlewares->push($redirect_middleware);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					                    if (str($image)->contains('ghost')) {
 | 
				
			||||||
 | 
					                        $middlewares->push('redir-ghost');
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                    if ($middlewares->isNotEmpty()) {
 | 
					                    if ($middlewares->isNotEmpty()) {
 | 
				
			||||||
                        $middlewares = $middlewares->join(',');
 | 
					                        $middlewares = $middlewares->join(',');
 | 
				
			||||||
                        $labels->push("traefik.http.routers.{$https_label}.middlewares={$middlewares}");
 | 
					                        $labels->push("traefik.http.routers.{$https_label}.middlewares={$middlewares}");
 | 
				
			||||||
@@ -396,9 +405,10 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
 | 
				
			|||||||
                    $labels->push("traefik.http.routers.{$http_label}.service={$http_label}");
 | 
					                    $labels->push("traefik.http.routers.{$http_label}.service={$http_label}");
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if ($path !== '/') {
 | 
					                if ($path !== '/') {
 | 
				
			||||||
                    if ($is_stripprefix_enabled) {
 | 
					                    $middlewares = collect([]);
 | 
				
			||||||
 | 
					                    if ($is_stripprefix_enabled && !str($image)->contains('ghost')) {
 | 
				
			||||||
                        $labels->push("traefik.http.middlewares.{$http_label}-stripprefix.stripprefix.prefixes={$path}");
 | 
					                        $labels->push("traefik.http.middlewares.{$http_label}-stripprefix.stripprefix.prefixes={$path}");
 | 
				
			||||||
                        $middlewares = collect(["{$http_label}-stripprefix"]);
 | 
					                        $middlewares->push("{$https_label}-stripprefix");
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    if ($is_gzip_enabled) {
 | 
					                    if ($is_gzip_enabled) {
 | 
				
			||||||
                        $middlewares->push('gzip');
 | 
					                        $middlewares->push('gzip');
 | 
				
			||||||
@@ -409,6 +419,9 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
 | 
				
			|||||||
                    if ($redirect && $redirect_middleware) {
 | 
					                    if ($redirect && $redirect_middleware) {
 | 
				
			||||||
                        $middlewares->push($redirect_middleware);
 | 
					                        $middlewares->push($redirect_middleware);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					                    if (str($image)->contains('ghost')) {
 | 
				
			||||||
 | 
					                        $middlewares->push('redir-ghost');
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                    if ($middlewares->isNotEmpty()) {
 | 
					                    if ($middlewares->isNotEmpty()) {
 | 
				
			||||||
                        $middlewares = $middlewares->join(',');
 | 
					                        $middlewares = $middlewares->join(',');
 | 
				
			||||||
                        $labels->push("traefik.http.routers.{$http_label}.middlewares={$middlewares}");
 | 
					                        $labels->push("traefik.http.routers.{$http_label}.middlewares={$middlewares}");
 | 
				
			||||||
@@ -424,6 +437,9 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
 | 
				
			|||||||
                    if ($redirect && $redirect_middleware) {
 | 
					                    if ($redirect && $redirect_middleware) {
 | 
				
			||||||
                        $middlewares->push($redirect_middleware);
 | 
					                        $middlewares->push($redirect_middleware);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					                    if (str($image)->contains('ghost')) {
 | 
				
			||||||
 | 
					                        $middlewares->push('redir-ghost');
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                    if ($middlewares->isNotEmpty()) {
 | 
					                    if ($middlewares->isNotEmpty()) {
 | 
				
			||||||
                        $middlewares = $middlewares->join(',');
 | 
					                        $middlewares = $middlewares->join(',');
 | 
				
			||||||
                        $labels->push("traefik.http.routers.{$http_label}.middlewares={$middlewares}");
 | 
					                        $labels->push("traefik.http.routers.{$http_label}.middlewares={$middlewares}");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1167,7 +1167,8 @@ function parseDockerComposeFile(Service|Application $resource, bool $isNew = fal
 | 
				
			|||||||
                            serviceLabels: $serviceLabels,
 | 
					                            serviceLabels: $serviceLabels,
 | 
				
			||||||
                            is_gzip_enabled: $savedService->isGzipEnabled(),
 | 
					                            is_gzip_enabled: $savedService->isGzipEnabled(),
 | 
				
			||||||
                            is_stripprefix_enabled: $savedService->isStripprefixEnabled(),
 | 
					                            is_stripprefix_enabled: $savedService->isStripprefixEnabled(),
 | 
				
			||||||
                            service_name: $serviceName
 | 
					                            service_name: $serviceName,
 | 
				
			||||||
 | 
					                            image: data_get($service, 'image')
 | 
				
			||||||
                        ));
 | 
					                        ));
 | 
				
			||||||
                        $serviceLabels = $serviceLabels->merge(fqdnLabelsForCaddy(
 | 
					                        $serviceLabels = $serviceLabels->merge(fqdnLabelsForCaddy(
 | 
				
			||||||
                            network: $resource->destination->network,
 | 
					                            network: $resource->destination->network,
 | 
				
			||||||
@@ -1177,7 +1178,8 @@ function parseDockerComposeFile(Service|Application $resource, bool $isNew = fal
 | 
				
			|||||||
                            serviceLabels: $serviceLabels,
 | 
					                            serviceLabels: $serviceLabels,
 | 
				
			||||||
                            is_gzip_enabled: $savedService->isGzipEnabled(),
 | 
					                            is_gzip_enabled: $savedService->isGzipEnabled(),
 | 
				
			||||||
                            is_stripprefix_enabled: $savedService->isStripprefixEnabled(),
 | 
					                            is_stripprefix_enabled: $savedService->isStripprefixEnabled(),
 | 
				
			||||||
                            service_name: $serviceName
 | 
					                            service_name: $serviceName,
 | 
				
			||||||
 | 
					                            image: data_get($service, 'image')
 | 
				
			||||||
                        ));
 | 
					                        ));
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -1656,13 +1658,15 @@ function parseDockerComposeFile(Service|Application $resource, bool $isNew = fal
 | 
				
			|||||||
                            uuid: $resource->uuid,
 | 
					                            uuid: $resource->uuid,
 | 
				
			||||||
                            domains: $fqdns,
 | 
					                            domains: $fqdns,
 | 
				
			||||||
                            serviceLabels: $serviceLabels,
 | 
					                            serviceLabels: $serviceLabels,
 | 
				
			||||||
                            generate_unique_uuid: $resource->build_pack === 'dockercompose'
 | 
					                            generate_unique_uuid: $resource->build_pack === 'dockercompose',
 | 
				
			||||||
 | 
					                            image: data_get($service, 'image')
 | 
				
			||||||
                        ));
 | 
					                        ));
 | 
				
			||||||
                        $serviceLabels = $serviceLabels->merge(fqdnLabelsForCaddy(
 | 
					                        $serviceLabels = $serviceLabels->merge(fqdnLabelsForCaddy(
 | 
				
			||||||
                            network: $resource->destination->network,
 | 
					                            network: $resource->destination->network,
 | 
				
			||||||
                            uuid: $resource->uuid,
 | 
					                            uuid: $resource->uuid,
 | 
				
			||||||
                            domains: $fqdns,
 | 
					                            domains: $fqdns,
 | 
				
			||||||
                            serviceLabels: $serviceLabels
 | 
					                            serviceLabels: $serviceLabels,
 | 
				
			||||||
 | 
					                            image: data_get($service, 'image')
 | 
				
			||||||
                        ));
 | 
					                        ));
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user