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

## Help text
show_usage() {
echo -n "
  $0 [OPTIONS]
  
    --enable
    --disable
    -f <id> | --filestore <id>
    --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)
    GDPR_ENABLE=true
    shift
    ;;
    --disable)
    GDPR_ENABLE=false
    shift
    ;;
    -f|--filestore)
    OX_FILESTORE_ID="$2"
    shift
    shift
    ;;
    --restart)
    RESTART_OX=true
    shift
    ;;
    *)    # unknown option
    POSITIONAL+=("$1") # save it in an array for later
    shift 
    ;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters


if [[ "${GDPR_ENABLE}" = true  ]]; then
  echo "Enabling GDPR data export feature with 24/7 enabled export functionality ... "
  installPackages "open-xchange-gdpr-dataexport"

  if [ -z ${OX_FILESTORE_ID} ]; then
    echo "No filestore id was specified as parameter, trying to obtain it from config directory ..."
    OX_FILESTORE_ID=$(cat /opt/open-xchange/etc/20-registerfilestore.out | awk '{ print $2 }')  
  fi
  echo "OX_FILESTORE_ID="$OX_FILESTORE_ID
  
  if [[ -f /usr/share/doc/open-xchange-gdpr-dataexport/properties/dataexport.properties ]]; then
    echo "Copying over default dataexport.properties file ..."
    /bin/cp -vf /usr/share/doc/open-xchange-gdpr-dataexport/properties/dataexport.properties /opt/open-xchange/etc/dataexport.properties
  fi

  # Actual configuration of gdpr feature
  setOXProperty com.openexchange.gdpr.dataexport.fileStorageId "$OX_FILESTORE_ID" /opt/open-xchange/etc/dataexport.properties
  setOXProperty com.openexchange.gdpr.dataexport.enabled true /opt/open-xchange/etc/dataexport.properties
  setOXProperty com.openexchange.gdpr.dataexport.active true /opt/open-xchange/etc/dataexport.properties
  setOXProperty com.openexchange.gdpr.dataexport.schedule "Mon-Sun 0-24" /opt/open-xchange/etc/dataexport.properties
  
  echo "Reloading ox config ..."
  /opt/open-xchange/sbin/reloadconfiguration
  # Configuration of no_reply settings (may move to own feature script)
elif [[ "${GDPR_ENABLE}" = false  ]]; then
  if [[ -f /opt/open-xchange/etc/dataexport.properties ]]; then
    echo "Disabling GDPR data export features"
    setOXProperty com.openexchange.gdpr.dataexport.enabled false /opt/open-xchange/etc/dataexport.properties
    setOXProperty com.openexchange.gdpr.dataexport.active false /opt/open-xchange/etc/dataexport.properties
    
  fi
fi

echo "The OX service needs to be restarted for the changes to take effect!"
if [[ "${RESTART_OX}" = true  ]]; then
  restartService open-xchange
fi