diff --git a/data/web/inc/functions.inc.php b/data/web/inc/functions.inc.php index 73769d902..0a9b94fc2 100644 --- a/data/web/inc/functions.inc.php +++ b/data/web/inc/functions.inc.php @@ -2275,9 +2275,25 @@ function cors($action, $data = null) { break; } } -function getBaseURL() { - $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http'; - $host = $_SERVER['SERVER_NAME']; +function getBaseURL($protocol = null) { + // Get current server name + $host = strtolower($_SERVER['SERVER_NAME']); + + // craft allowed server name list + $mailcow_hostname = strtolower(getenv("MAILCOW_HOSTNAME")); + $additional_server_names = strtolower(getenv("ADDITIONAL_SERVER_NAMES")) ?: ""; + $additional_server_names = preg_replace('/\s+/', '', $additional_server_names); + $allowed_server_names = $additional_server_names !== "" ? explode(',', $additional_server_names) : array(); + array_push($allowed_server_names, $mailcow_hostname); + + // Fallback to MAILCOW HOSTNAME if current server name is not in allowed list + if (!in_array($host, $allowed_server_names)) { + $host = $mailcow_hostname; + } + + if (!isset($protocol)) { + $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http'; + } $base_url = $protocol . '://' . $host; return $base_url; diff --git a/docker-compose.yml b/docker-compose.yml index 2b5e85cb9..c5fae01a7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -174,6 +174,7 @@ services: - DEMO_MODE=${DEMO_MODE:-n} - WEBAUTHN_ONLY_TRUSTED_VENDORS=${WEBAUTHN_ONLY_TRUSTED_VENDORS:-n} - CLUSTERMODE=${CLUSTERMODE:-} + - ADDITIONAL_SERVER_NAMES=${ADDITIONAL_SERVER_NAMES:-} restart: always networks: mailcow-network: