diff --git a/entrypoint.sh b/entrypoint.sh index f537668..5a196a0 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -12,8 +12,8 @@ ZULIP_SETTINGS="/etc/zulip/settings.py" # Some functions were originally taken from the zulip/zulip repo folder scripts # But modified to fit the docker image :) -function databaseSetup { - cat <> "$ZULIP_SETTINGS" +databaseSetup(){ + cat >> "$ZULIP_SETTINGS" <> "$ZULIP_SETTINGS" +secretsSetup(){ + local ZULIP_SECRETS="/etc/zulip/zulip-secrets.conf" + local POSSIBLE_SECRETS=( + "s3_key" "s3_secret_key" "android_gcm_api_key" "google_oauth2_client_secret" + "dropbox_app_key" "mailchimp_api_key" "mandrill_api_key" "twitter_consumer_key" "twitter_consumer_secret" + "twitter_access_token_key" "twitter_access_token_secret" "email_password" "rabbitmq_password" + ) + for SECRET_KEY in "${POSSIBLE_SECRETS[@]}"; do + local KEY="ZULIP_SECRETS_$SECRET_KEY" + local SECRET_VAR="${!KEY}" + if [ -z "$SECRET_VAR" ]; then + echo "No settings env var for key \"$SECRET_KEY\"." + continue + fi + echo "Setting secret \"$SECRET_KEY\"." + if [ -z "$(grep "$SECRET_KEY" "$ZULIP_SECRETS")" ]; then + sed -i "s~#?${SECRET_KEY}[ ]*=[ ]*['\"]+.*['\"]+$~${SECRET_KEY} = '${SECRET_VAR}'~g" "$ZULIP_SECRETS" + continue + fi + echo "$SECRET_KEY = '$SECRET_VAR'" >> "$ZULIP_SECRETS" + done + unset SECRET_KEY +} +zulipSetup(){ + cat >> "$ZULIP_SETTINGS" <> "$ZULIP_SETTINGS" + cat >> "$ZULIP_SETTINGS" <> "$ZULIP_SETTINGS" + cat >> "$ZULIP_SETTINGS" <> "$ZULIP_SETTINGS" + cat >> "$ZULIP_SETTINGS" <> "$ZULIP_SETTINGS" + cat >> "$ZULIP_SETTINGS" <> "$ZULIP_SETTINGS" + cat >> "$ZULIP_SETTINGS" <> "$ZULIP_SETTINGS" fi - ZULIP_SECRETS="/etc/zulip/zulip-secrets.conf" - POSSIBLE_SECRETS=( - "s3_key" "s3_secret_key" "android_gcm_api_key" "google_oauth2_client_secret" - "dropbox_app_key" "mailchimp_api_key" "mandrill_api_key" "twitter_consumer_key" "twitter_consumer_secret" - "twitter_access_token_key" "twitter_access_token_secret" "email_password" "rabbitmq_password" - ) - for SECRET_KEY in "${POSSIBLE_SECRETS[@]}"; do - KEY="ZULIP_SECRETS_$SECRET_KEY" - SECRET_VAR="${!KEY}" - if [ -z "$SECRET_VAR" ]; then - echo "No settings env var for key \"$SECRET_KEY\"." - continue - fi - echo "Setting secret \"$SECRET_KEY\"." - if [ -z "$(grep "$SECRET_KEY" "$ZULIP_SECRETS")" ]; then - sed -i "s~#?${SECRET_KEY}[ ]*=[ ]*['\"]+.*['\"]+$~${SECRET_KEY} = '${SECRET_VAR}'~g" "$ZULIP_SECRETS" - continue - fi - echo "$SECRET_KEY = '$SECRET_VAR'" >> "$ZULIP_SECRETS" - done - POSSIBLE_SETTINGS=( - "S3_AUTH_UPLOADS_BUCKET" "S3_AVATAR_BUCKET" - $(grep -E "^#?([a-zA-Z0-9_]*)[ ]*=[ ]*([\"'].*[\"']+|[\(\{]+(\n[^)]*)+.*[\)\}])$" "$ZULIP_SETTINGS" | grep -oE "^#?[ ]?([a-zA-Z0-9_]*)") - ) - for SETTING_KEY in "${POSSIBLE_SETTINGS[@]}"; do - KEY="ZULIP_SETTINGS_$SETTING_KEY" - SETTING_VAR="${!KEY}" + local SET_SETTINGS=($(env | sed -nr "s/ZULIP_SETTINGS_([A-Z_]*).*/\1/p")) + for SETTING_KEY in "${SET_SETTINGS[@]}"; do + local KEY="ZULIP_SETTINGS_$SETTING_KEY" + local SETTING_VAR="${!KEY}" if [ -z "$SETTING_VAR" ]; then echo "No settings env var for key \"$SETTING_KEY\"." continue @@ -167,26 +164,27 @@ EOF if [ "$ZULIP_COPY_SETTINGS" == "true" ]; then rm -f "$DATA_DIR/settings.py" cp -fT "$ZULIP_SETTINGS" "$DATA_DIR/settings.py" - return 0 fi + unset SETTING_KEY } -function zulipCreateUser { +zulipCreateUser(){ if [ -z "$ZULIP_USER_EMAIL" ]; then echo "No zulip user email given." return 1 fi - if [ -z "$ZULIP_USER_PASSWORD" ]; then - echo "No zulip user password given." - return 1 - fi + if [ -z "$ZULIP_USER_PASSWORD" ]; then + echo "No zulip user password given." + return 1 + fi if [ -z "$ZULIP_USER_FULLNAME" ]; then echo "No zulip user full name given. Defaulting to \"Zulip Docker\"" - ZULIP_USER_FULLNAME="Zulip Docker" + export ZULIP_USER_FULLNAME="Zulip Docker" fi - su zulip -c " $MANAGE_PY create_user --new-email \"$ZULIP_USER_EMAIL\" --new-password \"$ZULIP_USER_PASSWORD\" --new-full-name \"$ZULIP_USER_FULLNAME\"" + su zulip -c "$MANAGE_PY create_user --new-email \"$ZULIP_USER_EMAIL\" --new-password \"$ZULIP_USER_PASSWORD\" --new-full-name \"$ZULIP_USER_FULLNAME\"" su zulip -c "$MANAGE_PY knight \"$ZULIP_USER_EMAIL\" -f" + return 0 } -function rabbitmqSetup { +rabbitmqSetup(){ rabbitmqctl delete_user zulip || : rabbitmqctl delete_user guest || : rabbitmqctl add_user zulip "$("$ZULIP_CURRENT_DEPLOY/bin/get-django-setting" RABBITMQ_PASSWORD)" || : @@ -210,6 +208,7 @@ if [ ! -f "$DATA_DIR/.initiated" ]; then echo "Generating and setting secrets ..." # Generate the secrets /root/zulip/scripts/setup/generate_secrets.py + secretsSetup echo "Secrets generated and set." echo "Setting Zulip settings ..." # Setup zulip settings