Add extensive testing for ReleaseManager status overview logic and normalize API ingress paths. Enhance CORS headers and update gateway route URL handling for Coolify.

This commit is contained in:
Jeppe Bundgaard
2026-05-20 17:49:16 +02:00
parent c5a1271798
commit 86fb092c22
10 changed files with 1255 additions and 23 deletions
+12 -4
View File
@@ -12,12 +12,13 @@ require_once __DIR__ . '/vendor/autoload.php';
require_once 'config.php';
/** CORS */
$corsAllowedHeaders = 'Content-Type, Authorization, X-Customer-Number, X-Release-Trace, X-Release-Channel, X-Frontend-Version, Cache-Control, Pragma, *';
$origin = $_SERVER['HTTP_ORIGIN'] ?? '';
$allowed_origins = array_map('trim', explode(',', (string)($CORS ?? '*')));
if ($CORS === '*' || ($origin && in_array($origin, $allowed_origins))) {
header("Access-Control-Allow-Origin: " . ($origin ?: '*'));
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Headers: Content-Type, Authorization, X-Customer-Number, X-Release-Trace, X-Release-Channel, X-Frontend-Version, *");
header("Access-Control-Allow-Headers: {$corsAllowedHeaders}");
header("Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS");
}
@@ -27,7 +28,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
header("Access-Control-Allow-Origin: " . ($origin ?: '*'));
header("Access-Control-Allow-Credentials: true");
header('Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Customer-Number, X-Release-Trace, X-Release-Channel, X-Frontend-Version, *');
header("Access-Control-Allow-Headers: {$corsAllowedHeaders}");
header('Content-Type: application/json');
http_response_code(200);
exit;
@@ -178,7 +179,6 @@ use classes\response;
use classes\router;
// Start the session
$router = new router();
$response = new response();
$request = new request();
$db = new db($CONFIG_DB);
@@ -201,10 +201,18 @@ try {
try {
release_manager::initializeRequestContext();
$releaseIngressPath = (string)(parse_url((string)($_SERVER['REQUEST_URI'] ?? ''), PHP_URL_PATH) ?: '');
release_manager::normalizeReleaseApiIngressPath(
preg_match('#^/[A-Za-z0-9_-]{1,64}/api(?:/|$)#', $releaseIngressPath) === 1
? (new release_manager())->enabledReleaseChannelSlugs()
: []
);
} catch (Throwable $e) {
error_log('[release-manager] Could not initialize request context: ' . $e->getMessage());
error_log('[release-manager] Could not initialize request context or normalize ingress path: ' . $e->getMessage());
}
$router = new router();
try {
$replicationBootstrapSnapshotForRequest = replication_bootstrap_config::loadSnapshot();
$pendingStartupFailovers = is_array($replicationBootstrapSnapshotForRequest['pending_failovers'] ?? null)