
#!/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
detectDistribution

if [[ -z "${AS_OFFICE_VERSION}" ]]; then
  # sourcing the default configuration to use
  echo "Warning: Missing environment variable. Sourcing default versions file ..."
  exportProperties ${SCRIPT_DIR}/../setup/versions
fi

## Help text
show_usage() {
echo -n "

  $0 [OPTIONS]
    
    --install       The install flag
    --enable        Enable documents in config and restart the backend 
    --disable       Disable (WIP, may not work)
    --server        Set with install flag in order to install dc
    --client        Only configure documentconverter client with the provided remote dc (defaults to localhost)
    --frontend  
    --restart     

"
}


### 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
    ;;
    --enable)
    DOCUMENTCONVERTER_ENABLE=true
    shift
    ;;
    --disable)
    DOCUMENTS_ENABLE=false
    shift
    ;;
    --server)
    SERVER=true
    shift
    ;;
    --client)
    CLIENT=true
    shift
    ;;
    --frontend)
    FRONTEND=true
    shift
    ;;  
    --install)
    export INSTALL_DOCUMENTCONVERTER=true
    shift
    ;;  
    --restart)
    RESTART_OX=true
    shift
    ;;  
    # -k|--key)
    # value="$2"
    # shift
    # shift
    # ;;
    *)    # unknown option
    POSITIONAL+=("$1") # save it in an array for later
    shift 
    ;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters

if [ "$INSTALL_DOCUMENTCONVERTER" = true ] ; then
  if [[ "${SERVER}" = true  ]]; then
    echo "Adding OX documentconverter server packages ..."
    PACKAGES="readerengine open-xchange-documentconverter-server open-xchange-documentconverter-api "
    installPackagesRetry "${PACKAGES}"
  fi
  # client will be installed by documents, frontned does not require packages
fi 

if [[ "${DOCUMENTCONVERTER_ENABLE}" = true  ]]; then
  restartService open-xchange-documentconverter-server
  sleep 5 
  
  INIT_STATE_FILE="/opt/open-xchange/etc/21-init-documentconverter-done"
  if [ ! -f ${INIT_STATE_FILE} ]; then
    # waitPort 8008 oder so?

    if [[ "${SERVER}" = true ]]; then
        echo "Doing some dc-server config"
    fi

    if [[ "${CLIENT}" = true ]]; then
        if [[ -z "${CONVERTER_REMOTE_URL}" ]]; then
            CONVERTER_REMOTE_URL="http://localhost:8008/documentconverterws"
            echo "WARNING: Converter URL not provided, using fallback: $CONVERTER_REMOTE_URL"
            # TODO: This will work on singlenode only. 
            # In order to get this working in cluster envs use the apache proxy balancer 
        fi
        setOXProperty com.openexchange.documentconverter.client.remoteDocumentConverterUrl "${CONVERTER_REMOTE_URL}" /opt/open-xchange/etc/documentconverter-client.properties
        echo "Doing some dc-client config magic"
    fi

    if [[ "${FRONTEND}" = true ]]; then
        echo "WARNING: Frontend balancer config for documentconverter is not yet implemented"
        
    fi

    echo "$(date)" >> ${INIT_STATE_FILE}
  else
    echo "WARNING: This scripts has already been executed and will be skipped!"
    sleep 5
  fi



elif [[ "${DOCUMENTCONVERTER_ENABLE}" = false  ]]; then
  echo ""
  # do something to disable it
fi


if [[ "${RESTART_OX}" = true  ]]; then
  restartService open-xchange
fi