#!/bin/bash

# enable strict mode
set -euo pipefail
IFS=$'\n\t'

SHARED_MOUNT_DIRECTORIES=('public/tmp')
# APP_HOME is provided by the Dockerfile and EFS_VOLUME_CONTAINER_PATH is provided by the Docker runtime (e.g. Fargate)

# Add temporary directories used for artwork and potentially other uploads.
# These should be backed by shared storage across all workstation hosts, so test for EFS_VOLUME_CONTAINER_PATH
for DIR in "${SHARED_MOUNT_DIRECTORIES[@]}"; do
  if [ ! -d "${APP_HOME}/${DIR}" ]; then
    if [ -d "${EFS_VOLUME_CONTAINER_PATH}" ]; then
      ln -s "${EFS_VOLUME_CONTAINER_PATH}" "${APP_HOME}/${DIR}"
    else
      mkdir -p "${APP_HOME}/${DIR}"
      chown www-data "${APP_HOME}/${DIR}"
    fi
  fi
done

# Make sure coverart directories are writable
find "${APP_HOME}/public/images" -type d -name "*coverart*" -exec chown www-data {} \;

# Retrieve configs if in QA or Prod
if [ "${Environment}" = 'qa' ] || [ "${Environment}" = 'prod' ]; then

  AWS_COMMAND='/usr/local/bin/aws'

  if [ -x "${AWS_COMMAND}" ]; then
    ${AWS_COMMAND} s3 cp --recursive s3://"${S3_CONFIG_LOCATION}"/configs/ "${APP_HOME}"/application/configs/
    find "${APP_HOME}/application/configs/" -type f -exec chmod 640 {} \;
    find "${APP_HOME}/public/" -type f -name "*.inc" -exec chmod 640 {} \;
    chgrp -R www-data "${APP_HOME}/application/configs/" "${APP_HOME}/public/"
  else
    printf '%s\n' "awscli not found" && exit 1
  fi

  # Copy correct haproxy config file into place
  cp -a "${APP_HOME}/deploy/haproxy_${Environment}.cfg" /etc/haproxy/haproxy.cfg
  cp -a "${APP_HOME}/deploy/haproxy_base_to_backend.map" /etc/haproxy/haproxy_base_to_backend.map

else
  cp -a "${APP_HOME}/deploy/haproxy_dev.cfg" /etc/haproxy/haproxy.cfg
fi

# Don't leave system config files in dangerous places
rm -rf /var/www/html/deploy

# Replace DNS servers with primary nameserver at runtime
CURRENT_NAMESERVER=$(cat /etc/resolv.conf |grep -m 1 -i '^nameserver' | cut -d ' ' -f2)
sed -i "s/DNS_PLACEHOLDER/${CURRENT_NAMESERVER}/g" /etc/haproxy/haproxy.cfg

haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -D && /usr/sbin/apache2ctl -k start -D FOREGROUND
