#!/bin/sh # postrm script for dolibarr # # see: dh_installdeb(1) #set -e set +e # summary of how this script can be called: # * `remove' # * `purge' # * `upgrade' # * `failed-upgrade' # * `abort-install' # * `abort-install' # * `abort-upgrade' # * `disappear' overwrit>r> # for details, see /usr/share/doc/packaging-manual/ lighttpd_remove() { if [ -f /etc/lighttpd/conf-available/50-dolibarr.conf ] ; then echo "postrm Remove link for Lighttpd config file" rm -f /etc/lighttpd/conf-available/50-dolibarr.conf if which lighty-enable-mod >/dev/null 2>&1 ; then lighty-disable-mod dolibarr else echo "postrm Lighttpd not installed, skipping" fi # See bug #448682 if [ -h /etc/lighttpd/conf-enabled/50-dolibarr.conf ] ; then echo "postrm Manually deleting lighttpd/dolibarr configuration link" rm /etc/lighttpd/conf-enabled/50-dolibarr.conf fi fi } apache_remove() { if [ -d /etc/$webserver/conf.d ] && [ -L /etc/$webserver/conf.d/dolibarr.conf ]; then echo "postrm Remove link for Apache config file" rm -f /etc/$webserver/conf.d/dolibarr.conf fi } if [ -f /usr/share/debconf/confmodule ]; then . /usr/share/debconf/confmodule fi db_version 2.0 echo Run the dolibarr postrm script docdir='/var/lib/dolibarr/documents' config="/etc/dolibarr/conf.php" lockfile="$docdir/install.lock" case "$1" in # Call when we upgrade upgrade) echo "postrm upgrade" ;; # Call when we uninstall remove) echo "postrm remove" rm -f $lockfile # Reconfigure web server db_get dolibarr/reconfigure-webserver webservers="$RET" # Restart web servers for webserver in $webservers; do webserver=${webserver%,} if [ "$webserver" = "lighttpd" ] ; then lighttpd_remove else apache_remove $webserver fi # Redirection of 3 is needed because Debconf uses it and it might # be inherited by webserver. See bug #446324. if [ -f /etc/init.d/$webserver ] ; then if [ -x /usr/sbin/invoke-rc.d ]; then invoke-rc.d $webserver reload 3>/dev/null || true else /etc/init.d/$webserver reload 3>/dev/null || true fi fi done ;; # Call when we uninstall and purge purge) echo "postrm purge" # 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" dbuser="dolibarrdebian" dbname="dolibarrdebian" #db_get "dolibarr/db/name" #dbname="$RET" superuserlogin='' superuserpassword='' if [ -f /etc/mysql/debian.cnf ] ; then # Load superuser login and pass superuserlogin=$(grep --max-count=1 "user" /etc/mysql/debian.cnf | sed -e 's/^user[ =]*//g') superuserpassword=$(grep --max-count=1 "password" /etc/mysql/debian.cnf | sed -e 's/^password[ =]*//g') fi echo postrm Mysql superuser found to use is $superuserlogin dbadmin="$superuserlogin" dbadmpass="$superuserpassword" 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" mysqlcmdnopass="mysql $hostopt -u $dbadmin" # Now run the drop user if eval $mysqlcmd -f -e "\"DROP USER '$dbuser'@'localhost';\"" ; then echo postrm Database login $dbuser@localhost removed else error="Unable to run $mysqlcmdnopass -f -e \"DROP USER '$dbuser'@'localhost';\"" echo postrm $error fi if eval $mysqlcmd -f -e "\"DROP USER '$dbuser'@'%';\"" ; then echo postrm Database login $dbuser@% removed else error="Unable to run $mysqlcmdnopass -f -e \"DROP USER '$dbuser'@'%';\"" echo postrm $error fi # 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 postrm $error else status=drop fi else error="Unable to run the drop database script." echo postrm $error fi else status=nothing log="${log}Database $dbname already not exists." fi echo "postrm Remove directory $docdir" rm -rf $docdir ; else echo "postrm Delete of dolibarr database and uploaded files not wanted" fi rm -rf /etc/dolibarr # We clean variable (we ignore errors because db_reset can fails if var was never set) set +e db_reset dolibarr/reconfigure-webserver db_reset dolibarr/postrm set -e #db_purge ;; failed-upgrade|abort-install|abort-upgrade|disappear) ;; *) echo "postrm called with unknown argument $1" >&2 exit 0 ;; esac #DEBHELPER# db_stop exit 0