first shot at reworking plugin system
[diogenes.git] / debian / diogenes.postinst
... / ...
CommitLineData
1#! /bin/sh
2# Horde postinst script using debconf
3# Written by Ola Lundqvist <opal@debian.org>
4# Adapted for Horde2 by Nils Rennebarth <nils@debian.org>
5# Adapted for Diogenes by Jeremy Lainé <jeremy.laine@m4x.org>
6#
7# All questions should have been asked via debconf
8# now we just go get those, build a temp file which we read in and
9# then build our config files and set everthing up
10
11set -e
12
13# summary of how this script can be called:
14# * <postinst> `configure' <most-recently-configured-version>
15# * <old-postinst> `abort-upgrade' <new version>
16# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
17# <new-version>
18# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
19# <failed-install-package> <version> `removing'
20# <conflicting-package> <version>
21# for details, see /usr/share/doc/packaging-manual/
22#
23# quoting from the policy:
24# Any necessary prompting should almost always be confined to the
25# post-installation script, and should be protected with a conditional
26# so that unnecessary prompting doesn't happen if a package's
27# installation fails and the `postinst' is called with `abort-upgrade',
28# `abort-remove' or `abort-deconfigure'.
29
30create_file_from_template() {
31 infile=$1
32 outfile=$2
33 # Password may contain anything, so we need to descend to quoting
34 # hell.
35 safepass="$dbpass"
36 # quote normal quote and final backslash because we need to write
37 # a single quoted PHP string
38 safepass=$(echo "$safepass" | sed -e "s/'/\\\\'/g" -e 's/\\$/\\\\'/)
39 # Now double backslashes because we will use sed
40 safepass=$(echo "$safepass" | sed -e 's/\\/\\\\/g')
41 # Finally escape an eventual hash sign with a backslash because
42 # we use the hash sign as a delimiter
43 safepass=$(echo "$safepass" | sed -e 's/#/\\#/g')
44 sed -e " \
45 s#@dbname@#$dbname#; \
46 s#@dbserver@#$dbserver#; \
47 s#@dbuser@#$dbuser#; \
48 s#@dbpass@#$safepass#; \
49 " <$infile >$outfile
50}
51
52
53case "$1" in
54 configure)
55
56# install ucf-managed files
57ucf --debconf-ok /usr/share/diogenes/config/diogenes.debian.inc.php /etc/diogenes/diogenes.debian.inc.php
58ucf --debconf-ok /usr/share/diogenes/config/apache.conf /etc/diogenes/apache.conf
59
60# get debconf started
61. /usr/share/debconf/confmodule
62db_version 2.0
63
64###############################################################################
65############################### Configure database ############################
66###############################################################################
67
68# Type of the databasemgr to use.
69db_get "diogenes/databasemgr_type"
70dbtype="$RET"
71if [ "$dbtype" = "Automatic" ] ; then
72 # Where it is located.
73 db_get "diogenes/databasemgr_server"
74 dbserver="$RET"
75 # Name of the database
76 db_get "diogenes/database_name"
77 dbname="$RET"
78 # Name of the user to have access.
79 db_get "diogenes/database_user"
80 dbuser="$RET"
81 # Its password.
82 db_get "diogenes/database_pass"
83 dbpass="$RET"
84
85 if [ ! -z $(which mysql) ]; then
86
87 # retrieve admin user and password
88 db_get "diogenes/dbmyadmin"
89 dbadmin="$RET"
90 db_get "diogenes/dbadmpass"
91 dbadmpass="$RET"
92 db_reset "diogenes/dbadmpass"
93
94 . /usr/share/wwwconfig-common/mysql-createdb.sh
95 if [ "$status" = "create" ] ; then
96 sqlfile=/usr/share/diogenes/scripts/diogenes.tables.sql
97 create_file_from_template $sqlfile.in $sqlfile
98 . /usr/share/wwwconfig-common/mysql-exec.sh
99 rm $sqlfile
100 sqlfile=/usr/share/diogenes/scripts/diogenes.logactions.sql
101 create_file_from_template $sqlfile.in $sqlfile
102 . /usr/share/wwwconfig-common/mysql-exec.sh
103 rm $sqlfile
104 elif [ "$status" = "nothing" ] ; then
105 if ! /usr/share/diogenes/scripts/updatedb.php -q -s "$dbserver" -d "$dbname" -u "$dbadmin" -p "$dbadmpass" ; then
106 echo "There was an error while upgrading the Diogenes database."
107 fi
108 else
109 echo $error
110 fi
111 . /usr/share/wwwconfig-common/mysql-createuser.sh
112 else
113 echo "Not configuring MySQL database because we cannot locate"
114 echo "the mysql client executable (mysql-client package missing)."
115 fi
116else
117 echo "Not configuring MySQL database at your request."
118fi
119
120
121###############################################################################
122########################## Configure web servers ##############################
123###############################################################################
124
125db_get "diogenes/webservers"
126webservers="$RET"
127
128for server in $webservers; do
129 server=$(echo $server | sed 's/,$//')
130 servers="$server $servers"
131 # Make sure our web server has PHP support
132 phpver=php4
133 phpini=/etc/$phpver/$server/php.ini
134 . /usr/share/wwwconfig-common/apache-php.sh
135 if [ "$status" = "uncomment" ] ; then
136 restart="$server $restart"
137 elif [ "$status" = "error" ] ; then
138 echo "Error while trying to enable $phpver support for '$server' : $error."
139 fi
140
141 # Make sure that PHP has MySQL support enabled
142 checkextensions=mysql
143 . /usr/share/wwwconfig-common/php-extensions.sh
144
145 includefile=/etc/diogenes/apache.conf
146 # For old versions of Diogenes, remove the include of ourapache.conf
147 if dpkg --compare-versions "$2" le-nl "0.9.9.3-6" ; then
148 . /usr/share/wwwconfig-common/apache-uninclude_all.sh
149 if [ "$status" = "uncomment" ] ; then
150 restart="$server $restart"
151 fi
152 fi
153
154 # If necessary, add a symlink to our apache.conf
155 if [ -d /etc/$server/conf.d ] && [ ! -e /etc/$server/conf.d/diogenes ] ; then
156 ln -s $includefile /etc/$server/conf.d/diogenes
157 restart="$server $restart"
158 fi
159done
160
161
162###############################################################################
163########################## Configure Diogenes #################################
164###############################################################################
165
166db_get "diogenes/webuser"
167webuser="$RET"
168db_get "diogenes/webgroup"
169webgroup="$RET"
170
171( umask 0027 # File may contain passwords
172 create_file_from_template /usr/share/diogenes/config/diogenes.config.inc.php /etc/diogenes/diogenes.config.inc.php
173 chgrp $webgroup /etc/diogenes/diogenes.config.inc.php
174)
175
176# purge Smarty templates cache
177rm -rf /var/spool/diogenes/templates_c/*
178
179# correct ownership on Diogenes directories
180chown -R $webuser /var/lib/diogenes
181chown -R $webuser /var/spool/diogenes
182
183
184###############################################################################
185############################# Servers restart #################################
186###############################################################################
187if ! eval . /usr/share/wwwconfig-common/restart.sh ; then
188 echo "There was a problem restarting web server(s)."
189fi
190
191 ;;
192
193 abort-upgrade|abort-remove|abort-deconfigure)
194
195 ;;
196
197 *)
198 echo "postinst called with unknown argument \`$1'" >&2
199 exit 0
200 ;;
201esac
202
203# dh_installdeb will replace this with shell code automatically
204# generated by other debhelper scripts.
205
206#DEBHELPER#
207
208exit 0
209