mirror of
https://github.com/zulip/docker-zulip.git
synced 2025-11-05 14:35:26 +00:00
Fixed some stuff in th entrypoint.sh
This commit is contained in:
135
entrypoint.sh
135
entrypoint.sh
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user