#!/bin/bash

set -eu

if [[ $# != 1 ]]; then
  echo usage: "${0}" '<suffix>'
  exit 1
fi

is_systemd() {
  case "$( readlink -f /proc/1/exe || true )" in
    *systemd*)
      return 0
      ;;
    *)
      return 1
      ;;
  esac
}

# The SUFFIX must not contain spaces or shell meta characters.
SUFFIX=${1}

if [[ -e /etc/apache2-${SUFFIX} ]]; then
  echo "ERROR: /etc/apache2-${SUFFIX} already exists"
  exit 2
fi

echo "Setting up /etc/apache2-${SUFFIX} ..."
cp -a /etc/apache2 "/etc/apache2-${SUFFIX}"

if is_systemd; then
  echo "systemd is in use, no init script installed"
  echo "use the 'apache2@${SUFFIX}.service' service to control your new instance"
  echo "sample commands:"
  echo "systemctl start apache2@${SUFFIX}.service"
  echo "systemctl enable apache2@${SUFFIX}.service"
else
  echo "Setting up /etc/init.d/apache2-${SUFFIX} ..."
  cp /usr/share/doc/apache2/examples/secondary-init-script "/etc/init.d/apache2-${SUFFIX}"
  # Adjust service name (this prevents us from using a simple symlink).
  perl -p -i -e "s,XXX,${SUFFIX}," "/etc/init.d/apache2-${SUFFIX}"
  chmod 755 "/etc/init.d/apache2-${SUFFIX}"
fi

echo -n "Setting up symlinks:"
for a in a2enmod a2dismod a2ensite a2dissite a2enconf a2disconf apache2ctl; do
  echo -n " ${a}-${SUFFIX}"
  ln -s "/usr/sbin/${a}" "/usr/local/sbin/${a}-${SUFFIX}"
done
echo

echo "Setting up /etc/logrotate.d/apache2-${SUFFIX} and /var/log/apache2-${SUFFIX} ..."
cp -a /etc/logrotate.d/apache2 "/etc/logrotate.d/apache2-${SUFFIX}"
perl -p -i -e "s,/var/log/apache2,/var/log/apache2-${SUFFIX},g" "/etc/logrotate.d/apache2-${SUFFIX}"
if is_systemd; then
  perl -p -i -e "s,\sapache2\s, apache2\@${SUFFIX} ,g" "/etc/logrotate.d/apache2-${SUFFIX}"
else
  perl -p -i -e "s,\sapache2\s, apache2-${SUFFIX} ,g" "/etc/logrotate.d/apache2-${SUFFIX}"
fi
mkdir "/var/log/apache2-${SUFFIX}"
chmod 750 "/var/log/apache2-${SUFFIX}"
chown root:adm "/var/log/apache2-${SUFFIX}"

echo "Setting up /etc/default/apache-htcacheclean-${SUFFIX}"
cp -a /etc/default/apache-htcacheclean "/etc/default/apache-htcacheclean-${SUFFIX}"
