#!/bin/sh

while [ $# -gt 0 ] ; do
  case $1 in
    --projectroot) PROJECTROOT=$2; shift 2;;
               * )  shift 1;;
  esac
done

cd `dirname $0`
 
 . /etc/os-release

if [ "$ID" = "ubuntu" ]; then
  cat appamor.server | sed -e "s@####PROJECTROOT####@$PROJECTROOT@g" > /etc/apparmor.d/`echo $PROJECTROOT | sed -e 's@/@@' -e 's@/@.@g'`.erp.programs.server
  cat appamor.rexec  | sed -e "s@####PROJECTROOT####@$PROJECTROOT@g" > /etc/apparmor.d/`echo $PROJECTROOT | sed -e 's@/@@' -e 's@/@.@g'`.exec.system.programs.rexec
fi
 
if [ ! -f /etc/mne/erp/standard.conf ]; then
  mv /etc/mne/erp/standard.install /etc/mne/erp/standard.conf
else
  rm /etc/mne/erp/standard.install
fi

if [ ! -f /etc/ssl/private/mne_erp.key ];then
	openssl req -x509 -newkey rsa:4096 -sha512 -subj '/C=CH/ST='$(hostname)' - Open Source ERP/CN=Open Source ERP' \
	            -keyout /etc/ssl/private/mne_erp.key \
	            -out    /etc/ssl/certs/mne_erp.pem \
	            -days 365 -nodes \
	            -addext "subjectAltName = DNS:erp,DNS:erpdav,DNS:'$(hostname)'"
	chmod 600 /etc/ssl/private/mne_erp.key
	chmod 644 /etc/ssl/certs/mne_erp.pem
fi

if [ -f /etc/apache2/conf-available/mne_erp.conf ]; then
    modified=`cat /etc/apache2/conf-available/mne_erp.conf | awk '/mne_custom/ { print "1"; exit }'`
    if [ ! "$modified" = "1" ]; then
        mv /etc/apache2/conf-available/mne_erp.conf.dist /etc/apache2/conf-available/mne_erp.conf
    fi
else
     mv /etc/apache2/conf-available/mne_erp.conf.dist /etc/apache2/conf-available/mne_erp.conf
fi

if [ -f /etc/apache2/conf-available/mne_erpdav.conf ]; then
    modified=`cat /etc/apache2/conf-available/mne_erpdav.conf | awk '/mne_custom/ { print "1"; exit }'`
    if [ ! "$modified" = "1" ]; then
        mv /etc/apache2/conf-available/mne_erpdav.conf.dist /etc/apache2/conf-available/mne_erpdav.conf
    fi
else
    mv /etc/apache2/conf-available/mne_erpdav.conf.dist /etc/apache2/conf-available/mne_erpdav.conf
fi

if [ -f /etc/apache2/sites-available/mne_erp.conf ]; then
    modified=`cat /etc/apache2/sites-available/mne_erp.conf | awk '/mne_custom/ { print "1"; exit }'`
    if [ ! "$modified" = "1" ]; then
        sed -e "s/ServerName.*$/ServerName $(hostname)/" < /etc/apache2/sites-available/mne_erp.conf.dist > /etc/apache2/sites-available/mne_erp.conf
        rm /etc/apache2/sites-available/mne_erp.conf.dist
    fi
else
   sed -e "s/ServerName.*$/ServerName $(hostname)/" < /etc/apache2/sites-available/mne_erp.conf.dist > /etc/apache2/sites-available/mne_erp.conf
   rm /etc/apache2/sites-available/mne_erp.conf.dist
fi

mkdir /var/log/mne >/dev/null 2>&1
if [ "$ID" = "ubuntu" ]; then
  chown syslog:syslog /var/log/mne
fi
  
systemctl enable mne_erp.service

if [ -f $PROJECTROOT/erp/programs/server.arg ]; then
    echo 'server.arg exists - update manual'
else
   cp $PROJECTROOT/erp/programs/server.dist.arg     $PROJECTROOT/erp/programs/server.arg
   echo                                          >> $PROJECTROOT/erp/programs/server.arg
   echo "projectroot:  $PROJECTROOT"             >> $PROJECTROOT/erp/programs/server.arg
fi

chgrp -R postgres $PROJECTROOT/erp/module;
chmod -R g+rw  $PROJECTROOT/erp/module;
chgrp -R postgres $PROJECTROOT/erp/db $PROJECTROOT/dbsync;
chmod -R g+rw  $PROJECTROOT/erp/db  $PROJECTROOT/dbsync;

chmod -R g+rwx $PROJECTROOT/erp/db/dbupdate;

conffile=$PROJECTROOT/erp_push/backend/carddav/config.php
confsave=$PROJECTROOT/erp_push/backend/carddav/config.preinstall

if [ -f $confsave ]; then
   cardname=`sed -n '/CARDDAV_CONTACTS_FOLDER_NAME/p' < $confsave | cut -d, -f2 | sed -e "s/^ //g" -e "s/'//g" -e "s/).*//" -e "s/@/\\\\\\\\@/g"`
   sed -e "/CARDDAV_CONTACTS_FOLDER_NAME/s@^.*\$@define('CARDDAV_CONTACTS_FOLDER_NAME', '$cardname');@"  < $conffile > $conffile"".new
   mv $conffile"".new $conffile
   rm $confsave 
fi   

touch /var/log/mne/erp-z-push.log
touch /var/log/mne/erp-z-push-error.log

chown www-data /var/log/mne/erp-z-push.log
chown www-data /var/log/mne/erp-z-push-error.log

mkdir -p /var/mne/erp/lib/z-push
chown www-data:www-data /var/mne/erp/lib/z-push

chown root:root /etc/mne
chown -R root:root /etc/mne/erp

a2enmod ssl
a2enmod rewrite
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_wstunnel
a2enmod headers
a2enmod sed

if [ ! -f /etc/apache2/sites-available/000-default-ssl.conf ]; then
  mv /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/000-default-ssl.conf
fi
a2ensite 000-default-ssl.conf

a2enconf mne_erp.conf
a2enconf mne_erpdav.conf

systemctl restart apache2.service
