From 6f8c34c0f3f7ab176331b6d6d0669a7046590b39 Mon Sep 17 00:00:00 2001 From: wf6DJd8a3xSSCZbn <50090275+wf6DJd8a3xSSCZbn@users.noreply.github.com> Date: Fri, 8 Jan 2021 10:45:00 -0500 Subject: [PATCH] Updating shell scripts to adhear better to Bash style guides (#510) * Updated Shell Script Format Signed-off-by: Spencer --- MAINTENANCE.md | 2 +- README.md | 2 +- app/entrypoint.sh | 98 +++++++++++++++++++++++------------------------ db/entrypoint.sh | 10 ++--- db/setup-wale.sh | 8 ++-- web/entrypoint.sh | 2 +- 6 files changed, 61 insertions(+), 61 deletions(-) diff --git a/MAINTENANCE.md b/MAINTENANCE.md index 15da0f9..64905b3 100644 --- a/MAINTENANCE.md +++ b/MAINTENANCE.md @@ -20,7 +20,7 @@ The following people help to maintain this open source project: |:--------------------------------------|:--------------| | Carlos Tadeu Panato Junior - @cpanato | Feb 18 2018 | -In case something happens where no maintainers are able to complete their responsibilies, the following sponsoring organization can help find a new maintainer: +In case something happens where no maintainers are able to complete their responsibilities, the following sponsoring organization can help find a new maintainer: | Sponsoring Organization | Start Date | |:-------------------------------|:--------------| diff --git a/README.md b/README.md index 68cbf51..4e1fbe7 100644 --- a/README.md +++ b/README.md @@ -196,7 +196,7 @@ docker-compose build app docker-compose run app -upgrade_db_30 docker-compose up -d ``` -See the [offical Upgrade Guide](http://docs.mattermost.com/administration/upgrade.html) for more details. +See the [official Upgrade Guide](http://docs.mattermost.com/administration/upgrade.html) for more details. ## Installation using Docker Swarm Mode diff --git a/app/entrypoint.sh b/app/entrypoint.sh index f58bc71..40808da 100755 --- a/app/entrypoint.sh +++ b/app/entrypoint.sh @@ -2,7 +2,7 @@ # Function to generate a random salt generate_salt() { - tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 48 | head -n 1 + tr -dc 'a-zA-Z0-9' "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.LogSettings.EnableConsole = true' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.LogSettings.ConsoleLevel = "ERROR"' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.FileSettings.Directory = "/mattermost/data/"' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.FileSettings.EnablePublicLink = true' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq ".FileSettings.PublicLinkSalt = \"$(generate_salt)\"" "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.EmailSettings.SendEmailNotifications = false' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.EmailSettings.FeedbackEmail = ""' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.EmailSettings.SMTPServer = ""' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.EmailSettings.SMTPPort = ""' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq ".EmailSettings.InviteSalt = \"$(generate_salt)\"" "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq ".EmailSettings.PasswordResetSalt = \"$(generate_salt)\"" "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.RateLimitSettings.Enable = true' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.SqlSettings.DriverName = "postgres"' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq ".SqlSettings.AtRestEncryptKey = \"$(generate_salt)\"" "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.PluginSettings.Directory = "/mattermost/plugins/"' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - else - echo "Using existing config file $MM_CONFIG" - fi + if [ ! -f "$MM_CONFIG" ]; then + # If there is no configuration file, create it with some default values + echo "No configuration file $MM_CONFIG" + echo "Creating a new one" + # Copy default configuration file + cp /config.json.save "$MM_CONFIG" + # Substitute some parameters with jq + jq '.ServiceSettings.ListenAddress = ":8000"' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq '.LogSettings.EnableConsole = true' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq '.LogSettings.ConsoleLevel = "ERROR"' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq '.FileSettings.Directory = "/mattermost/data/"' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq '.FileSettings.EnablePublicLink = true' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq ".FileSettings.PublicLinkSalt = \"$(generate_salt)\"" "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq '.EmailSettings.SendEmailNotifications = false' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq '.EmailSettings.FeedbackEmail = ""' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq '.EmailSettings.SMTPServer = ""' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq '.EmailSettings.SMTPPort = ""' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq ".EmailSettings.InviteSalt = \"$(generate_salt)\"" "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq ".EmailSettings.PasswordResetSalt = \"$(generate_salt)\"" "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq '.RateLimitSettings.Enable = true' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq '.SqlSettings.DriverName = "postgres"' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq ".SqlSettings.AtRestEncryptKey = \"$(generate_salt)\"" "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + jq '.PluginSettings.Directory = "/mattermost/plugins/"' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" + else + echo "Using existing config file $MM_CONFIG" + fi - # Configure database access - if [ -z "$MM_SQLSETTINGS_DATASOURCE" ] && [ -n "$MM_USERNAME" ] && [ -n "$MM_PASSWORD" ]; then - echo "Configure database connection..." - # URLEncode the password, allowing for special characters - ENCODED_PASSWORD=$(printf %s "$MM_PASSWORD" | jq -s -R -r @uri) - export MM_SQLSETTINGS_DATASOURCE="postgres://$MM_USERNAME:$ENCODED_PASSWORD@$DB_HOST:$DB_PORT_NUMBER/$MM_DBNAME?sslmode=$DB_USE_SSL&connect_timeout=10" - echo "OK" - else - echo "Using existing database connection" - fi + # Configure database access + if [ -z "$MM_SQLSETTINGS_DATASOURCE" ] && [ -n "$MM_USERNAME" ] && [ -n "$MM_PASSWORD" ]; then + echo "Configure database connection..." + # URLEncode the password, allowing for special characters + ENCODED_PASSWORD=$(printf %s "$MM_PASSWORD" | jq -s -R -r @uri) + export MM_SQLSETTINGS_DATASOURCE="postgres://$MM_USERNAME:$ENCODED_PASSWORD@$DB_HOST:$DB_PORT_NUMBER/$MM_DBNAME?sslmode=$DB_USE_SSL&connect_timeout=10" + echo "OK" + else + echo "Using existing database connection" + fi - # Wait another second for the database to be properly started. - # Necessary to avoid "panic: Failed to open sql connection pq: the database system is starting up" - sleep 1 + # Wait another second for the database to be properly started. + # Necessary to avoid "panic: Failed to open sql connection pq: the database system is starting up" + sleep 1 - echo "Starting mattermost" + echo "Starting mattermost" fi exec "$@" diff --git a/db/entrypoint.sh b/db/entrypoint.sh index ce0facc..959f1f7 100755 --- a/db/entrypoint.sh +++ b/db/entrypoint.sh @@ -5,7 +5,7 @@ export WAL_LEVEL=${WAL_LEVEL:-minimal} export ARCHIVE_MODE=${ARCHIVE_MODE:-off} export ARCHIVE_TIMEOUT=${ARCHIVE_TIMEOUT:-60} -function update_conf () { +function update_conf() { wal=$1 # PGDATA is defined in upstream postgres dockerfile config_file=$PGDATA/postgresql.conf @@ -23,11 +23,11 @@ function update_conf () { sed -i "s/archive_command =.*$//g" $config_file # Configure wal-e - if [ "$wal" = true ] ; then + if [ "$wal" = true ]; then /docker-entrypoint-initdb.d/setup-wale.sh fi - echo "log_timezone = $DEFAULT_TIMEZONE" >> $config_file - echo "timezone = $DEFAULT_TIMEZONE" >> $config_file + echo "log_timezone = $DEFAULT_TIMEZONE" >>$config_file + echo "timezone = $DEFAULT_TIMEZONE" >>$config_file } if [ "${1:0:1}" = '-' ]; then @@ -46,7 +46,7 @@ if [ "$1" = 'postgres' ]; then done # Setup wal-e env variables - if [ "$wal_enable" = true ] ; then + if [ "$wal_enable" = true ]; then for v in ${VARS[@]}; do export $v="${!v}" done diff --git a/db/setup-wale.sh b/db/setup-wale.sh index cf34ea5..d738e3c 100755 --- a/db/setup-wale.sh +++ b/db/setup-wale.sh @@ -1,7 +1,7 @@ #!/bin/bash # wal-e specific configuration -echo "wal_level = $WAL_LEVEL" >> $PGDATA/postgresql.conf -echo "archive_mode = $ARCHIVE_MODE" >> $PGDATA/postgresql.conf -echo "archive_command = '/usr/bin/wal-e wal-push %p'" >> $PGDATA/postgresql.conf -echo "archive_timeout = $ARCHIVE_TIMEOUT" >> $PGDATA/postgresql.conf +echo "wal_level = $WAL_LEVEL" >>$PGDATA/postgresql.conf +echo "archive_mode = $ARCHIVE_MODE" >>$PGDATA/postgresql.conf +echo "archive_command = '/usr/bin/wal-e wal-push %p'" >>$PGDATA/postgresql.conf +echo "archive_timeout = $ARCHIVE_TIMEOUT" >>$PGDATA/postgresql.conf diff --git a/web/entrypoint.sh b/web/entrypoint.sh index 6a7d9bc..bcc5f3e 100755 --- a/web/entrypoint.sh +++ b/web/entrypoint.sh @@ -11,7 +11,7 @@ if [ -f "/cert/cert.pem" -a -f "/cert/key-no-password.pem" ]; then else echo "linking plain config" fi -# Ensure that the configuration file is not present before linking. +# Ensure that the configuration file is not present before linking. test -w /etc/nginx/conf.d/mattermost.conf && rm /etc/nginx/conf.d/mattermost.conf # Linking Nginx configuration file ln -s -f /etc/nginx/sites-available/mattermost$ssl /etc/nginx/conf.d/mattermost.conf