mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-05 20:57:40 +00:00
137 lines
5.7 KiB
Bash
137 lines
5.7 KiB
Bash
#
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
#
|
|
|
|
##
|
|
## @fn 000-migrate-docker-links.sh
|
|
##
|
|
## Checks for usage of any Docker links that were formerly supported
|
|
## but are now deprecated, warning when any deprecated Docker links are
|
|
## encountered. Until support for Docker links is entirely removed, the values
|
|
## of environment variables that are injected by Docker for deprecated Docker
|
|
## links are automatically reassigned to currently supported variables.
|
|
##
|
|
|
|
##
|
|
## Unsets all environment variables whose names start with the given prefix.
|
|
##
|
|
## @param LEGACY_VAR_PREFIX
|
|
## The name prefix of the environment variables that should be unset.
|
|
##
|
|
unset_starts_with() {
|
|
|
|
local LEGACY_VAR_PREFIX="$1"
|
|
|
|
local LEGACY_VAR_NAME
|
|
|
|
# Unset all environment variables starting with the given prefix
|
|
while read -r LEGACY_VAR_NAME; do
|
|
unset "$LEGACY_VAR_NAME"
|
|
done < <(awk 'BEGIN{for(v in ENVIRON) print v}' | grep "^$LEGACY_VAR_PREFIX")
|
|
|
|
}
|
|
|
|
##
|
|
## Checks for usage of the given deprecated Docker link, automatically
|
|
## assigning the values of its associated environment variables to the given
|
|
## set of currently supported environment variables. If usage of the
|
|
## deprecated Docker link is found, a warning is printed to STDERR.
|
|
##
|
|
## @param LEGACY_LINK_NAME
|
|
## The name of the Docker link that's deprecated, as would be provided to
|
|
## the "docker" command with the "--link" option.
|
|
##
|
|
## @param LEGACY_LINK_PORT_NUMBER
|
|
## The TCP port number used by the service originally pointed to by the
|
|
## deprecated Docker link. This will be the port number exposed by the
|
|
## Docker image customarily used for that service.
|
|
##
|
|
## @param CURRENT_ADDR_VAR_NAME
|
|
## The name of the environment variable that is currently supported and
|
|
## represents the IP addresss or hostname of the service originally pointed
|
|
## to by the deprecated Docker link.
|
|
##
|
|
## @param CURRENT_PORT_VAR_NAME
|
|
## The name of the environment variable that is currently supported and
|
|
## represents the TCP port of the service originally pointed to by the
|
|
## deprecated Docker link.
|
|
##
|
|
deprecate_link() {
|
|
|
|
local LEGACY_LINK_NAME="$1"
|
|
local LEGACY_LINK_PORT_NUMBER="$2"
|
|
local CURRENT_ADDR_VAR_NAME="$3"
|
|
local CURRENT_PORT_VAR_NAME="$4"
|
|
|
|
# Determine names of environment variables injected by Docker for the link
|
|
# having the given name
|
|
local LEGACY_LINK_VAR_PREFIX="`echo "$LEGACY_LINK_NAME" | tr 'a-z' 'A-Z'`"
|
|
local LEGACY_LINK_VAR_TCP_PREFIX="${LEGACY_LINK_VAR_PREFIX}_PORT_${LEGACY_LINK_PORT_NUMBER}_TCP"
|
|
local LEGACY_ADDR_VAR_NAME="${LEGACY_LINK_VAR_TCP_PREFIX}_ADDR"
|
|
local LEGACY_PORT_VAR_NAME="${LEGACY_LINK_VAR_TCP_PREFIX}_PORT"
|
|
|
|
# NOTE: We pull these values early to ensure we can safely unset the
|
|
# legacy variables without losing the ability to reassign those values to
|
|
# the proper variables later
|
|
local LEGACY_LINK_ADDR="${!LEGACY_ADDR_VAR_NAME}"
|
|
local LEGACY_LINK_PORT="${!LEGACY_PORT_VAR_NAME}"
|
|
|
|
if [ -n "$LEGACY_LINK_ADDR" -o -n "$LEGACY_LINK_PORT" ]; then
|
|
echo "WARNING: The \"$LEGACY_LINK_NAME\" Docker link has been deprecated in favor of the \"$CURRENT_ADDR_VAR_NAME\" and \"$CURRENT_PORT_VAR_NAME\" environment variables. Please migrate your configuration when possible, as Docker considers the linking feature to be legacy and support for Docker links may be removed in future releases. See: https://docs.docker.com/engine/network/links/" >&2
|
|
|
|
#
|
|
# Clear out any environment variables related to the legacy link (NOTE:
|
|
# this is necessary not only to clean the environment of variables that
|
|
# aren't actually used, but also to avoid tripping warnings about
|
|
# legacy "POSTGRES_" variable naming).
|
|
#
|
|
# The variables that Docker will set are documented here:
|
|
#
|
|
# https://docs.docker.com/engine/network/links/
|
|
#
|
|
|
|
unset "${LEGACY_LINK_VAR_PREFIX}_NAME"
|
|
unset "${LEGACY_LINK_VAR_PREFIX}_PORT"
|
|
unset_starts_with "${LEGACY_LINK_VAR_TCP_PREFIX}_"
|
|
unset_starts_with "${LEGACY_LINK_VAR_PREFIX}_ENV_"
|
|
|
|
# A variable containing just the prefix documented by Docker is also
|
|
# injected, but this is not documented at the above URL
|
|
unset "$LEGACY_LINK_VAR_TCP_PREFIX"
|
|
|
|
# Migrate legacy Docker link values over to the proper variables
|
|
export "$CURRENT_ADDR_VAR_NAME"="$LEGACY_LINK_ADDR"
|
|
export "$CURRENT_PORT_VAR_NAME"="$LEGACY_LINK_PORT"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
# Legacy Docker link support for connecting the webapp image with guacd
|
|
deprecate_link "guacd" 4822 "GUACD_HOSTNAME" "GUACD_PORT"
|
|
|
|
# Legacy Docker link support for connecting the webapp image with the various
|
|
# supported databases
|
|
deprecate_link "mysql" 3306 "MYSQL_HOSTNAME" "MYSQL_PORT"
|
|
deprecate_link "postgres" 5432 "POSTGRESQL_HOSTNAME" "POSTGRESQL_PORT"
|
|
deprecate_link "sqlserver" 1433 "SQLSERVER_HOSTNAME" "SQLSERVER_PORT"
|
|
|
|
# No other Docker links have been historically supported by the
|
|
# "guacamole/guacamole" image.
|
|
|