-
Laurent Destailleur authoredLaurent Destailleur authored
postrm 7.04 KiB
#!/bin/sh
# postrm script for dolibarr
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postrm> `remove'
# * <postrm> `purge'
# * <old-postrm> `upgrade' <new-version>
# * <new-postrm> `failed-upgrade' <old-version>
# * <new-postrm> `abort-install'
# * <new-postrm> `abort-install' <old-version>
# * <new-postrm> `abort-upgrade' <old-version>
# * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
# for details, see /usr/share/doc/packaging-manual/
. /usr/share/debconf/confmodule
db_version 2.0
echo Run the dolibarr postrm script
#echo "postrm db_get dolibarr/webserver"
# We disable set -e to avoid premature end of script if error
set +e
#db_get "dolibarr/webserver" || true
set -e
export webserver="$RET"
# Allows us to loop and substitute in one pass
case $webserver in
Apache) webservers="apache2" ;;
Apache-SSL) webservers="apache2-ssl" ;;
Both) webservers="apache2 apache2-ssl" ;;
*) webservers="apache2 apache2-ssl" ;;
esac
export includefile=/etc/dolibarr/apache.conf
case "$1" in
purge)
echo "postrm purge webservers=$webservers includefile=$includefile"
# Ask if we must delete database
echo "postrm db_input dolibarr/postrm"
db_input critical "dolibarr/postrm" || true
db_go || true
echo "postrm db_get dolibarr/postrm"
# We disable set -e to avoid premature end of script if error
set +e
db_get "dolibarr/postrm"
set -e
if [ "$RET" = "true" ] ; then
echo postrm Mysql database deletion
# Get database configuration
dbserver="localhost"
dbname="dolibarr"
#db_get "dolibarr/db/name"
#dbname="$RET"
superuserlogin=''
superuserpassword=''
if [ -f /etc/mysql/debian.cnf ] ; then
# Load superuser login and pass
superuserlogin=$(/bin/grep --max-count=1 "user" /etc/mysql/debian.cnf | /bin/sed -e 's/^user[ =]*//g')
superuserpassword=$(/bin/grep --max-count=1 "password" /etc/mysql/debian.cnf | /bin/sed -e 's/^password[ =]*//g')
fi
echo postrm Mysql superuser found to use is $superuserlogin
dbadmin="$superuserlogin"
dbadmpass="$superuserpassword"
#db_get "dolibarr/db/admin/name"
#dbadmin="$RET"
#db_get "dolibarr/db/admin/password"
#dbadmpass="$RET"
dbtype="mysql"
# To delete a mysql user (disabled)
# Needs: $dbuser - the user name to create (or replace).
# $dballow - what hosts to allow (defaults to %).
# $dbname - the database that user should have access to.
# $dbpass - the password to use.
# $dbserver - the server to connect to.
# $dbadmin - the administrator name.
# $dbadmpass - the administrator password.
# which
# mysql
# /usr/share/wwwconfig-coomon/mysql.get
#. /usr/share/wwwconfig-common/${dbtype}-dropuser.sh
# To delete database
# Needs: $dbname - the database that user should have access to.
# $dbserver - the server to connect to.
# $dbadmin - the administrator name.
# $dbadmpass - the administrator password.
# which
# mysql
# /usr/share/wwwconfig-common/mysql.get
echo "postrm Delete database $dbname on server $dbserver using account $dbadmin"
# Define mysqlcmd
if [ -z "$dbserver" ] || [ "$dbserver" = "localhost" ]; then
hostopt=""
dbserver=localhost
else
case "$dbserver" in
:*)
dbsocket=`echo $dbserver | sed -e 's/^://'`
hostopt="-S $dbsocket"
;;
*)
hostopt="-h $dbserver"
;;
esac
fi
if [ -z "$dbadmpass" ] ; then
log="${log}No password used."
passopt=""
else
passopt="--password='"`echo "$dbadmpass" | sed -e "s/'/'"'"'"'"'"'"'/g"`"'"
fi
mysqlcmd="mysql $hostopt $passopt -u $dbadmin"
# Now run the drop commands
if eval $mysqlcmd -f -e "\"show databases;\"" | grep -e "^$dbname" > /dev/null 2>&1 ; then
log="${log}Droping database $dbname."
if eval $mysqlcmd -f -e "\"DROP DATABASE $dbname;\"" ; then
if eval $mysqlcmd -f -e "\"show databases;\"" | grep -e "^$dbname" > /dev/null 2>&1 ; then
error="Database $dbname NOT successfully droped. You have to do it manually."
echo $error
else
status=drop
fi
else
error="Unable to run the drop database script."
echo $error
fi
else
status=nothing
log="${log}Database $dbname already not exists."
fi
else
echo "postrm Delete of dolibarr database not wanted"
fi
# Remove include files
for server in $webservers ; do
export error=""
export conffile="/etc/$server/httpd.conf"
echo "postrm conffile=$conffile"
if [ -f $conffile ] ;
then
if [ -s $conffile ] ;
then
echo postrm remove dolibarr include from /etc/dolibarr/apache.conf
# We disable set -e to avoid premature end of script if error
set +e
GREP="Include[[:space:]]\+$includefile\b"
if grep -e "$GREP" $conffile > /dev/null 2>&1; then
log="${log}Include of $includefile found in $conffile file, purging."
status=purge
grep -v -e "$GREP" < $conffile > $conffile.purg
mv $conffile.purg $conffile
fi
# We restore blocking errors
set -e
fi
fi
if [ "$status" = "purge" ] ;
then restart="$restart $server"
fi
done
rm -rf /etc/dolibarr
# Restart servers
servers="apache2-ssl apache2 mysql"
if [ -f /usr/share/wwwconfig-common/restart.sh ] ;
then
. /usr/share/wwwconfig-common/restart.sh
else
# Another way to restart
for server in $servers ; do
# We disable blocking errors
set +e
echo "Restart server $server if exists"
if [ -x /usr/sbin/invoke-rc.d ]; then
invoke-rc.d $server reload || true
else
/etc/init.d/$server reload || true
fi
# We restore blocking errors
set -e
done
fi
# Remove file and conf file
for dir in /usr/share/dolibarr ; do
if [ -d $dir ] ; then
# We disable blocking errors
set +e
echo "Remove directory $dir"
rm -rf $dir ;
# We restore blocking errors
set -e
fi
done
# We clean variable (we ignore errors because db_reset can fails if var was never set)
set +e
db_reset "dolibarr/postrm"
set -e
db_purge
;;
remove)
echo "postrm Force remove of /usr/share/dolibarr/htdocs/install"
rm -fr /usr/share/dolibarr/htdocs/install
echo "postrm Remove menu entry and image"
fileorig="/usr/share/applications/dolibarr.desktop"
rm -f $fileorig
fileorig="/usr/share/pixmaps/dolibarr.xpm"
rm -f $fileorig
# Not sure this is usefull
if test -x /usr/bin/update-menus; then update-menus; fi
;;
upgrade)
;;
failed-upgrade|abort-install|abort-upgrade|disappear)
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 0
;;
esac
db_stop
#DEBHELPER#
exit 0