Fixed some stuff in th entrypoint.sh

This commit is contained in:
Alexander Trost
2015-10-10 22:56:05 +02:00
parent bf3dc85791
commit ddb1d7438c

View File

@@ -12,8 +12,8 @@ ZULIP_SETTINGS="/etc/zulip/settings.py"
# Some functions were originally taken from the zulip/zulip repo folder scripts # Some functions were originally taken from the zulip/zulip repo folder scripts
# But modified to fit the docker image :) # But modified to fit the docker image :)
function databaseSetup { databaseSetup(){
cat <<EOF >> "$ZULIP_SETTINGS" cat >> "$ZULIP_SETTINGS" <<EOF
from zerver.lib.db import TimeTrackingConnection from zerver.lib.db import TimeTrackingConnection
DATABASES = { DATABASES = {
@@ -36,27 +36,50 @@ EOF
export PGPASSWORD="$DB_PASSWORD" export PGPASSWORD="$DB_PASSWORD"
fi fi
if [ -z "$DB_PORT" ]; then if [ -z "$DB_PORT" ]; then
DB_PORT="5432" export DB_PORT="5432"
fi fi
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" <<EOF echo """
CREATE USER zulip; CREATE USER zulip;
ALTER ROLE zulip SET search_path TO zulip,public; ALTER ROLE zulip SET search_path TO zulip,public;
DROP DATABASE IF EXISTS zulip; DROP DATABASE IF EXISTS zulip;
CREATE DATABASE zulip OWNER=zulip; CREATE DATABASE zulip OWNER=zulip;
EOF || : """ | psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" || :
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" "zulip" <<EOF echo """
CREATE SCHEMA zulip AUTHORIZATION zulip; CREATE SCHEMA zulip AUTHORIZATION zulip;
CREATE EXTENSION tsearch_extras SCHEMA zulip; CREATE EXTENSION tsearch_extras SCHEMA zulip;
EOF || : """ | psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" "zulip" || :
} }
function databaseInitiation { databaseInitiation(){
su zulip -c "$MANAGE_PY checkconfig" su zulip -c "$MANAGE_PY checkconfig"
su zulip -c "$MANAGE_PY migrate --noinput" su zulip -c "$MANAGE_PY migrate --noinput"
su zulip -c "$MANAGE_PY createcachetable third_party_api_results" su zulip -c "$MANAGE_PY createcachetable third_party_api_results"
su zulip -c "$MANAGE_PY initialize_voyager_db" su zulip -c "$MANAGE_PY initialize_voyager_db"
} }
function zulipSetup { secretsSetup(){
cat <<EOF >> "$ZULIP_SETTINGS" 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" <<EOF
CACHES = { CACHES = {
'default': { 'default': {
'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache', 'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
@@ -75,88 +98,62 @@ CACHES = {
} }
}, },
} }
EOF EOF
# Rabbitmq settings # Rabbitmq settings
if [ ! -z "$RABBITMQ_USERNAME" ]; then if [ ! -z "$RABBITMQ_USERNAME" ]; then
cat <<EOF >> "$ZULIP_SETTINGS" cat >> "$ZULIP_SETTINGS" <<EOF
RABBITMQ_USERNAME = '$RABBITMQ_USERNAME' RABBITMQ_USERNAME = '$RABBITMQ_USERNAME'
EOF EOF
fi fi
if [ ! -z "$RABBITMQ_PASSWORD" ]; then if [ ! -z "$RABBITMQ_PASSWORD" ]; then
cat <<EOF >> "$ZULIP_SETTINGS" cat >> "$ZULIP_SETTINGS" <<EOF
RABBITMQ_PASSWORD = '$RABBITMQ_PASSWORD' RABBITMQ_PASSWORD = '$RABBITMQ_PASSWORD'
EOF EOF
fi fi
# Redis settings # Redis settings
if [ ! -z "$REDIS_RATE_LIMITING" ] && [ ! -z "$REDIS_HOST" ]; then if [ ! -z "$REDIS_RATE_LIMITING" ]; then
if [ -z "$REDIS_HOST" ]; then
export REDIS_HOST="localhost"
fi
if [ -z "$REDIS_PORT" ]; then if [ -z "$REDIS_PORT" ]; then
REDIS_PORT="6379" export REDIS_PORT="6379"
fi fi
case "$REDIS_RATE_LIMITING" in case "$REDIS_RATE_LIMITING" in
[Tt][Rr][Uu][Ee]) [Tt][Rr][Uu][Ee])
REDIS_RATE_LIMITING="True" export REDIS_RATE_LIMITING="True"
;; ;;
[Ff][Aa][Ll][Ss][Ee]) [Ff][Aa][Ll][Ss][Ee])
REDIS_RATE_LIMITING="False" export REDIS_RATE_LIMITING="False"
;; ;;
*) *)
echo "Can't parse True or Right for REDIS_RATE_LIMITING. Defaulting to True" echo "Can't parse True or Right for REDIS_RATE_LIMITING. Defaulting to True"
REDIS_RATE_LIMITING="True" export REDIS_RATE_LIMITING="True"
;; ;;
esac esac
cat <<EOF >> "$ZULIP_SETTINGS" cat >> "$ZULIP_SETTINGS" <<EOF
RATE_LIMITING = $REDIS_RATE_LIMITING RATE_LIMITING = $REDIS_RATE_LIMITING
REDIS_HOST = '$REDIS_HOST' REDIS_HOST = '$REDIS_HOST'
REDIS_PORT = $REDIS_PORT REDIS_PORT = $REDIS_PORT
EOF EOF
fi fi
# Camo settings # Camo settings
if [ ! -z "$CAMO_KEY" ]; then if [ ! -z "$CAMO_KEY" ]; then
cat <<EOF >> "$ZULIP_SETTINGS" cat >> "$ZULIP_SETTINGS" <<EOF
CAMO_KEY = '$CAMO_KEY' CAMO_KEY = '$CAMO_KEY'
EOF EOF
fi fi
if [ ! -z "$CAMO_URI" ]; then if [ ! -z "$CAMO_URI" ]; then
cat <<EOF >> "$ZULIP_SETTINGS" cat >> "$ZULIP_SETTINGS" <<EOF
CAMO_URI = '$CAMO_URI' CAMO_URI = '$CAMO_URI'
EOF EOF
fi fi
if [ ! -z "$ZULIP_CUSTOM_SETTINGS" ]; then if [ ! -z "$ZULIP_CUSTOM_SETTINGS" ]; then
echo -e "\n$ZULIP_CUSTOM_SETTINGS" >> "$ZULIP_SETTINGS" echo -e "\n$ZULIP_CUSTOM_SETTINGS" >> "$ZULIP_SETTINGS"
fi fi
ZULIP_SECRETS="/etc/zulip/zulip-secrets.conf" local SET_SETTINGS=($(env | sed -nr "s/ZULIP_SETTINGS_([A-Z_]*).*/\1/p"))
POSSIBLE_SECRETS=( for SETTING_KEY in "${SET_SETTINGS[@]}"; do
"s3_key" "s3_secret_key" "android_gcm_api_key" "google_oauth2_client_secret" local KEY="ZULIP_SETTINGS_$SETTING_KEY"
"dropbox_app_key" "mailchimp_api_key" "mandrill_api_key" "twitter_consumer_key" "twitter_consumer_secret" local SETTING_VAR="${!KEY}"
"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}"
if [ -z "$SETTING_VAR" ]; then if [ -z "$SETTING_VAR" ]; then
echo "No settings env var for key \"$SETTING_KEY\"." echo "No settings env var for key \"$SETTING_KEY\"."
continue continue
@@ -167,26 +164,27 @@ EOF
if [ "$ZULIP_COPY_SETTINGS" == "true" ]; then if [ "$ZULIP_COPY_SETTINGS" == "true" ]; then
rm -f "$DATA_DIR/settings.py" rm -f "$DATA_DIR/settings.py"
cp -fT "$ZULIP_SETTINGS" "$DATA_DIR/settings.py" cp -fT "$ZULIP_SETTINGS" "$DATA_DIR/settings.py"
return 0
fi fi
unset SETTING_KEY
} }
function zulipCreateUser { zulipCreateUser(){
if [ -z "$ZULIP_USER_EMAIL" ]; then if [ -z "$ZULIP_USER_EMAIL" ]; then
echo "No zulip user email given." echo "No zulip user email given."
return 1 return 1
fi fi
if [ -z "$ZULIP_USER_PASSWORD" ]; then if [ -z "$ZULIP_USER_PASSWORD" ]; then
echo "No zulip user password given." echo "No zulip user password given."
return 1 return 1
fi fi
if [ -z "$ZULIP_USER_FULLNAME" ]; then if [ -z "$ZULIP_USER_FULLNAME" ]; then
echo "No zulip user full name given. Defaulting to \"Zulip Docker\"" echo "No zulip user full name given. Defaulting to \"Zulip Docker\""
ZULIP_USER_FULLNAME="Zulip Docker" export ZULIP_USER_FULLNAME="Zulip Docker"
fi 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" su zulip -c "$MANAGE_PY knight \"$ZULIP_USER_EMAIL\" -f"
return 0
} }
function rabbitmqSetup { rabbitmqSetup(){
rabbitmqctl delete_user zulip || : rabbitmqctl delete_user zulip || :
rabbitmqctl delete_user guest || : rabbitmqctl delete_user guest || :
rabbitmqctl add_user zulip "$("$ZULIP_CURRENT_DEPLOY/bin/get-django-setting" RABBITMQ_PASSWORD)" || : 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 ..." echo "Generating and setting secrets ..."
# Generate the secrets # Generate the secrets
/root/zulip/scripts/setup/generate_secrets.py /root/zulip/scripts/setup/generate_secrets.py
secretsSetup
echo "Secrets generated and set." echo "Secrets generated and set."
echo "Setting Zulip settings ..." echo "Setting Zulip settings ..."
# Setup zulip settings # Setup zulip settings