#!/bin/sh
#
#  Init_3rdparty start-stop-status script 1.9-003
#  Author:      QTip from the german Synology support forum
#  Copyright:   2008-2017 Itari/QTip from the german Synology support forum
#  License:     GNU GPLv3 (see LICENSE)
#  Last change: 24/02/2017 QTip
#

SYNOPKG_PKGNAME="Init_3rdparty"
LOG="/var/packages/${SYNOPKG_PKGNAME}/log"
LOGDATA=`date +"%c"`
PHPCONF=
CPATH=`dirname $0`
PHPSTAT=`${CPATH}/php_status.sh status`
for ST in ${PHPSTAT} ; do
      PHPVER=`echo ${ST} | /usr/bin/cut -d "," -f1`
      PHPACT=`echo ${ST} | /usr/bin/cut -d "," -f2`
      [ ${PHPACT} -eq 1 ] && PHPACTIVE=${PHPVER}
done
if [ -z ${PHPACTIVE} ] ; then
     if [ "${SYNOPKG_DSM_LANGUAGE}" = "ger" ] ; then
          /bin/cat ${CPATH}/php_de.txt > ${SYNOPKG_TEMP_LOGFILE}
     else
          /bin/cat ${CPATH}/php_en.txt > ${SYNOPKG_TEMP_LOGFILE}
     fi
     exit 1
fi
#echo ${PHPACTIVE}
#exit
PHPACTIVESHORT="`echo ${PHPACTIVE} | /bin/sed 's/\.//' | /usr/bin/awk '{print tolower($0)}'`"
TRDPEnabled="/var/packages/${SYNOPKG_PKGNAME}/enabled"
DSMMAJOR=`/bin/get_key_value /etc.defaults/VERSION majorversion`
DSMBUILD=`/bin/get_key_value /etc.defaults/VERSION buildnumber`

if [ ${DSMMAJOR} -ge 6 ] ; then
     HTTPNAME="sys nginx"
     HTTPDCONF="/usr/local/etc/nginx/conf.d"
     PHPCONF="/var/packages/${SYNOPKG_PKGNAME}/etc/${PHPACTIVESHORT}/conf/fpm/init_3rdparty.conf"
     TRDPCONF="/var/packages/${SYNOPKG_PKGNAME}/etc/${PHPACTIVESHORT}/php_3rdparty"
     INITSCRIPT="pkg-php-fpm-3rdparty"
     if [ ! -f /var/packages/${SYNOPKG_PKGNAME}/etc/active_php ] ; then
          echo ${PHPACTIVE} > /var/packages/${SYNOPKG_PKGNAME}/etc/active_php
     fi
elif [ ${DSMMAJOR} -ge 5 ] ; then
     HTTPNAME="sys apache"
     HTTPDCONF="/etc/httpd/conf/httpd.conf-sys"
     PHPCONF="/var/packages/${SYNOPKG_PKGNAME}/etc/php56/conf/fpm/init_3rdparty.conf"
     TRDPCONF="/var/packages/${SYNOPKG_PKGNAME}/etc/php56/3rdparty-fpm.conf"
     INITSCRIPT="php-fpm-3rdparty"
else
     HTTPNAME="sys apache"
     HTTPDCONF="/usr/syno/apache/conf/httpd.conf-sys"
     PHPCONF="/var/packages/${SYNOPKG_PKGNAME}/etc/php56/conf/mod/php.conf"
     TRDPCONF="/var/packages/${SYNOPKG_PKGNAME}/etc/php56/3rdparty-mod.conf"
fi
if [ ${DSMMAJOR} -ge 5 ] ; then
     if [ ${DSMBUILD} -ge 5565 ] ; then
          # DSM >= 5.2
          TIMEZONESTR="$(/usr/syno/sbin/synodate --getNameInTZDB || true)"
     else
          TIMEZONE=`/bin/get_key_value /etc/synoinfo.conf timezone`
          TIMEZONESTR=`/bin/get_key_value /usr/share/zoneinfo/Timezone/tzname ${TIMEZONE}`
     fi
     TIMEZONECFG=`/bin/get_key_value ${PHPCONF} php_admin_value[date.timezone]`
else
     TIMEZONE=`/bin/get_key_value /etc/synoinfo.conf timezone`
     TIMEZONESTR=`/bin/get_key_value /usr/share/zoneinfo/Timezone/tzname ${TIMEZONE}`
     TIMEZONECFG=`/bin/grep "php_admin_value date.timezone" ${PHPCONF} | /usr/bin/cut -d " " -f3`
fi

