Skip to content

Commit 1b0e2e1

Browse files
committed
Feat. Apply all middlewares from labels to coolify router, instead of only basicauth and redirect
1 parent 019a8bf commit 1b0e2e1

File tree

1 file changed

+24
-57
lines changed

1 file changed

+24
-57
lines changed

bootstrap/helpers/docker.php

Lines changed: 24 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -325,38 +325,16 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
325325
$labels->push('traefik.http.middlewares.gzip.compress=true');
326326
$labels->push('traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https');
327327

328-
$basic_auth = false;
329-
$basic_auth_middleware = null;
330-
$redirect = false;
331-
$redirect_middleware = null;
328+
$middlewares_from_labels = collect([]);
332329

333330
if ($serviceLabels) {
334-
$basic_auth = $serviceLabels->contains(function ($value) {
335-
return str_contains($value, 'basicauth');
336-
});
337-
if ($basic_auth) {
338-
$basic_auth_middleware = $serviceLabels
339-
->map(function ($item) {
340-
if (preg_match('/traefik\.http\.middlewares\.(.*?)\.basicauth\.users/', $item, $matches)) {
341-
return $matches[1];
342-
}
343-
})
344-
->filter()
345-
->first();
346-
}
347-
$redirect = $serviceLabels->contains(function ($value) {
348-
return str_contains($value, 'redirectregex');
349-
});
350-
if ($redirect) {
351-
$redirect_middleware = $serviceLabels
352-
->map(function ($item) {
353-
if (preg_match('/traefik\.http\.middlewares\.(.*?)\.redirectregex\.regex/', $item, $matches)) {
354-
return $matches[1];
355-
}
356-
})
357-
->filter()
358-
->first();
359-
}
331+
$middlewares_from_labels = $serviceLabels->map(function ($item) {
332+
if (preg_match('/traefik\.http\.middlewares\.(.*?)(\.|$)/', $item, $matches)) {
333+
return $matches[1];
334+
}
335+
return null;
336+
})->filter()
337+
->unique();
360338
}
361339
foreach ($domains as $loop => $domain) {
362340
try {
@@ -404,31 +382,29 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
404382
$labels->push("traefik.http.services.{$https_label}.loadbalancer.server.port=$port");
405383
}
406384
if ($path !== '/') {
385+
// Middleware handling
407386
$middlewares = collect([]);
408-
if ($is_stripprefix_enabled && ! str($image)->contains('ghost')) {
387+
if ($is_stripprefix_enabled && !str($image)->contains('ghost')) {
409388
$labels->push("traefik.http.middlewares.{$https_label}-stripprefix.stripprefix.prefixes={$path}");
410389
$middlewares->push("{$https_label}-stripprefix");
411390
}
412391
if ($is_gzip_enabled) {
413392
$middlewares->push('gzip');
414393
}
415-
if ($basic_auth && $basic_auth_middleware) {
416-
$middlewares->push($basic_auth_middleware);
417-
}
418-
if ($redirect && $redirect_middleware) {
419-
$middlewares->push($redirect_middleware);
420-
}
421394
if (str($image)->contains('ghost')) {
422395
$middlewares->push('redir-ghost');
423396
}
424397
if ($redirect_direction === 'non-www' && str($host)->startsWith('www.')) {
425398
$labels = $labels->merge($redirect_to_non_www);
426399
$middlewares->push($to_non_www_name);
427400
}
428-
if ($redirect_direction === 'www' && ! str($host)->startsWith('www.')) {
401+
if ($redirect_direction === 'www' && !str($host)->startsWith('www.')) {
429402
$labels = $labels->merge($redirect_to_www);
430403
$middlewares->push($to_www_name);
431404
}
405+
$middlewares_from_labels->each(function ($middleware_name) use ($middlewares) {
406+
$middlewares->push($middleware_name);
407+
});
432408
if ($middlewares->isNotEmpty()) {
433409
$middlewares = $middlewares->join(',');
434410
$labels->push("traefik.http.routers.{$https_label}.middlewares={$middlewares}");
@@ -437,13 +413,7 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
437413
$middlewares = collect([]);
438414
if ($is_gzip_enabled) {
439415
$middlewares->push('gzip');
440-
}
441-
if ($basic_auth && $basic_auth_middleware) {
442-
$middlewares->push($basic_auth_middleware);
443-
}
444-
if ($redirect && $redirect_middleware) {
445-
$middlewares->push($redirect_middleware);
446-
}
416+
}
447417
if (str($image)->contains('ghost')) {
448418
$middlewares->push('redir-ghost');
449419
}
@@ -455,6 +425,9 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
455425
$labels = $labels->merge($redirect_to_www);
456426
$middlewares->push($to_www_name);
457427
}
428+
$middlewares_from_labels->each(function ($middleware_name) use ($middlewares) {
429+
$middlewares->push($middleware_name);
430+
});
458431
if ($middlewares->isNotEmpty()) {
459432
$middlewares = $middlewares->join(',');
460433
$labels->push("traefik.http.routers.{$https_label}.middlewares={$middlewares}");
@@ -490,12 +463,6 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
490463
if ($is_gzip_enabled) {
491464
$middlewares->push('gzip');
492465
}
493-
if ($basic_auth && $basic_auth_middleware) {
494-
$middlewares->push($basic_auth_middleware);
495-
}
496-
if ($redirect && $redirect_middleware) {
497-
$middlewares->push($redirect_middleware);
498-
}
499466
if (str($image)->contains('ghost')) {
500467
$middlewares->push('redir-ghost');
501468
}
@@ -507,6 +474,9 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
507474
$labels = $labels->merge($redirect_to_www);
508475
$middlewares->push($to_www_name);
509476
}
477+
$middlewares_from_labels->each(function ($middleware_name) use ($middlewares) {
478+
$middlewares->push($middleware_name);
479+
});
510480
if ($middlewares->isNotEmpty()) {
511481
$middlewares = $middlewares->join(',');
512482
$labels->push("traefik.http.routers.{$http_label}.middlewares={$middlewares}");
@@ -516,12 +486,6 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
516486
if ($is_gzip_enabled) {
517487
$middlewares->push('gzip');
518488
}
519-
if ($basic_auth && $basic_auth_middleware) {
520-
$middlewares->push($basic_auth_middleware);
521-
}
522-
if ($redirect && $redirect_middleware) {
523-
$middlewares->push($redirect_middleware);
524-
}
525489
if (str($image)->contains('ghost')) {
526490
$middlewares->push('redir-ghost');
527491
}
@@ -533,6 +497,9 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
533497
$labels = $labels->merge($redirect_to_www);
534498
$middlewares->push($to_www_name);
535499
}
500+
$middlewares_from_labels->each(function ($middleware_name) use ($middlewares) {
501+
$middlewares->push($middleware_name);
502+
});
536503
if ($middlewares->isNotEmpty()) {
537504
$middlewares = $middlewares->join(',');
538505
$labels->push("traefik.http.routers.{$http_label}.middlewares={$middlewares}");

0 commit comments

Comments
 (0)