Add .gitignore and .ratignore files for various directories
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
136
guacamole-docker/entrypoint.d/000-migrate-docker-links.sh
Normal file
136
guacamole-docker/entrypoint.d/000-migrate-docker-links.sh
Normal file
@@ -0,0 +1,136 @@
|
||||
#
|
||||
# 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.
|
||||
|
117
guacamole-docker/entrypoint.d/010-migrate-legacy-variables.sh
Normal file
117
guacamole-docker/entrypoint.d/010-migrate-legacy-variables.sh
Normal file
@@ -0,0 +1,117 @@
|
||||
#
|
||||
# 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 010-migrate-legacy-variables.sh
|
||||
##
|
||||
## Checks for usage of any environment variables that were formerly supported
|
||||
## but are now deprecated, warning when any deprecated variables are
|
||||
## encountered. Until support for a deprecated variable is entirely removed,
|
||||
## the value provided for the deprecated variable is automatically assigned to
|
||||
## the currently-supported variable.
|
||||
##
|
||||
|
||||
##
|
||||
## Checks for usage of the given deprecated environment variable, automatically
|
||||
## assigning its value to the given currently-supported environment variable.
|
||||
## If usage of the deprecated variable is found, a warning is printed to
|
||||
## STDERR.
|
||||
##
|
||||
## @param LEGACY_VAR_NAME
|
||||
## The name of the environment variable that's deprecated.
|
||||
##
|
||||
## @param CURRENT_VAR_NAME
|
||||
## The name of the environment variable that is currently supported and
|
||||
## replaces the deprecated variable.
|
||||
##
|
||||
deprecate_variable() {
|
||||
|
||||
local LEGACY_VAR_NAME="$1"
|
||||
local CURRENT_VAR_NAME="$2"
|
||||
|
||||
if [ -n "${!LEGACY_VAR_NAME}" ]; then
|
||||
echo "WARNING: The \"$LEGACY_VAR_NAME\" environment variable has been deprecated in favor of \"$CURRENT_VAR_NAME\". Please migrate your configuration when possible, as support for the older name may be removed in future releases." >&2
|
||||
export "$CURRENT_VAR_NAME"="${!LEGACY_VAR_NAME}"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
##
|
||||
## Checks for usage of any environment variables using the given deprecated
|
||||
## prefix, automatically assigning their values to corresponding environment
|
||||
## variables having the given currently-supported prefix. If usage of the
|
||||
## deprecated prefix is found, a warning is printed to STDERR.
|
||||
##
|
||||
## @param LEGACY_VAR_PREFIX
|
||||
## The environment variable prefix that's deprecated.
|
||||
##
|
||||
## @param CURRENT_VAR_PREFIX
|
||||
## The environment variable prefix that is currently supported and
|
||||
## replaces the deprecated variable prefix.
|
||||
##
|
||||
deprecate_variable_prefix() {
|
||||
|
||||
local LEGACY_VAR_PREFIX="$1"
|
||||
local CURRENT_VAR_PREFIX="$2"
|
||||
|
||||
local LEGACY_VAR_NAME
|
||||
local CURRENT_VAR_NAME
|
||||
local HAS_LEGACY_VARIABLES=0
|
||||
|
||||
# Automatically reassign all "POSTGRES_*" variables to "POSTGRESQL_*"
|
||||
while read -r LEGACY_VAR_NAME; do
|
||||
HAS_LEGACY_VARIABLES=1
|
||||
CURRENT_VAR_NAME="$CURRENT_VAR_PREFIX${LEGACY_VAR_NAME#$LEGACY_VAR_PREFIX}"
|
||||
export "$CURRENT_VAR_NAME"="${!LEGACY_VAR_NAME}"
|
||||
unset "$LEGACY_VAR_NAME"
|
||||
done < <(awk 'BEGIN{for(v in ENVIRON) print v}' | grep "^$LEGACY_VAR_PREFIX")
|
||||
|
||||
if [ "$HAS_LEGACY_VARIABLES" = "1" ]; then
|
||||
echo "WARNING: The \"$LEGACY_VAR_PREFIX\" prefix for environment variables has been deprecated in favor of the \"$CURRENT_VAR_PREFIX\" prefix. Please migrate your configuration when possible, as support for the older prefix may be removed in future releases." >&2
|
||||
export "$CURRENT_VAR_NAME"="$LEGACY_VAR_NAME"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# The old "*_USER" style for configuring the user account to be used to access
|
||||
# the database is being replaced with "*_USERNAME" such that all environment
|
||||
# variables exactly correspond to the names of configuration properties from
|
||||
# guacamole.properties.
|
||||
deprecate_variable "MYSQL_USER" "MYSQL_USERNAME"
|
||||
deprecate_variable "POSTGRES_USER" "POSTGRESQL_USERNAME"
|
||||
deprecate_variable "POSTGRESQL_USER" "POSTGRESQL_USERNAME"
|
||||
deprecate_variable "SQLSERVER_USER" "SQLSERVER_USERNAME"
|
||||
|
||||
# The old "POSTGRES_" prefix for configuring usage of PostgreSQL is being
|
||||
# replaced with "POSTGRESQL_" such that all environment variables exactly
|
||||
# correspond to the names of configuration properties from
|
||||
# guacamole.properties.
|
||||
deprecate_variable_prefix "POSTGRES_" "POSTGRESQL_"
|
||||
|
||||
# The old "PROXY_*" names for attributes supported by RemoteIpValve are being
|
||||
# replaced with "REMOTE_IP_VALVE_*" attributes that more closely and
|
||||
# predictably match their attribute names
|
||||
deprecate_variable "PROXY_ALLOWED_IPS_REGEX" "REMOTE_IP_VALVE_INTERNAL_PROXIES"
|
||||
deprecate_variable "PROXY_IP_HEADER" "REMOTE_IP_VALVE_REMOTE_IP_HEADER"
|
||||
deprecate_variable "PROXY_PROTOCOL_HEADER" "REMOTE_IP_VALVE_PROTOCOL_HEADER"
|
||||
# NOTE: PROXY_BY_HEADER never worked as there is no "remoteIpProxiesHeader" attribute for RemoteIpValve
|
||||
|
||||
# The old "LOGBACK_LEVEL" environment variable has been replaced with
|
||||
# "LOG_LEVEL" for consistency with the guacd image
|
||||
deprecate_variable "LOGBACK_LEVEL" "LOG_LEVEL"
|
111
guacamole-docker/entrypoint.d/100-generate-guacamole-home.sh
Normal file
111
guacamole-docker/entrypoint.d/100-generate-guacamole-home.sh
Normal file
@@ -0,0 +1,111 @@
|
||||
#
|
||||
# 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 010-generate-guacamole-home.sh
|
||||
##
|
||||
## Automatically generates a temporary, skeleton GUACAMOLE_HOME to be used for
|
||||
## this run of the container. GUACAMOLE_HOMEs from previous runs are
|
||||
## automatically deleted prior to creating the new skeleton. A
|
||||
## randomly-generated temporary directory is used instead of a standard
|
||||
## directory like "/etc/guacamole" to allow users to use "/etc/guacamole" as a
|
||||
## basis for their own configuration.
|
||||
##
|
||||
|
||||
##
|
||||
## The directory to copy/link over as a basis for the GUACAMOLE_HOME actually
|
||||
## used by the Guacamole web application. Any configuration generated by this
|
||||
## container will be overlaid on top of this configuration. To achieve the
|
||||
## overlay, symbolic links will be created for all files inside and beneath
|
||||
## this directory. Only the guacamole.properties file will be copied instead of
|
||||
## using symbolic links (to ensure property generation performed by the
|
||||
## container does not potentially modify an external file).
|
||||
##
|
||||
GUACAMOLE_HOME_TEMPLATE="$GUACAMOLE_HOME"
|
||||
|
||||
##
|
||||
## Tests whether a given property is set within the guacamole.properties file
|
||||
## in GUACAMOLE_HOME.
|
||||
##
|
||||
## @param PROPERTY_NAME
|
||||
## The name of the property to check.
|
||||
##
|
||||
## @returns
|
||||
## Zero if the given property is set to any value within
|
||||
## guacamole.properties, non-zero otherwise.
|
||||
##
|
||||
is_property_set() {
|
||||
local PROPERTY_NAME="$1"
|
||||
grep "^[[:space:]]*$PROPERTY_NAME\>" "$GUACAMOLE_HOME/guacamole.properties" &> /dev/null
|
||||
}
|
||||
|
||||
#
|
||||
# Start with a fresh GUACAMOLE_HOME
|
||||
#
|
||||
|
||||
rm -rf /tmp/guacamole-home.*
|
||||
GUACAMOLE_HOME="`mktemp -p /tmp -d guacamole-home.XXXXXXXXXX`"
|
||||
mkdir -p "$GUACAMOLE_HOME/"{lib,extensions}
|
||||
|
||||
cat > "$GUACAMOLE_HOME/guacamole.properties" <<EOF
|
||||
# guacamole.properties - generated `date`
|
||||
EOF
|
||||
|
||||
#
|
||||
# Copy contents of provided GUACAMOLE_HOME template, if any
|
||||
#
|
||||
|
||||
if [ -e "$GUACAMOLE_HOME_TEMPLATE" ]; then
|
||||
|
||||
# Create links for any libraries provided in the template GUACAMOLE_HOME
|
||||
find "$GUACAMOLE_HOME_TEMPLATE/lib" -mindepth 1 -maxdepth 1 \
|
||||
-exec ln -sv "{}" "$GUACAMOLE_HOME/lib/" ";"
|
||||
|
||||
# Create links for any extensions provided in the template GUACAMOLE_HOME
|
||||
find "$GUACAMOLE_HOME_TEMPLATE/extensions" -mindepth 1 -maxdepth 1 \
|
||||
-exec ln -sv "{}" "$GUACAMOLE_HOME/extensions/" ";"
|
||||
|
||||
# Create links for all other files directly within the template
|
||||
# GUACAMOLE_HOME
|
||||
find "$GUACAMOLE_HOME_TEMPLATE" -mindepth 1 -maxdepth 1 \
|
||||
-name guacamole.properties -o -name lib -o -name extensions -prune \
|
||||
-o -exec ln -sv "{}" "$GUACAMOLE_HOME/" ";"
|
||||
|
||||
# Add any properties provided within template GUACAMOLE_HOME
|
||||
if [ -e "$GUACAMOLE_HOME_TEMPLATE/guacamole.properties" ]; then
|
||||
cat "$GUACAMOLE_HOME_TEMPLATE/guacamole.properties" >> "$GUACAMOLE_HOME/guacamole.properties"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# Enable reading of properties directly from environment variables unless
|
||||
# overridden
|
||||
if ! is_property_set "enable-environment-properties"; then
|
||||
cat >> "$GUACAMOLE_HOME/guacamole.properties" <<'EOF'
|
||||
#
|
||||
# NOTE: The following was automatically added by the container entrypoint to
|
||||
# allow all Guacamole configuration properties to be automatically read from
|
||||
# environment variables. If this is not desired, you can override this behavior
|
||||
# by specifying the "enable-environment-properties" variable yourself in your
|
||||
# own guacamole.properties file.
|
||||
#
|
||||
enable-environment-properties: true
|
||||
EOF
|
||||
fi
|
||||
|
@@ -0,0 +1,50 @@
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
##
|
||||
## 500-generate-tomcat-catalina-base.sh
|
||||
##
|
||||
## Automcatically generates a fresh, temporary CATALINA_BASE for Apache Tomcat.
|
||||
## This allows Tomcat to run as a reduced-privilege user, and allows its
|
||||
## configuration to be dynamically generated by the container entrypoint at
|
||||
## startup.
|
||||
##
|
||||
|
||||
#
|
||||
# Start with a fresh CATALINA_BASE
|
||||
#
|
||||
|
||||
rm -rf /tmp/catalina-base.*
|
||||
export CATALINA_BASE="`mktemp -p /tmp -d catalina-base.XXXXXXXXXX`"
|
||||
|
||||
# User-only writable CATALINA_BASE
|
||||
for dir in logs temp webapps work; do
|
||||
mkdir -p $CATALINA_BASE/$dir
|
||||
done
|
||||
cp -R /usr/local/tomcat/conf $CATALINA_BASE
|
||||
|
||||
cat >> "$CATALINA_BASE/conf/catalina.properties" <<EOF
|
||||
|
||||
# Point Guacamole at automatically-generated, temporary GUACAMOLE_HOME
|
||||
guacamole.home=$GUACAMOLE_HOME
|
||||
EOF
|
||||
|
||||
# Install webapp
|
||||
ln -sf /opt/guacamole/webapp/guacamole.war $CATALINA_BASE/webapps/${WEBAPP_CONTEXT:-guacamole}.war
|
||||
|
88
guacamole-docker/entrypoint.d/700-configure-features.sh
Normal file
88
guacamole-docker/entrypoint.d/700-configure-features.sh
Normal file
@@ -0,0 +1,88 @@
|
||||
#
|
||||
# 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 700-configure-features.sh
|
||||
##
|
||||
## Automatically checks all environment variables currently set and performs
|
||||
## configuration tasks related to those variabels, including installing any
|
||||
## extensions and external libraries associated with those variables to
|
||||
## GUACAMOLE_HOME. Only environment variable prefixes are considered; this
|
||||
## script is not aware of whether an extension actually uses an environment
|
||||
## variable.
|
||||
##
|
||||
|
||||
##
|
||||
## Returns whether the feature associated with a particular environment
|
||||
## variable prefix has configuration values set. Only the presence of
|
||||
## environment variables having that prefix is checked. Features can also be
|
||||
## entirely enabled/disabled through setting the [PREFIX_]ENABLED variable to
|
||||
## true/false respectively, where "[PREFIX_]" is the specified environment
|
||||
## variable prefix (including trailing underscore).
|
||||
##
|
||||
## @param VAR_BASE
|
||||
## The environment variable prefix to check, including trailing underscore.
|
||||
##
|
||||
## @returns
|
||||
## Zero if the feature associated with the given environment variable
|
||||
## prefix is enabled, non-zero otherwise.
|
||||
##
|
||||
is_feature_enabled() {
|
||||
|
||||
local VAR_BASE="$1"
|
||||
|
||||
# Allow any feature to be explicitly enabled/disabled using a
|
||||
# [PREFIX_]ENABLED variable
|
||||
local ENABLED_VAR="${VAR_BASE}ENABLED"
|
||||
if [ "${!ENABLED_VAR}" = "true" ]; then
|
||||
return 0
|
||||
elif [ "${!ENABLED_VAR}" = "false" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Lacking an explicit request to enable/disable the feature, rely on
|
||||
# implicit enable/disable via presence of any other variables having the
|
||||
# given prefix
|
||||
awk 'BEGIN{for(v in ENVIRON) print v}' | grep "^${VAR_BASE}" > /dev/null
|
||||
|
||||
}
|
||||
|
||||
# Search environment for enabled extensions/features based on environment
|
||||
# variable prefixes
|
||||
for VAR_BASE in /opt/guacamole/environment/*; do
|
||||
|
||||
# Skip any directories without at least one corresponding environment
|
||||
# variable set
|
||||
is_feature_enabled "$(basename "$VAR_BASE")" || continue
|
||||
|
||||
# Execute any associated configuration script
|
||||
[ ! -e "$VAR_BASE/configure.sh" ] || source "$VAR_BASE/configure.sh"
|
||||
|
||||
# Add any required links for extensions/libraries associated with the
|
||||
# configured extension
|
||||
for SUBDIR in lib extensions; do
|
||||
if [ -d "$VAR_BASE/$SUBDIR" ]; then
|
||||
mkdir -p "$GUACAMOLE_HOME/$SUBDIR/"
|
||||
ln -s "$VAR_BASE/$SUBDIR"/* "$GUACAMOLE_HOME/$SUBDIR/"
|
||||
fi
|
||||
done
|
||||
|
||||
done
|
||||
|
30
guacamole-docker/entrypoint.d/999-start-tomcat.sh
Normal file
30
guacamole-docker/entrypoint.d/999-start-tomcat.sh
Normal file
@@ -0,0 +1,30 @@
|
||||
#
|
||||
# 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 999-start-tomcat.sh
|
||||
##
|
||||
## Starts Tomcat. This script replaces the current process with the Tomcat
|
||||
## process and does not exit.
|
||||
##
|
||||
|
||||
# Start tomcat
|
||||
cd /usr/local/tomcat
|
||||
exec catalina.sh run
|
||||
|
Reference in New Issue
Block a user