OpenSlides/server/docker/entrypoint-db-setup
Finn Stutzenstein 8049bfa91e
Performance improvements for OS3+
- Cleans up log messages in the client
- Refactored the autoupdate bundle code into an own file
- Added bulk creates for History in Postgresql. This is the only database system
  that supports returning all ids whan multiple elements are inserted. We can
  make usage out of it.
- Added a `disable_history`, that is request-wide
- Disabled history on poll vote requests
- Removed unnecessary user ordering
- Reduced the queries for creating motion vote objects by one
- removed final_data: This was not prefetched. Using the normal data collection
  the data is prefetched
- removed unnecessary user query if vore delegation is not used
2021-01-21 12:53:51 +01:00

88 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
set -e
warn_insecure_admin() {
cat <<-EOF
==============================================
WARNING
==============================================
WARNING: INSECURE ADMIN ACCOUNT CONFIGURATION!
EOF
sleep 10
}
# Set DJANGO_SECRET_KEY variable
source /run/secrets/django
[[ -n "$DJANGO_SECRET_KEY" ]] || {
echo "ERROR: Django secret key undefined! Cannot continue."
sleep 5
exit 2
}
export SECRET_KEY="$DJANGO_SECRET_KEY"
# Configure database
# TODO: env variables??
echo "postgres:5432:instancecfg:openslides:openslides" > "${HOME}/.pgpass"
chmod 600 "${HOME}/.pgpass"
until pg_isready -h db; do
echo "Waiting for Postgres cluster to become available..."
sleep 3
done
# Wait for redis
wait-for-it redis:6379
wait-for-it redis-slave:6379
echo 'running migrations'
python -u manage.py migrate
# Admin
if [[ -f /run/secrets/os_admin ]]; then
echo "Retrieving secure admin password"
source /run/secrets/os_admin
if [[ -n "${OPENSLIDES_ADMIN_PASSWORD}" ]]; then
echo "Changing admin password"
python manage.py changedefaultadminpassword "${OPENSLIDES_ADMIN_PASSWORD}"
else
warn_insecure_admin
fi
else
warn_insecure_admin
fi
# Main user
if [[ -f /run/secrets/os_user ]]; then
echo "Retrieving secure user credentials"
source /run/secrets/os_user
if [[ -n "${OPENSLIDES_USER_FIRSTNAME}" ]] &&
[[ -n "${OPENSLIDES_USER_LASTNAME}" ]] &&
[[ -n "${OPENSLIDES_USER_PASSWORD}" ]]; then
user_name="${OPENSLIDES_USER_FIRSTNAME} ${OPENSLIDES_USER_LASTNAME}"
echo "Adding user: ${user_name}"
# createopenslidesuser: error: the following arguments are required:
# first_name, last_name, username, password, groups_id
# email is optional
# userid forces to to only create a user with this id, if it not exists before.
python manage.py createinitialuser \
--email "${OPENSLIDES_USER_EMAIL:-}" \
"${OPENSLIDES_USER_FIRSTNAME}" \
"${OPENSLIDES_USER_LASTNAME}" \
"${user_name}" \
"${OPENSLIDES_USER_PASSWORD}" \
2
else
echo "Incomplete user account data. Skipping account creation."
fi
fi
# SAML setup
. /usr/local/lib/saml-setup.sh
echo "Done migrating and setting up user accounts..."
python -m http.server --directory /app/empty --bind 0.0.0.0 8000