#!/bin/sh #----------------------------------------------------------------------------- # /var/install/deinstall/*cloud - Nextcloud/ownCloud deinstallation # # Copyright (c) 2012-2021 The Eisfair Team, team(at)eisfair(dot)org # # Creation: 2012-04-22 schlotze # Last Update: $Id$ # # 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 2 of the License, or # (at your option) any later version. #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # show wait #----------------------------------------------------------------------------- show_wait () { local _sw_colpos myecho --pack ${module_name} --force-output -n " wait [ " _sw_colpos=1 while [ -n "`ps --no-headers $!`" ] do myecho --pack ${module_name} --force-output --info -n "." sleep 1 _sw_colpos=`expr ${_sw_colpos} + 1` if [ "${_sw_colpos}" -ge 52 ] then myecho --pack ${module_name} --force-output " ]" myecho --pack ${module_name} --force-output -n " wait [ " _sw_colpos=1 fi done if [ ${_sw_colpos} -eq 1 ] then myecho --pack ${module_name} --force-output --info -n "." fi myecho --pack ${module_name} --force-output " ] " } #----------------------------------------------------------------------------- # read eislib etc. . /var/install/include/eislib . /var/install/include/jedlib pgmname=`basename $0` module_name="`echo "${pgmname}" | cut -d- -f1`" if [ "${module_name}" = 'nextcloud' ] then module_name_abbr='nc' else module_name_abbr='oc' fi # debug mode: true/false #debug=true if ${debug:-false} then exec 2> /tmp/${module_name}-deinstall-trace$$.log set -x ask_debug=true export ask_debug fi php_version=`/var/install/config.d/${module_name}.sh --php-version 'web'` php_major_version=`echo "${php_version}" | cut -d. -f1` ### set file and path names ### owncloud_path=/var/${module_name} apache2file=/etc/config.d/apache2 configfile=/etc/config.d/${module_name} package_filelist=/etc/filelist.d/${module_name}-files.txt tmpfile=/tmp/${module_name}-deinstall-$$ update=0 case "${1}" in --update|update) update=1 ;; esac ### ------------------------------------------------------------------------- ### stop services ### ------------------------------------------------------------------------- # always activate maintenace mode if [ -f /var/install/config.d/${module_name}.sh ] then grep -q 'maintenance-on' /var/install/config.d/${module_name}.sh if [ $? -eq 0 ] then /var/install/config.d/${module_name}.sh --maintenance-on fi /var/install/config.d/${module_name}.sh removecron > /dev/null 2> /dev/null fi ### ------------------------------------------------------------------------- ### remove ownCloud from menue system ### ------------------------------------------------------------------------- # extract document root if [ -f ${configfile} ] then grep -E "^START_OWNCLOUD|^OWNCLOUD_DB_TYPE|^OWNCLOUD_DATA_DIR|^OWNCLOUD_DOCUMENT_ROOT|^OWNCLOUD_APPS_" ${configfile} > ${tmpfile} . ${tmpfile} rm -f ${tmpfile} if [ -z "${OWNCLOUD_DOCUMENT_ROOT}" ] then if [ -f ${apache2file} ] then # read value from configuration file . ${apache2file} OWNCLOUD_DOCUMENT_ROOT="`echo "${APACHE2_DOCUMENT_ROOT}" | sed 's#/ *$##'`/${module_name}" else # use default value OWNCLOUD_DOCUMENT_ROOT='/var/www/htdocs/${module_name}' fi fi if [ -n "${OWNCLOUD_DATA_DIR}" ] then owncloud_path="`echo "${OWNCLOUD_DATA_DIR}" | sed 's#[/ ]*$##'`" fi else myecho --pack ${module_name} --force-output --error "missing ${configfile} file, error removing package!" exit 1 fi ### ------------------------------------------------------------------------- ### remove ownCloud document root ### ------------------------------------------------------------------------- # check if files still exist in legacy directory, if yes move it to current data path if [ "${owncloud_path}" != '/var/owncloud' ] then for FNAME in ${module_name_abbr}-filelist.txt ${module_name_abbr}-filelist-org.txt ${module_name}-configlog \ ${module_name}-configlog.newlines ${module_name}-cron.sh ${module_name}-sql-db-results.txt do if [ -f /var/owncloud/${FNAME} ] then if [ ! -f ${owncloud_path}/${FNAME} ] then mv /var/owncloud/${FNAME} ${owncloud_path}/ else rm -f /var/owncloud/${FNAME} fi fi done # remove directory if it doesn't contain any files rmdir --ignore-fail-on-non-empty /var/owncloud fi docroot_filelist=${owncloud_path}/${module_name_abbr}-filelist.txt if [ ! -f ${docroot_filelist} -a -f ${owncloud_path}/${module_name_abbr}-filelist-org.txt ] then docroot_filelist=${owncloud_path}/${module_name_abbr}-filelist-org.txt fi if [ -f ${docroot_filelist} ] then if [ -d ${OWNCLOUD_DOCUMENT_ROOT} ] then myecho --pack ${module_name} --force-output "removing program files ..." ( while read line do # check for comment echo "${line}" | grep -q "^#" if [ $? -ne 0 ] then # no comment - go on ... FDNAME="${OWNCLOUD_DOCUMENT_ROOT}/${line}" if [ -d "${FDNAME}" ] then # remove directory rmdir --ignore-fail-on-non-empty "${FDNAME}" elif [ -f "${FDNAME}" ] then # remove file rm -f "${FDNAME}" fi fi done < "${docroot_filelist}" ) & # entertain the user show_wait # evaluate exit code wait $! fi # removing files and directories rm -f ${OWNCLOUD_DOCUMENT_ROOT}/apps/DO_NOT_INSTALL_YOUR_APPS_HERE.txt rm -rf ${OWNCLOUD_DOCUMENT_ROOT}/apps # remove symbolic links rm -f ${OWNCLOUD_DOCUMENT_ROOT}/config rm -f ${OWNCLOUD_DOCUMENT_ROOT}/data # remove file lists rm -f "${docroot_filelist}" rm -f "${owncloud_path}/${module_name_abbr}-filelist-org.txt" # remove document root directory if [ -d "${OWNCLOUD_DOCUMENT_ROOT}" ] then rmdir --ignore-fail-on-non-empty "${OWNCLOUD_DOCUMENT_ROOT}" fi else myecho --pack ${module_name} --force-output --error "missing ${docroot_filelist} file, error removing package files!" fi ### ------------------------------------------------------------------------- ### remove program files ### ------------------------------------------------------------------------- if [ -f "${package_filelist}" ] then while read line do #check if comment echo "${line}" | grep -q "^#" if [ $? -ne 0 ] then # no comment - go on ... delflag=1 ftype=`echo "${line}" | cut -d' ' -f1` fname=`echo "${line}" | cut -d' ' -f6` case ${ftype} in b|u) # remove program files if [ "${fname}" = "tmp/install.sh" \ -o "${fname}" = "tmp/preinstall.sh" \ -o "${fname}" = "var/install/config.d/${module_name}.sh" \ -o "${fname}" = "var/install/deinstall/${module_name}" \ -o "${fname}" = "var/install/packages/${module_name}" ] then delflag=0 else if [ ${update} -eq 1 ] then # update! - check for /var/owncloud / /data/packages/owncloud directory oc_path="`echo "${owncloud_path}" | sed -e 's#^/##' -e 's#^[/ ]*##'`" echo "${fname}" | grep -q "^${oc_path}" if [ $? -eq 0 ] then delflag=0 fi fi fi if [ ${delflag} -eq 1 ] then rm -f /${fname} fi ;; f) # remove directories if [ -d "/${fname}" ] then rmdir --ignore-fail-on-non-empty "/${fname}" fi ;; esac fi done < ${package_filelist} fi # remove filelist rm -f "${package_filelist}" ### ------------------------------------------------------------------------- ### remove config files ### ------------------------------------------------------------------------- # eisfair-1: start script in /etc/rc2.d and kill script in /etc/rc2.d rm -f /etc/rc[0126S].d/[KS]??${module_name} if [ ${update} -ne 1 ] then # no update - deinstall if [ -z "${OWNCLOUD_APPS_N}" -o "${OWNCLOUD_APPS_N}" = "0" ] then # set defaults OWNCLOUD_APPS_N=1 OWNCLOUD_APPS_1_DIR="${OWNCLOUD_DOCUMENT_ROOT}/apps2" OWNCLOUD_APPS_1_URL='/apps2' OWNCLOUD_APPS_1_WRITEABLE='yes' fi # remove custom apps folders idx=1 while [ ${idx} -le ${OWNCLOUD_APPS_N} ] do eval apps_dir='$OWNCLOUD_APPS_'${idx}'_DIR' if [ -d "${apps_dir}" ] then rm -rf "${apps_dir}" fi idx=`expr ${idx} + 1` done if [ -d "${OWNCLOUD_DOCUMENT_ROOT}" ] then rmdir --ignore-fail-on-non-empty "${OWNCLOUD_DOCUMENT_ROOT}" fi # dump database to file /var/install/config.d/${module_name}.sh dump-sql-db # delete sql tables and database /var/install/config.d/${module_name}.sh delete-sql-db if [ -z "${OWNCLOUD_DB_TYPE}" ] then OWNCLOUD_DB_TYPE='sqlite' fi case ${OWNCLOUD_DB_TYPE} in mysql ) myecho --pack ${module_name} --force-output --warn "Set PHP${php_major_version}_EXT_MYSQL='no' if you're not planning to reinstall the package!" ;; pgsql ) myecho --pack ${module_name} --force-output --warn "Set PHP${php_major_version}_EXT_PGSQL='no' if you're not planning to reinstall the package!" ;; *|sqlite ) myecho --pack ${module_name} --force-output --warn "Set PHP${php_major_version}_EXT_SQLITE3='no' if you're not planning to reinstall the package!" ;; esac rm -f /etc/backup.d/${module_name}* rm -f /etc/config.d/${module_name}* rm -f /etc/logrotate.d/${module_name} rm -f ${owncloud_path}/config/config.php rm -f ${owncloud_path}/config/config.sample.php rm -f ${owncloud_path}/config/mount.php rm -f ${owncloud_path}/config/mount.sha1 # legacy file which has been used until package version v1.2.2 rm -f ${owncloud_path}/config/ca-bundle.crt rmdir --ignore-fail-on-non-empty ${owncloud_path}/config rm -fr ${owncloud_path}/skeleton rm -f ${owncloud_path}/log/${module_name}.log rm -fr ${owncloud_path}/log rm -f ${owncloud_path}/data/.htaccess rm -f ${owncloud_path}/data/index.html rm -f ${owncloud_path}/data/${module_name}.db rm -fr ${owncloud_path}/data rm -f ${owncloud_path}/${module_name}-cron.sh rm -fr ${owncloud_path}/.scripts rm -fr ${owncloud_path}/.install rm -fr ${owncloud_path} rm -fr /var/lib/${module_name} rm -f /var/log/${module_name}.log* # remove obsolete cron lock files ls /tmp/${module_name}-server-*-cron.lock > /dev/null 2> /dev/null if [ $? -eq 0 ] then rm -r /tmp/${module_name}-server-*-cron.lock fi fi rm -f /var/install/config.d/${module_name}.sh rm -f /var/install/deinstall/${module_name} rm -f /var/install/packages/${module_name} if [ ${update} -eq 0 ] then # no update, remove menu myecho --pack ${module_name} "removing menue entry ..." /var/install/bin/del-menu "setup.services.menu" "setup.services.${module_name}.menu" fi myecho --pack ${module_name} "done." ### ------------------------------------------------------------------------- ### end ### -------------------------------------------------------------------------