# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

description   "Start apache for moblab."
author        "chromium-os-dev@chromium.org"

start on (started moblab-database-init and
          stopped moblab-homedir-init and
          stopped moblab-external-storage-init RESULT=ok)

env CROS_CACHEDIR=/mnt/moblab/cros_cache_apache

pre-start script
  logger -t "${UPSTART_JOB}" "Starting."
  mkdir -p --mode 775 "${CROS_CACHEDIR}"
  chown -R apache:apache "${CROS_CACHEDIR}"

  APACHE_LOG_DIR=/var/log/apache2
  mkdir -p "${APACHE_LOG_DIR}"
  chown -R apache:apache "${APACHE_LOG_DIR}"

  APACHE_RUN_DIR=/var/run/apache
  mkdir -p "${APACHE_RUN_DIR}"
  chown -R apache:apache "${APACHE_RUN_DIR}"

  APACHE_SSH_DIR=/var/www/.ssh
  if [ ! -e "${APACHE_SSH_DIR}"/id_rsa ]; then
    mkdir -p "${APACHE_SSH_DIR}"
    cp /root/.ssh/* "${APACHE_SSH_DIR}"
    chown -R apache:apache "${APACHE_SSH_DIR}"
  fi

  APACHE_DIR=/var/www/
  BOTO_DIR=/home/moblab/
  if [ ! -e "${APACHE_DIR}".boto ]; then
    ln -s "${BOTO_DIR}".boto "${APACHE_DIR}".boto
    chown -h apache:apache "${APACHE_DIR}".boto
  fi
  if [ ! -e "${APACHE_DIR}".gsutil ]; then
    mkdir "${APACHE_DIR}".gsutil
    chown apache:apache "${APACHE_DIR}".gsutil
  fi

  logger -t "${UPSTART_JOB}" "Ending."
end script

# apache2 will fork once and exit.
expect fork

exec apache2
