#!/bin/sh

set -e

[ "$1" = "configure" ] || exit 0
[ "$DEBIAN_SCRIPT_DEBUG" ] && set -vx

aosiplugcf="/etc/aosi/plugins.conf"
aosiplugcfdir="/etc/aosi/plugins"
plugdir="/usr/lib/aosi/Plugins"
plugcf="o365connect.conf"

if [ ! -f "$aosiplugcf" ]; then
  touch $aosiplugcf
fi

# Load CARNet Tools
. /usr/share/carnet-tools/functions.sh

# Load Debconf
. /usr/share/debconf/confmodule

if [ -f /etc/aosi/plugins/o365connectAttributes.pm ]; then
    cp_check_and_sed 'immutableid' \
                     's/immutableid/onPremisesImmutableId/g' \
                     /etc/aosi/plugins/o365connectAttributes.pm || true
fi

db_get libo365connect-aosi-aai/azure2msgraph || true
azure2msgraph="$RET"
db_go || true

if [ "$azure2msgraph" = "false" ]; then
  db_stop || true
  exit 0
fi

db_get libo365connect-aosi-aai/enable || true
ENABLE="$RET"
db_go || true

if [ "$ENABLE" = "true" ]; then
  db_get libo365connect-aosi-aai/ofc_clientID || true
  ofc_clientID="$RET"
  db_get libo365connect-aosi-aai/ofc_clientSecret || true
  ofc_clientSecret="$RET"
  db_go || true

  echo "ofc_clientID = $ofc_clientID
ofc_clientSecret = $ofc_clientSecret

ofc_file_prefix = o365connect/o365connect
ofc_file_ext    = .ldif
ofc_dump_file_prefix = o365connect/o365connect-dump
ofc_dump_file_ext    = .ldif
ofc_logrotate_file_prefix = o365connect/o365connect
ofc_logrotate_file_ext    = .logrotate
ofc_logrotate_exe         = /usr/sbin/logrotate
ofc_logrotate_exe_path    = /bin:/usr/sbin:/usr/local/bin
ofc_logrotate_status_prefix = o365connect/logrotate_status

ofc_archive_processed_ldif = 1

<ofc_valid_realm>
*
</ofc_valid_realm>
<ofc_valid_ip>
161.53.2.215
161.53.2.216
161.53.2.217
161.53.2.218
161.53.2.118
161.53.2.76
::ffff:161.53.2.215
::ffff:161.53.2.216
::ffff:161.53.2.217
::ffff:161.53.2.218
::ffff:161.53.2.118
::ffff:161.53.2.76
</ofc_valid_ip>" > $aosiplugcfdir/$plugcf.$$

  if [ -f $aosiplugcfdir/$plugcf ]; then
    if ! cmp -s $aosiplugcfdir/$plugcf.$$ $aosiplugcfdir/$plugcf; then
      echo "AAI: Backing up old $aosiplugcfdir/$plugcf to /var/backups/aosi/..."
      cp_backup_conffile -p -d aosi $aosiplugcfdir/$plugcf
      create_new_conf="yes"
    fi
  else
    create_new_conf="yes"
  fi

  if [ "$create_new_conf" = "yes" ]; then
    echo "AAI: Creating new /usr/lib/aosi/Plugins/$plugcf..."
    cp_mv $aosiplugcfdir/$plugcf.$$ $aosiplugcfdir/$plugcf
    rm -f $aosiplugcfdir/$plugcf.cn-old
    restart_aosi="yes"
  else
    rm -f $aosiplugcfdir/$plugcf.$$
  fi
fi

db_stop || true

if [ "$ENABLE" = "true" ]; then
  if ! grep -q "^o365connect$" $aosiplugcf; then
    echo "o365connect" >> $aosiplugcf
    restart_aosi="yes"
  fi
elif [ "$ENABLE" = "false" ]; then
  if grep -q "^o365connect$" $aosiplugcf; then
    grep -v "^o365connect$" $aosiplugcf > ${aosiplugcf}.aai-tmp || true
    chown --reference ${aosiplugcf}.aai-tmp $aosiplugcf
    chmod --reference ${aosiplugcf}.aai-tmp $aosiplugcf
    mv ${aosiplugcf}.aai-tmp $aosiplugcf
    restart_aosi="yes"
  fi
fi

if [ -f $plugdir/$plugcf -a ! -L $plugdir/$plugcf ]; then
  . /usr/share/carnet-tools/functions.sh
  echo "AAI: Backing up old $plugdir/$plugcf to /var/backups/aosi/..."
  cp_backup_conffile -p -d aosi $plugdir/$plugcf || true
  rm -f $plugdir/$plugcf
  restart_aosi="yes"
fi

if [ ! -L $plugdir/$plugcf ]; then
  ln -s $aosiplugcfdir/$plugcf $plugdir/$plugcf
  restart_aosi="yes"
fi

if [ ! -L $plugdir/o365connectAttributes.pm ]; then
  ln -s $aosiplugcfdir/o365connectAttributes.pm $plugdir/o365connectAttributes.pm
  restart_aosi="yes"
fi

chown -R aosi:aosi /var/log/aosi/o365connect
chmod 750 /var/log/aosi/o365connect
dpkg-statoverride --remove /var/log/aosi/o365connect > /dev/null 2> /dev/null || true
dpkg-statoverride --list /var/log/aosi/o365connect > /dev/null 2> /dev/null || true
dpkg-statoverride --update --add aosi aosi 750 /var/log/aosi/o365connect

if [ "$restart_aosi" = "yes" ]; then
  invoke-rc.d aosi-aai restart || true
fi

#DEBHELPER#
