11#! /usr/bin/env bash
22
33# Fixup the passwd file, in case we're on OpenShift
4- if ! whoami > /dev/null 2>&1 ; then
5- if [ " $( id -u) " -ne 5050 ]; then
6- if [ -w /etc/passwd ]; then
4+ if ! whoami & > /dev/null; then
5+ if [[ $( id -u) != 5050 ] ]; then
6+ if [[ -w /etc/passwd ] ]; then
77 echo " ${USER_NAME:- pgadminr} :x:$( id -u) :0:${USER_NAME:- pgadminr} user:${HOME} :/sbin/nologin" >> /etc/passwd
88 fi
99 fi
@@ -16,22 +16,22 @@ function file_env() {
1616 local var=" $1 "
1717 local fileVar=" ${var} _FILE"
1818 local def=" ${2:- } "
19- if [ " ${! var:- } " ] && [ " ${! fileVar:- } " ]; then
19+ if [[ -n ${! var:- } && -n ${! fileVar:- } ] ]; then
2020 printf >&2 ' error: both %s and %s are set (but are exclusive)\n' " $var " " $fileVar "
2121 exit 1
2222 fi
2323 local val=" $def "
24- if [ " ${! var:- } " ]; then
24+ if [[ -n ${! var:- } ] ]; then
2525 val=" ${! var} "
26- elif [ " ${! fileVar:- } " ]; then
26+ elif [[ -n ${! fileVar:- } ] ]; then
2727 val=" $( < " ${! fileVar} " ) "
2828 fi
2929 export " $var " =" $val "
3030 unset " $fileVar "
3131}
3232
3333# Set values for config variables that can be passed using secrets
34- if [ -n " ${ PGADMIN_CONFIG_CONFIG_DATABASE_URI_FILE} " ]; then
34+ if [[ -n $ PGADMIN_CONFIG_CONFIG_DATABASE_URI_FILE ] ]; then
3535 file_env PGADMIN_CONFIG_CONFIG_DATABASE_URI
3636fi
3737file_env PGADMIN_DEFAULT_PASSWORD
@@ -42,7 +42,7 @@ export CONFIG_DISTRO_FILE_PATH="${PGADMIN_CUSTOM_CONFIG_DISTRO_FILE:-/pgadmin4/c
4242# provided by the user through the PGADMIN_CONFIG_* environment variables.
4343# Only update the file on first launch. The empty file is created only in default path during the
4444# container build so it can have the required ownership.
45- if [ ! -e " ${ CONFIG_DISTRO_FILE_PATH} " ] || [ " $( wc -m " ${CONFIG_DISTRO_FILE_PATH} " 2> /dev/null | awk ' { print $1 }' ) " = " 0 " ]; then
45+ if [[ ! -e $ CONFIG_DISTRO_FILE_PATH || $( wc -m " ${CONFIG_DISTRO_FILE_PATH} " 2> /dev/null | awk ' { print $1 }' ) == 0 ] ]; then
4646 cat << EOF > "${CONFIG_DISTRO_FILE_PATH} "
4747CA_FILE = '/etc/ssl/certs/ca-certificates.crt'
4848LOG_FILE = '/dev/null'
6969
7070# Check whether the external configuration database exists if it is being used.
7171external_config_db_exists=" False"
72- if [ -n " ${ PGADMIN_CONFIG_CONFIG_DATABASE_URI} " ]; then
72+ if [[ -n $ PGADMIN_CONFIG_CONFIG_DATABASE_URI ] ]; then
7373 external_config_db_exists=$( cd /pgadmin4/pgadmin/utils && /venv/bin/python3 -c " from check_external_config_db import check_external_config_db; val = check_external_config_db(" ${PGADMIN_CONFIG_CONFIG_DATABASE_URI} " ); print(val)" )
7474fi
7575
@@ -79,44 +79,44 @@ function load_server_json_file() {
7979
8080 EXTRA_ARGS=" "
8181
82- if [ " ${ PGADMIN_REPLACE_SERVERS_ON_STARTUP} " = " True" ]; then
82+ if [[ $ PGADMIN_REPLACE_SERVERS_ON_STARTUP == ' True' ] ]; then
8383 EXTRA_ARGS=" --replace"
8484 fi
8585
86- if [ -f " ${ PGADMIN_SERVER_JSON_FILE} " ]; then
86+ if [[ -f $ PGADMIN_SERVER_JSON_FILE ] ]; then
8787 # When running in Desktop mode, no user is created
8888 # so we have to import servers anonymously
89- if [ " ${ PGADMIN_CONFIG_SERVER_MODE} " = " False" ]; then
89+ if [[ $ PGADMIN_CONFIG_SERVER_MODE == ' False' ] ]; then
9090 /venv/bin/python3 /pgadmin4/setup.py load-servers " ${PGADMIN_SERVER_JSON_FILE} " ${EXTRA_ARGS}
9191 else
9292 /venv/bin/python3 /pgadmin4/setup.py load-servers " ${PGADMIN_SERVER_JSON_FILE} " --user " ${PGADMIN_DEFAULT_EMAIL} " ${EXTRA_ARGS}
9393 fi
9494 fi
9595}
9696
97- if [ ! -f /var/lib/pgadmin/pgadmin4.db ] && [ " ${ external_config_db_exists} " = " False" ]; then
98- if [ -z " ${ PGADMIN_DEFAULT_EMAIL} " ] || { [ -z " ${ PGADMIN_DEFAULT_PASSWORD} " ] && [ -z " ${ PGADMIN_DEFAULT_PASSWORD_FILE} " ] ; } ; then
97+ if [[ ! -f /var/lib/pgadmin/pgadmin4.db && $ external_config_db_exists == ' False' ] ]; then
98+ if [[ -z $ PGADMIN_DEFAULT_EMAIL || ( -z $ PGADMIN_DEFAULT_PASSWORD && -z $ PGADMIN_DEFAULT_PASSWORD_FILE) ]] ; then
9999 echo ' You need to define the PGADMIN_DEFAULT_EMAIL and PGADMIN_DEFAULT_PASSWORD or PGADMIN_DEFAULT_PASSWORD_FILE environment variables.'
100100 exit 1
101101 fi
102102
103103 # Validate PGADMIN_DEFAULT_EMAIL
104104 CHECK_EMAIL_DELIVERABILITY=" False"
105- if [ -n " ${ PGADMIN_CONFIG_CHECK_EMAIL_DELIVERABILITY} " ]; then
105+ if [[ -n $ PGADMIN_CONFIG_CHECK_EMAIL_DELIVERABILITY ] ]; then
106106 CHECK_EMAIL_DELIVERABILITY=${PGADMIN_CONFIG_CHECK_EMAIL_DELIVERABILITY}
107107 fi
108108 ALLOW_SPECIAL_EMAIL_DOMAINS=" []"
109- if [ -n " ${ PGADMIN_CONFIG_ALLOW_SPECIAL_EMAIL_DOMAINS} " ]; then
109+ if [[ -n $ PGADMIN_CONFIG_ALLOW_SPECIAL_EMAIL_DOMAINS ] ]; then
110110 ALLOW_SPECIAL_EMAIL_DOMAINS=${PGADMIN_CONFIG_ALLOW_SPECIAL_EMAIL_DOMAINS}
111111 fi
112112 GLOBALLY_DELIVERABLE=" True"
113- if [ -n " ${ PGADMIN_CONFIG_GLOBALLY_DELIVERABLE} " ]; then
113+ if [[ -n $ PGADMIN_CONFIG_GLOBALLY_DELIVERABLE ] ]; then
114114 GLOBALLY_DELIVERABLE=${PGADMIN_CONFIG_GLOBALLY_DELIVERABLE}
115115 fi
116116 email_config=" {'CHECK_EMAIL_DELIVERABILITY': ${CHECK_EMAIL_DELIVERABILITY} , 'ALLOW_SPECIAL_EMAIL_DOMAINS': ${ALLOW_SPECIAL_EMAIL_DOMAINS} , 'GLOBALLY_DELIVERABLE': ${GLOBALLY_DELIVERABLE} }"
117117 echo " email config is ${email_config} "
118118 is_valid_email=$( cd /pgadmin4/pgadmin/utils && /venv/bin/python3 -c " from validation_utils import validate_email; val = validate_email('${PGADMIN_DEFAULT_EMAIL} ', ${email_config} ); print(val)" )
119- if echo " ${is_valid_email} " | grep " False" > /dev/null; then
119+ if echo " ${is_valid_email} " | grep " False" & > /dev/null; then
120120 echo " '${PGADMIN_DEFAULT_EMAIL} ' does not appear to be a valid email address. Please reset the PGADMIN_DEFAULT_EMAIL environment variable and try again."
121121 echo " Validation output: ${is_valid_email} "
122122 exit 1
@@ -139,17 +139,17 @@ if [ ! -f /var/lib/pgadmin/pgadmin4.db ] && [ "${external_config_db_exists}" = "
139139 load_server_json_file
140140
141141 # Pre-load any required preferences
142- if [ -f " ${ PGADMIN_PREFERENCES_JSON_FILE} " ]; then
143- if [ " ${ PGADMIN_CONFIG_SERVER_MODE} " = " False" ]; then
142+ if [[ -f $ PGADMIN_PREFERENCES_JSON_FILE ] ]; then
143+ if [[ $ PGADMIN_CONFIG_SERVER_MODE == ' False' ] ]; then
144144 DESKTOP_USER=$( cd /pgadmin4 && /venv/bin/python3 -c ' import config; print(config.DESKTOP_USER)' )
145145 /venv/bin/python3 /pgadmin4/setup.py set-prefs " ${DESKTOP_USER} " --input-file " ${PGADMIN_PREFERENCES_JSON_FILE} "
146146 else
147147 /venv/bin/python3 /pgadmin4/setup.py set-prefs " ${PGADMIN_DEFAULT_EMAIL} " --input-file " ${PGADMIN_PREFERENCES_JSON_FILE} "
148148 fi
149149 fi
150150 # Copy the pgpass file passed using secrets
151- if [ -f " ${ PGPASS_FILE} " ]; then
152- if [ " ${ PGADMIN_CONFIG_SERVER_MODE} " = " False" ]; then
151+ if [[ -f $ PGPASS_FILE ] ]; then
152+ if [[ $ PGADMIN_CONFIG_SERVER_MODE == ' False' ] ]; then
153153 cp ${PGPASS_FILE} /var/lib/pgadmin/.pgpass
154154 chmod 600 /var/lib/pgadmin/.pgpass
155155 else
@@ -160,12 +160,12 @@ if [ ! -f /var/lib/pgadmin/pgadmin4.db ] && [ "${external_config_db_exists}" = "
160160 fi
161161 fi
162162# If already initialised and PGADMIN_REPLACE_SERVERS_ON_STARTUP is set to true, then load the server json file.
163- elif [ " ${ PGADMIN_REPLACE_SERVERS_ON_STARTUP} " = " True" ]; then
163+ elif [[ $ PGADMIN_REPLACE_SERVERS_ON_STARTUP == ' True' ] ]; then
164164 load_server_json_file
165165fi
166166
167167# Start Postfix to handle password resets etc.
168- if [ -z " ${ PGADMIN_DISABLE_POSTFIX} " ]; then
168+ if [[ -z $ PGADMIN_DISABLE_POSTFIX ] ]; then
169169 sudo /usr/sbin/postfix start
170170fi
171171
@@ -176,17 +176,17 @@ TIMEOUT=$(cd /pgadmin4 && /venv/bin/python3 -c 'import config; print(config.SESS
176176# NOTE: currently pgadmin can run only with 1 worker due to sessions implementation
177177# Using --threads to have multi-threaded single-process worker
178178
179- if [ -n " ${ PGADMIN_ENABLE_SOCK} " ]; then
179+ if [[ -n $ PGADMIN_ENABLE_SOCK ] ]; then
180180 BIND_ADDRESS=" unix:/run/pgadmin/pgadmin.sock"
181181else
182- if [ -n " ${ PGADMIN_ENABLE_TLS} " ]; then
182+ if [[ -n $ PGADMIN_ENABLE_TLS ] ]; then
183183 BIND_ADDRESS=" ${PGADMIN_LISTEN_ADDRESS:- [::]} :${PGADMIN_LISTEN_PORT:- 443} "
184184 else
185185 BIND_ADDRESS=" ${PGADMIN_LISTEN_ADDRESS:- [::]} :${PGADMIN_LISTEN_PORT:- 80} "
186186 fi
187187fi
188188
189- if [ -n " ${ PGADMIN_ENABLE_TLS} " ]; then
189+ if [[ -n $ PGADMIN_ENABLE_TLS ] ]; then
190190 exec /venv/bin/gunicorn --limit-request-line " ${GUNICORN_LIMIT_REQUEST_LINE:- 8190} " --timeout " ${TIMEOUT} " --bind " ${BIND_ADDRESS} " -w 1 --threads " ${GUNICORN_THREADS:- 25} " --access-logfile " ${GUNICORN_ACCESS_LOGFILE:- -} " --keyfile /certs/server.key --certfile /certs/server.cert -c gunicorn_config.py run_pgadmin:app
191191else
192192 exec /venv/bin/gunicorn --limit-request-line " ${GUNICORN_LIMIT_REQUEST_LINE:- 8190} " --limit-request-fields " ${GUNICORN_LIMIT_REQUEST_FIELDS:- 100} " --limit-request-field_size " ${GUNICORN_LIMIT_REQUEST_FIELD_SIZE:- 8190} " --timeout " ${TIMEOUT} " --bind " ${BIND_ADDRESS} " -w 1 --threads " ${GUNICORN_THREADS:- 25} " --access-logfile " ${GUNICORN_ACCESS_LOGFILE:- -} " -c gunicorn_config.py run_pgadmin:app
0 commit comments