case $1 in
    start)
          if [ ! -f "${TRDPEnabled}" ]; then
               exit 0
          fi
          if [ ${DSMMAJOR} -ge 5 ] ; then
               if [ "${TIMEZONECFG}" = "" ] ; then
                    /bin/sed -i "s:^php_admin_value\[date\.timezone\].*$:php_admin_value\[date\.timezone\] = ${TIMEZONESTR}:g" ${PHPCONF}
               fi
               if [ ${DSMMAJOR} -ge 6 ] ; then
                    /bin/cp -f /var/packages/${SYNOPKG_PKGNAME}/etc/${PHPACTIVESHORT}/init/${INITSCRIPT}.conf /etc/init/${INITSCRIPT}.conf && LOGDATA="${LOGDATA}\n\t${PHPACTIVESHORT}-fpm instance for Init 3rdparty prepared"
               elif [ ${DSMMAJOR} -ge 5 ] ; then
                    if [ ! -f /etc/init/${INITSCRIPT}.conf ] ; then
                         /bin/cp -f /var/packages/${SYNOPKG_PKGNAME}/etc/php56/init/${INITSCRIPT}.conf /etc/init/${INITSCRIPT}.conf && LOGDATA="${LOGDATA}\n\tphp56-fpm instance for Init 3rdparty prepared"
                    fi
               fi
               if [ ! -S /run/php-fpm/php-fpm-3rdparty.sock ] ; then
                    /sbin/initctl start ${INITSCRIPT} &> /dev/null && LOGDATA="${LOGDATA}\n\t${PHPACTIVESHORT}-fpm instance for Init 3rdparty started"
               fi
          else
               if [ "${TIMEZONECFG}" = "" ] ; then
                    /bin/sed -i "s:^php_admin_value date\.timezone.*$:php_admin_value date\.timezone ${TIMEZONESTR}:g" ${PHPCONF}
               fi
          fi
          if [ ${DSMMAJOR} -ge 6 ] ; then
               /bin/cp -f /var/packages/${SYNOPKG_PKGNAME}/etc/${PHPACTIVESHORT}/dsm.php_3rdparty.conf ${HTTPDCONF}/dsm.php_3rdparty.conf
          else
               [ -f ${HTTPDCONF}.bak ] || /bin/cp ${HTTPDCONF} ${HTTPDCONF}.bak
               if [ -z "`/bin/grep "${TRDPCONF}" "${HTTPDCONF}" 2> /dev/null`" ] ; then
                    echo -e "\n#Init_3rdparty\nInclude ${TRDPCONF}\n#Init_3rdparty" >> ${HTTPDCONF}
               fi
          fi
          LOGDATA="${LOGDATA}\n\t${HTTPNAME} configuration for Init 3rdparty prepared & ${HTTPNAME} was restarted"
          [ -z "${LOGDATA}" ] || echo -e ${LOGDATA} >> ${LOG}
          exit 0
    ;;
    stop)
          if [ -f "${TRDPEnabled}" ]; then
               exit 0
          fi
          if [ ${DSMMAJOR} -ge 6 ] ; then
               [ -f ${HTTPDCONF}/dsm.php_3rdparty.conf ] && /bin/rm -f ${HTTPDCONF}/dsm.php_3rdparty.conf
          else
               /bin/rm -f ${HTTPDCONF}.bak
               /bin/sed '/#step1/,/#step1/d' ${HTTPDCONF} >/tmp/httpd.conf
               /bin/sed '/#Init_3rdparty/,/#Init_3rdparty/d' /tmp/httpd.conf >/tmp/httpd2.conf
               /bin/sed '/[\n]*\/var\/packages\/Init_3rdparty\/etc\/php_3rdparty/d' /tmp/httpd2.conf >/tmp/httpd3.conf
               if [ -f /tmp/httpd3.conf ] ; then
                    /bin/mv /tmp/httpd3.conf ${HTTPDCONF}
                    /bin/rm -f /tmp/httpd2.conf
                    /bin/rm -f /tmp/httpd.conf
               fi
          fi
          LOGDATA="${LOGDATA}\n\t${HTTPNAME} configuration restored & ${HTTPNAME} was restarted"
          if [ ${DSMMAJOR} -ge 5 ] ; then
               if [ -S /run/php-fpm/php-fpm-3rdparty.sock ] ; then
                    /sbin/initctl stop ${INITSCRIPT} &> /dev/null && LOGDATA="${LOGDATA}\n\t${PHPACTIVESHORT}-fpm instance for Init 3rdparty stopped"
               fi
          fi
          [ -z "${LOGDATA}" ] || echo -e ${LOGDATA} >> ${LOG}
          exit 0
    ;;
    status)
          if [ -n "`/bin/grep "${TRDPCONF}" "${HTTPDCONF}" 2> /dev/null`" -o -f ${HTTPDCONF}/dsm.php_3rdparty.conf ] ; then
               if [ ${DSMMAJOR} -ge 5 ] ; then
                    if [ -S /run/php-fpm/php-fpm-3rdparty.sock ] ; then
                         exit 0
                    else
                         exit 1
                    fi
               else
                    exit 0
               fi
          else
               exit 1
          fi
    ;;
    log)
          echo ${LOG}
          exit 0
    ;;
esac
exit
