dolibarr.postrm 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. #!/bin/sh
  2. # postrm script for dolibarr
  3. #
  4. # see: dh_installdeb(1)
  5. #set -e
  6. set +e
  7. # summary of how this script can be called:
  8. # * <postrm> `remove'
  9. # * <postrm> `purge'
  10. # * <old-postrm> `upgrade' <new-version>
  11. # * <new-postrm> `failed-upgrade' <old-version>
  12. # * <new-postrm> `abort-install'
  13. # * <new-postrm> `abort-install' <old-version>
  14. # * <new-postrm> `abort-upgrade' <old-version>
  15. # * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
  16. # for details, see /usr/share/doc/packaging-manual/
  17. lighttpd_remove() {
  18. if [ -f /etc/lighttpd/conf-available/50-dolibarr.conf ] ; then
  19. echo "postrm Remove link for Lighttpd config file"
  20. rm -f /etc/lighttpd/conf-available/50-dolibarr.conf
  21. if which lighty-enable-mod >/dev/null 2>&1 ; then
  22. lighty-disable-mod dolibarr
  23. else
  24. echo "postrm Lighttpd not installed, skipping"
  25. fi
  26. # See bug #448682
  27. if [ -h /etc/lighttpd/conf-enabled/50-dolibarr.conf ] ; then
  28. echo "postrm Manually deleting lighttpd/dolibarr configuration link"
  29. rm /etc/lighttpd/conf-enabled/50-dolibarr.conf
  30. fi
  31. fi
  32. }
  33. apache_remove() {
  34. if [ -d /etc/$webserver/conf.d ] && [ -L /etc/$webserver/conf.d/dolibarr.conf ]; then
  35. echo "postrm Remove link for Apache config file"
  36. rm -f /etc/$webserver/conf.d/dolibarr.conf
  37. fi
  38. }
  39. if [ -f /usr/share/debconf/confmodule ]; then
  40. . /usr/share/debconf/confmodule
  41. fi
  42. db_version 2.0
  43. echo Run the dolibarr postrm script
  44. docdir='/var/lib/dolibarr/documents'
  45. config="/etc/dolibarr/conf.php"
  46. lockfile="$docdir/install.lock"
  47. case "$1" in
  48. # Call when we upgrade
  49. upgrade)
  50. echo "postrm upgrade"
  51. ;;
  52. # Call when we uninstall
  53. remove)
  54. echo "postrm remove"
  55. rm -f $lockfile
  56. # Reconfigure web server
  57. db_get dolibarr/reconfigure-webserver
  58. webservers="$RET"
  59. # Restart web servers
  60. for webserver in $webservers; do
  61. webserver=${webserver%,}
  62. if [ "$webserver" = "lighttpd" ] ; then
  63. lighttpd_remove
  64. else
  65. apache_remove $webserver
  66. fi
  67. # Redirection of 3 is needed because Debconf uses it and it might
  68. # be inherited by webserver. See bug #446324.
  69. if [ -f /etc/init.d/$webserver ] ; then
  70. if [ -x /usr/sbin/invoke-rc.d ]; then
  71. invoke-rc.d $webserver reload 3>/dev/null || true
  72. else
  73. /etc/init.d/$webserver reload 3>/dev/null || true
  74. fi
  75. fi
  76. done
  77. ;;
  78. # Call when we uninstall and purge
  79. purge)
  80. echo "postrm purge"
  81. # Ask if we must delete database
  82. echo "postrm db_input dolibarr/postrm"
  83. db_input critical dolibarr/postrm || true
  84. db_go || true
  85. echo "postrm db_get dolibarr/postrm"
  86. # We disable set -e to avoid premature end of script if error
  87. set +e
  88. db_get dolibarr/postrm
  89. set -e
  90. if [ "$RET" = "true" ] ; then
  91. echo postrm Mysql database deletion
  92. # Get database configuration
  93. dbserver="localhost"
  94. dbuser="dolibarrdebian"
  95. dbname="dolibarrdebian"
  96. #db_get "dolibarr/db/name"
  97. #dbname="$RET"
  98. superuserlogin=''
  99. superuserpassword=''
  100. if [ -f /etc/mysql/debian.cnf ] ; then
  101. # Load superuser login and pass
  102. superuserlogin=$(grep --max-count=1 "user" /etc/mysql/debian.cnf | sed -e 's/^user[ =]*//g')
  103. superuserpassword=$(grep --max-count=1 "password" /etc/mysql/debian.cnf | sed -e 's/^password[ =]*//g')
  104. fi
  105. echo postrm Mysql superuser found to use is $superuserlogin
  106. dbadmin="$superuserlogin"
  107. dbadmpass="$superuserpassword"
  108. dbtype="mysql"
  109. # To delete a mysql user (disabled)
  110. # Needs: $dbuser - the user name to create (or replace).
  111. # $dballow - what hosts to allow (defaults to %).
  112. # $dbname - the database that user should have access to.
  113. # $dbpass - the password to use.
  114. # $dbserver - the server to connect to.
  115. # $dbadmin - the administrator name.
  116. # $dbadmpass - the administrator password.
  117. # which
  118. # mysql
  119. # /usr/share/wwwconfig-coomon/mysql.get
  120. #. /usr/share/wwwconfig-common/${dbtype}-dropuser.sh
  121. # To delete database
  122. # Needs: $dbname - the database that user should have access to.
  123. # $dbserver - the server to connect to.
  124. # $dbadmin - the administrator name.
  125. # $dbadmpass - the administrator password.
  126. # which
  127. # mysql
  128. # /usr/share/wwwconfig-common/mysql.get
  129. echo "postrm Delete database $dbname on server $dbserver using account $dbadmin"
  130. # Define mysqlcmd
  131. if [ -z "$dbserver" ] || [ "$dbserver" = "localhost" ]; then
  132. hostopt=""
  133. dbserver=localhost
  134. else
  135. case "$dbserver" in
  136. :*)
  137. dbsocket=`echo $dbserver | sed -e 's/^://'`
  138. hostopt="-S $dbsocket"
  139. ;;
  140. *)
  141. hostopt="-h $dbserver"
  142. ;;
  143. esac
  144. fi
  145. if [ -z "$dbadmpass" ] ; then
  146. log="${log}No password used."
  147. passopt=""
  148. else
  149. passopt="--password='"`echo "$dbadmpass" | sed -e "s/'/'"'"'"'"'"'"'/g"`"'"
  150. fi
  151. mysqlcmd="mysql $hostopt $passopt -u $dbadmin"
  152. mysqlcmdnopass="mysql $hostopt -u $dbadmin"
  153. # Now run the drop user
  154. if eval $mysqlcmd -f -e "\"DROP USER '$dbuser'@'localhost';\"" ; then
  155. echo postrm Database login $dbuser@localhost removed
  156. else
  157. error="Unable to run $mysqlcmdnopass -f -e \"DROP USER '$dbuser'@'localhost';\""
  158. echo postrm $error
  159. fi
  160. if eval $mysqlcmd -f -e "\"DROP USER '$dbuser'@'%';\"" ; then
  161. echo postrm Database login $dbuser@% removed
  162. else
  163. error="Unable to run $mysqlcmdnopass -f -e \"DROP USER '$dbuser'@'%';\""
  164. echo postrm $error
  165. fi
  166. # Now run the drop commands
  167. if eval $mysqlcmd -f -e "\"show databases;\"" | grep -e "^$dbname" > /dev/null 2>&1 ; then
  168. log="${log}Droping database $dbname."
  169. if eval $mysqlcmd -f -e "\"DROP DATABASE $dbname;\"" ; then
  170. if eval $mysqlcmd -f -e "\"show databases;\"" | grep -e "^$dbname" > /dev/null 2>&1 ; then
  171. error="Database $dbname NOT successfully droped. You have to do it manually."
  172. echo postrm $error
  173. else
  174. status=drop
  175. fi
  176. else
  177. error="Unable to run the drop database script."
  178. echo postrm $error
  179. fi
  180. else
  181. status=nothing
  182. log="${log}Database $dbname already not exists."
  183. fi
  184. echo "postrm Remove directory $docdir"
  185. rm -rf $docdir ;
  186. else
  187. echo "postrm Delete of dolibarr database and uploaded files not wanted"
  188. fi
  189. rm -rf /etc/dolibarr
  190. # We clean variable (we ignore errors because db_reset can fails if var was never set)
  191. set +e
  192. db_reset dolibarr/reconfigure-webserver
  193. db_reset dolibarr/postrm
  194. set -e
  195. #db_purge
  196. ;;
  197. failed-upgrade|abort-install|abort-upgrade|disappear)
  198. ;;
  199. *)
  200. echo "postrm called with unknown argument $1" >&2
  201. exit 0
  202. ;;
  203. esac
  204. #DEBHELPER#
  205. db_stop
  206. exit 0