Rather than removing all port mappings, we simply remap port 80 mappings to 443. The previous behavior would remove custom port mappings for all applications and reset them on any certificate change, preventing automation from plugins such as letsencrypt. While this behavior doesn't matter for buildpack deploys - which only expose a single port on container port 5000 - Dockerfile deploys would frequently be affected by such a change, requiring a remapping of all custom ports. This commit also standardizes on the method used to source the proxy functions
34 lines
1.2 KiB
Bash
Executable File
34 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
|
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
|
source "$PLUGIN_AVAILABLE_PATH/proxy/functions"
|
|
|
|
nginx_post_certs_update() {
|
|
declare desc="unset port config vars after SSL cert is added"
|
|
local trigger="nginx_post_certs_update"
|
|
local APP="$1"
|
|
if [[ "$(get_app_proxy_type "$APP")" == "nginx" ]]; then
|
|
local DOKKU_NGINX_PORT=$(config_get "$APP" DOKKU_NGINX_PORT)
|
|
local DOKKU_NGINX_SSL_PORT=$(config_get "$APP" DOKKU_NGINX_SSL_PORT)
|
|
local DOKKU_PROXY_PORT_MAP=$(config_get "$APP" DOKKU_PROXY_PORT_MAP)
|
|
|
|
if [[ "$DOKKU_NGINX_PORT" == "80" ]]; then
|
|
config_unset --no-restart "$APP" DOKKU_NGINX_PORT
|
|
fi
|
|
if [[ "$DOKKU_NGINX_SSL_PORT" == "443" ]]; then
|
|
config_unset --no-restart "$APP" DOKKU_NGINX_SSL_PORT
|
|
fi
|
|
if [[ "$DOKKU_PROXY_PORT_MAP" == *http:80:* ]]; then
|
|
# shellcheck disable=SC2046
|
|
remove_proxy_ports "$APP" $(filter_app_proxy_ports "$APP" "https" "443")
|
|
# shellcheck disable=SC2046
|
|
for port_map in $(filter_app_proxy_ports "$APP" "http" "80"); do
|
|
add_proxy_ports "$APP" "https:443:$(cut -d ':' -f3 <<< "$port_map")"
|
|
done
|
|
fi
|
|
fi
|
|
}
|
|
|
|
nginx_post_certs_update "$@"
|