#!/usr/bin/env bash create_env() { echo "[ENV FILE] creating .env file..." # check if file exists if [ -f "/var/interlegis/sapl/data/secret.key" ]; then KEY=`cat /var/interlegis/sapl/data/secret.key` else KEY=`python3 genkey.py` echo $KEY > data/secret.key fi FILENAME="/var/interlegis/sapl/sapl/.env" if [ -z "${DATABASE_URL:-}" ]; then DATABASE_URL="postgresql://sapl:sapl@sapldb:5432/sapl" fi # ALWAYS replace the content of .env variable # If want to conditionally create only if absent then use IF below # if [ ! -f $FILENAME ]; then touch $FILENAME # explicitly use '>' to erase any previous content echo "SECRET_KEY="$KEY > $FILENAME # now only appends echo "DATABASE_URL = "$DATABASE_URL >> $FILENAME echo "DEBUG = ""${DEBUG-False}" >> $FILENAME echo "EMAIL_USE_TLS = ""${USE_TLS-True}" >> $FILENAME echo "EMAIL_PORT = ""${EMAIL_PORT-587}" >> $FILENAME echo "EMAIL_HOST = ""${EMAIL_HOST-''}" >> $FILENAME echo "EMAIL_HOST_USER = ""${EMAIL_HOST_USER-''}" >> $FILENAME echo "EMAIL_HOST_PASSWORD = ""${EMAIL_HOST_PASSWORD-''}" >> $FILENAME echo "EMAIL_SEND_USER = ""${EMAIL_HOST_USER-''}" >> $FILENAME echo "DEFAULT_FROM_EMAIL = ""${EMAIL_HOST_USER-''}" >> $FILENAME echo "SERVER_EMAIL = ""${EMAIL_HOST_USER-''}" >> $FILENAME echo "USE_SOLR = ""${USE_SOLR-False}" >> $FILENAME echo "SOLR_COLLECTION = ""${SOLR_COLLECTION-sapl}" >> $FILENAME echo "SOLR_URL = ""${SOLR_URL-http://localhost:8983}" >> $FILENAME echo "IS_ZK_EMBEDDED = ""${IS_ZK_EMBEDDED-False}" >> $FILENAME echo "[ENV FILE] done." } create_env /bin/bash wait-for-pg.sh $DATABASE_URL yes yes | python3 manage.py migrate ## SOLR USE_SOLR="${USE_SOLR:=False}" SOLR_URL="${SOLR_URL:=http://localhost:8983}" SOLR_COLLECTION="${SOLR_COLLECTION:=sapl}" NUM_SHARDS=${NUM_SHARDS:=1} RF=${RF:=1} MAX_SHARDS_PER_NODE=${MAX_SHARDS_PER_NODE:=1} IS_ZK_EMBEDDED="${IS_ZK_EMBEDDED:=False}" if [ "${USE_SOLR-False}" == "True" ] || [ "${USE_SOLR-False}" == "true" ]; then echo "Solr configurations" echo "===================" echo "URL: $SOLR_URL" echo "COLLECTION: $SOLR_COLLECTION" echo "NUM_SHARDS: $NUM_SHARDS" echo "REPLICATION FACTOR: $RF" echo "MAX SHARDS PER NODE: $MAX_SHARDS_PER_NODE" echo "ASSUME ZK EMBEDDED: $IS_ZK_EMBEDDED" echo "=========================================" echo "running Solr script" /bin/bash wait-for-solr.sh $SOLR_URL CHECK_SOLR_RETURN=$? if [ $CHECK_SOLR_RETURN == 1 ]; then echo "Connecting to Solr..." if [ "${IS_ZK_EMBEDDED-False}" == "True" ] || [ "${IS_ZK_EMBEDDED-False}" == "true" ]; then ZK_EMBEDDED="--embedded_zk" echo "Assuming embedded ZooKeeper instalation..." fi python3 solr_cli.py -u $SOLR_URL -c $SOLR_COLLECTION -s $NUM_SHARDS -rf $RF -ms $MAX_SHARDS_PER_NODE $ZK_EMBEDDED & RANDOM_MINUTE_MIN=0 RANDOM_MINUTE_MAX=60 RANDOM_HOUR_MIN=0 RANDOM_HOUR_MAX=3 # Generate a random minute within the interval RANDOM_MINUTE=$((RANDOM % ($RANDOM_MINUTE_MAX-$RANDOM_MINUTE_MIN+1) + $RANDOM_MINUTE_MIN)) RANDOM_HOUR=$((RANDOM % ($RANDOM_HOUR_MAX-$RANDOM_HOUR_MIN+1) + $RANDOM_HOUR_MIN)) # Add the cronjob to the crontab echo "$RANDOM_MINUTE $RANDOM_HOUR * * * python3 solr_cli.py -u $SOLR_URL -c $SOLR_COLLECTION --update-index" >> /etc/cron.daily/update_solr_index # Start the cron daemon crond -f -L /dev/stdout else echo "Solr is offline, not possible to connect." fi else echo "Solr support is not initialized." fi echo "Creating admin user..." user_created=$(python3 create_admin.py 2>&1) echo $user_created cmd=$(echo $user_created | grep 'ADMIN_USER_EXISTS') user_exists=$? cmd=$(echo $user_created | grep 'MISSING_ADMIN_PASSWORD') lack_pwd=$? if [ $user_exists -eq 0 ]; then echo "[SUPERUSER CREATION] User admin already exists. Not creating" fi if [ $lack_pwd -eq 0 ]; then echo "[SUPERUSER] Environment variable $ADMIN_PASSWORD for superuser admin was not set. Leaving container" # return -1 fi # Backfilling AuditLog's JSON field time ./manage.py backfill_auditlog & echo "-------------------------------------" echo "| ███████╗ █████╗ ██████╗ ██╗ |" echo "| ██╔════╝██╔══██╗██╔══██╗██║ |" echo "| ███████╗███████║██████╔╝██║ |" echo "| ╚════██║██╔══██║██╔═══╝ ██║ |" echo "| ███████║██║ ██║██║ ███████╗ |" echo "| ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝ |" echo "-------------------------------------" /bin/sh gunicorn_start.sh & /usr/sbin/nginx -g "daemon off;"