#!/bin/bash - 
#
# Copyright (C) 2017  Tetras Libre <admin@tetras-libre.fr>
# Author: Curt, Sebastien <sebastien.curt@tetras-libre.fr>
#
# This program 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.
#
# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.

set -o nounset                              # Treat unset variables as an error

. `pwd`/main.env
if [ -f installDolibarr.env ]
then
    . `pwd`/installDolibarr.env
fi

DOLIBARR_INSTALL_DIR=${DOLIBARR_INSTALL_DIR:-/var/www/}
SCRIPT_DIRECTORY=`pwd`
DOLIBARR_LOGFILE="${SCRIPT_DIRECTORY%%/}/installDolibarr.log"
RUNNING_DATE_TIME="$(date +%Y%m%d%H%M%S)"
DOLIBARR_CONFIG_ServerName=${DOLIBARR_CONFIG_ServerName:-dolibarr.${DOMAIN}}
DOLIBARR_CONFIG_ServerAdmin=${DOLIBARR_CONFIG_ServerAdmin:-${SERVER_ADMIN}}

if [ ${VERBOSE:-0} -ne 0 ]
then
    echo "DEBIAN_FRONTEND=noninteractive apt-get update" \
        "&& DEBIAN_FRONTEND=noninteractive apt-get -y install mount zip unzip"
fi

DEBIAN_FRONTEND='noninteractive' apt-get update \
    && DEBIAN_FRONTEND='noninteractive' apt-get -qq install mount zip unzip apg


if [ ! -d ${DOLIBARR_INSTALL_DIR} ]
then
    mkdir -p${VERBOSE:+v} ${DOLIBARR_INSTALL_DIR}
fi


echo "cd ${DOLIBARR_INSTALL_DIR}"
cd ${DOLIBARR_INSTALL_DIR}

url=`$DIR/getLastDolibarrDeb.sh $num`

DOLIBARR_PKG_NAME="Dolibarr-`echo $url | cut -d ' ' -f 2`.deb"
url=`echo $url | cut -d ' ' -f 1`
wget -O $DOLIBARR_PKG_NAME "$url"
echo "dpkg -i ${DOLIBARR_PKG_NAME}"
dpkg -i ${DOLIBARR_PKG_NAME}
echo "apt-get install -yf"
DEBIAN_FRONTEND='noninteractive' apt-get install -yf

DOLIBARR_DOCUMENTS_DIR=${DOLIBARR_DOCUMENTS_DIR:-/usr/share/dolibarr/documents/}

if [ ! -d ${DOLIBARR_DOCUMENTS_DIR%%/} ]
then
    echo "mkdir -p${VERBOSE:+v} ${DOLIBARR_DOCUMENTS_DIR%/}"

    mkdir -p${VERBOSE:+v} ${DOLIBARR_DOCUMENTS_DIR%/}
else
    echo "${DOLIBARR_DOCUMENTS_DIR%/} already exists : save it in" \
    "${DOLIBARR_DOCUMENTS_DIR%/}.tar"

    oldDir=`pwd`
    echo "cd `dirname ${DOLIBARR_DOCUMENTS_DIR%/}`"
    cd `dirname ${DOLIBARR_DOCUMENTS_DIR%/}`
    tar c${VERBOSE:+v}f --recursive-unlink ${DOLIBARR_DOCUMENTS_DIR%/}.tar \
        documents 

    echo "cd ${oldDir}"
    cd ${oldDir}
fi

echo "Installing Dolibarr cdav"
cd ${DOLIBARR_DOCUMENTS_DIR}/../htdocs
git clone  https://github.com/Befox/cdav 
git checkout v1.06

if [ ! -d /home/dolibarr ]
then
    echo "mkdir -p${VERBOSE:+v} /home/dolibarr"
    mkdir -p${VERBOSE:+v} /home/dolibarr
fi

