#!/bin/bash
#
# Copyright (C) 2019 OX Software GmbH
# 
# This file is part of OX Automation.
#
# OX Automation is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OX Automation is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# 
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OX Automation. If not, see <http://www.gnu.org/licenses/>.
#
#
# Authors:
# Benedikt Kroening <benedikt.kroening@open-xchange.com>
#
set -e
SCRIPT_DIR="$( cd "$(dirname "$0")" ; pwd -P)"
# sourcing some commonly used functions and executing basic checks
source ${SCRIPT_DIR}/../lib/common.bash
source ${SCRIPT_DIR}/../lib/setup.bash
checkRootPrivileges

## Help text
show_usage() {
echo -n "
  $0 [OPTIONS]


"
}

### reading config from command line; overriding defaults
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"

case $key in
    -h|--help)
    show_usage
    exit 0
    shift
    ;;
    --debug)
    echo "WARNING: Debug flag set (--debug)"
    set -x
    shift
    ;;
    --guard)
    INSTALL_GUARD=true
    shift
    ;;
    --documents)
    INSTALL_DOCUMENTS=true
    shift
    ;;
    # -db|--database)
    # DATABASE_TYPE="$2"
    # shift
    # shift
    # ;;
    # --repo-guard)
    # OX_REPO_GUARD="$2"
    # echo "WARNING: Using $OX_REPO_GUARD as guard repository source"
    # shift 
    # shift 
    # ;;
    *)    # unknown option
    POSITIONAL+=("$1") # save it in an array for later
    shift 
    ;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters

PACKAGES="open-xchange-appsuite open-xchange-appsuite-help* "
installPackages ${PACKAGES}

# Install frontend realted documents packages
${SCRIPT_DIR}/install-documents.sh --frontend

echo "Enabling Apache httpd modules..."
if [[ true == "${ANY_DEB}" ]] || [[ true == "${ANY_SLES}" ]]; then

    if [[ true == "${ANY_DEB}" ]]; then
        a2dissite default-ssl 1> /dev/null
        a2dissite 000-default 1> /dev/null
    fi
    a2enmod proxy 1> /dev/null
    a2enmod proxy_balancer 1> /dev/null
    a2enmod proxy_http 1> /dev/null
    a2enmod expires 1> /dev/null
    a2enmod deflate 1> /dev/null
    a2enmod headers 1> /dev/null
    a2enmod rewrite 1> /dev/null
    a2enmod ssl 1> /dev/null
    a2enmod proxy_wstunnel 1> /dev/null
    if [[ true == "${ANY_SLES}" ]]; then
        if [[ "${DIST}" == "SLES12" ]]; then
            gensslcert
        fi
        a2enflag SSL
    fi
elif [[ true == "${ANY_RHEL}" ]] || [[ true == "${ANY_CENTOS}" ]]; then
    yum install -y mod_ssl openssl
    mv "${HTTPD_CONF_PATH}/welcome.conf" "${HTTPD_CONF_PATH}/welcome.DISABLED"
    echo "Disabling old SSL configuration, please review ${HTTPD_CONF_PATH}/ssl.DISABLED."
    mv "${HTTPD_CONF_PATH}/ssl.conf" "${HTTPD_CONF_PATH}/ssl.DISABLED"
    
    if [[ "${INSTALL_TYPE}" != "docker" ]]; then
        # These steps are not required if this setup is docker
        if [[ "${DIST}" == "RHEL6" ]]; then
            service httpd start
            echo "Adding services to autostart..."
            chkconfig --level 345 httpd on
            
        elif [[ "${DIST}" == "RHEL7" ]]; then
            systemctl start httpd.service
            echo "Adding services to autostart..."
            systemctl enable httpd.service
        fi
    fi
fi

# Apache 2.4 specific modules
if [[ true == "${ANY_DEB}" ]] || [[ "${DIST}" == "SLES12" ]]; then
    a2enmod access_compat 1> /dev/null
    a2enmod slotmem_shm 1> /dev/null
    a2enmod lbmethod_byrequests 1> /dev/null
    a2enmod filter 1> /dev/null
fi

cp -v ${SCRIPT_DIR}/../config/frontend/conf/*.conf ${HTTPD_CONF_PATH}
cp -v ${SCRIPT_DIR}/../config/frontend/sites/*.conf ${HTTPD_SITES_PATH}