echo "mv ${VERBOSE:+-v} ${DOLIBARR_DOCUMENTS_DIR%/}/* /home/dolibarr/"
mv ${VERBOSE:+-v} ${DOLIBARR_DOCUMENTS_DIR%/}/* /home/dolibarr/

if [ -f /etc./fstab ]
then
    echo "/home/dolibarr ${DOLIBARR_DOCUMENTS_DIR} none bind 0 0"
else
    echo "\"/home/dolibarr ${DOLIBARR_DOCUMENTS_DIR} none bind 0 0\"" \
        ">> /etc/fstab"
    echo "/home/dolibarr ${DOLIBARR_DOCUMENTS_DIR} none bind 0 0" \
        >> /etc/fstab
fi
mount ${VERBOSE:+v} /usr/share/dolibarr/documents

echo "Set dolibarr's configuration file for ${WEB_SERVER}"

# Save last dolibarr-ssh.conf if exists
if [ -f /etc/${WEB_SERVER}/sites-available/dolibarr.conf ]
then
    echo "Dolibarr's ${WEB_SERVER} configuration already exists"
    echo "Backup file is created at" \
        "/etc/${WEB_SERVER}/sites-available/${RUNNING_DATE_TIME}_dolibarr.conf"

    echo "cp ${VERBOSE:+-v} /etc/${WEB_SERVER}/sites-available/dolibarr.conf" \
        "/etc/${WEB_SERVER}/sites-available/${RUNNING_DATE_TIME}_dolibarr.conf"
    cp ${VERBOSE:+-v} /etc/${WEB_SERVER}/sites-available/dolibarr.conf \
    /etc/${WEB_SERVER}/sites-available/${RUNNING_DATE_TIME}_dolibarr.conf
fi
sed "s/<+ServerAdmin+>/${DOLIBARR_CONFIG_ServerAdmin}/;
    s/<+ServerName+>/${DOLIBARR_CONFIG_ServerName}/" \
        ${SCRIPT_DIRECTORY%%/}/etc/${WEB_SERVER}/sites-available/dolibarr.conf > \
    /etc/${WEB_SERVER}/sites-available/dolibarr.conf

if [ "${WEB_SERVER}" == "apache2" ]
then
    a2ensite dolibarr.conf
    apachectl configtest && apachectl restart || echo "Failed restartin apache"
else
    ln -s /etc/nginx/sites-available/dolibarr.conf /etc/nginx/sites-enabled
    systemctl restart nginx
fi

# Create dolibar database in mysql
echo "create dolibarr database"
echo "mysql -e 'CREATE DATABASE dolibarr;'"
mysql -e 'CREATE DATABASE dolibarr;'
echo "Dolibarr database created"

echo "Create dolibarr Password for dolibarr database"
dolibarrPassword=${NEXTCLOUD_DATABASE_PASS:-"$(apg -q -a 0 -n 1 -m 21 -M NCL)"}

echo "Create admin Password for dolibarr"
adminPassword=${NEXTCLOUD_ADMIN_PASS=-"$(apg -q -a 0 -n 1 -m 21 -M NCL)"}
{
    echo "[dolibarr]"
    echo "user=admin"
    echo "password=${adminPassword}"
} >> ${HOME}/.passwords
chmod 600 ${HOME}/.passwords
echo "amdin user password store in ${HOME}/.passwords only" \
    "readable by the root user"

echo "Set dolibarr user for dolibarr@localhost in database"
mysql -e "CREATE USER 'dolibarr'@'localhost' IDENTIFIED BY
'${dolibarrPassword}';"
if [ $? -eq 0 ]
then
    echo "dolibarr user set for dolibarr@localhost in database"
else
    echo "error processing : $?" >&2
fi

echo "Grant all privileges to nexcloud user to dolibarr database"
mysql -e "GRANT ALL PRIVILEGES on dolibarr.* to
'dolibarr'@'localhost' IDENTIFIED BY '${dolibarrPassword}';
FLUSH PRIVILEGES;";
if [ $? -eq 0 ]
then
    echo "Privileges granted"
else
    echo "Error processing : $?" >&2
fi

{
    echo "[dolibarr-mysql]"
    echo "user=dolibarr"
    echo "password=${dolibarrPassword}"
} >> ${HOME}/.passwords

echo "cd ${SCRIPT_DIRECTORY}"
cd ${SCRIPT_DIRECTORY}

[ -f "DOLIBARR_PACKAGES/apply_patch.sh" ] && /bin/bash DOLIBARR_PACKAGES/apply_patch.sh