source: lliurex-analytics-server/trunk/fuentes/debian/postinst @ 5136

Last change on this file since 5136 was 5136, checked in by mabarracus, 3 years ago

Fix postinst exit code

File size: 10.1 KB
Line 
1#!/bin/sh
2# postinst script
3#
4# see: dh_installdeb(1)
5
6set -e
7# AVOID DECOMENT WITHOUT DEBCONF QUESTIONS
8#. /usr/share/debconf/confmodule
9
10# summary of how this script can be called:
11#        * <postinst> `configure' <most-recently-configured-version>
12#        * <old-postinst> `abort-upgrade' <new version>
13#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
14#          <new-version>
15#        * <postinst> `abort-remove'
16#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
17#          <failed-install-package> <version> `removing'
18#          <conflicting-package> <version>
19# for details, see http://www.debian.org/doc/debian-policy/ or
20# the debian-policy package
21do_dialog(){
22    input=$(dialog      \
23        --title "$1"    \
24        --inputbox "$2" 0 0     \
25        3>&1 1>&2 2>&3 3>&-)
26        clear
27}
28ask_question(){
29    dialog --yesno "$1" 0 0
30    if [ $? -eq 0 ]; then
31        input=yes
32    else
33        input=no
34    fi
35    clear
36}
37
38case "$1" in
39    configure)
40
41    ASK="no"
42   
43#CHECK OLD CONFIG
44    if [ ! -d "/etc/lliurex-analytics-server" ]; then
45        ASK="yes"
46        echo "creating config directory"
47        mkdir /etc/lliurex-analytics-server
48    else
49        if [ -f "/etc/lliurex-analytics-server/config_db" ]; then
50            USER=$(cat /etc/lliurex-analytics-server/config_db|perl -ne '/user=(.*)/i && print $1')
51            PASS=$(cat /etc/lliurex-analytics-server/config_db|perl -ne '/pass=(.*)/i && print $1')
52            if [ -n "${USER}" -a -n "${PASS}" ]; then
53                RES=$(mysql -u${USER} -p${PASS} -N -s -Danalytics -e "show tables" 2>/dev/null || true)
54                if [ -n "${RES}" ]; then
55                    user="${USER}"
56                    pass="${PASS}"
57                    rootuser="-u${USER}"
58                    rootpass="-p${PASS}"
59                    ASK="no"
60                    echo "using user & pass from config_db file"
61                else
62                    echo "wrong user & pass into config_db file"
63                    ASK="yes"
64                fi
65            else
66                echo "user & pass not detected in config_db file"
67                ASK="yes"
68            fi
69        else
70            echo "config_db file not found"
71            ASK="yes"
72        fi
73    fi
74
75# ASK QUESTIONS
76    print_info="no"
77    ask_user="yes"
78    if [ "${ASK}" = "yes" ]; then
79        ask_question 'Desea configurar la base de datos analytics?'
80        if [ "x$input" = "xyes" ]; then
81            create_db=$input
82            ask_question 'Desea crear usuario para la tabla de la base de datos?'
83            create_user=$input
84            if [ "x$input" = "xyes" ]; then
85                do_dialog 'Database configuration' 'Nombre del usuario para crear:'
86                user=$input
87                do_dialog 'Database configuration' 'Password del usuario para crear:'
88                pass=$input
89            else
90                do_dialog 'Database configuration' 'Usuario con permiso en bd analytics?'
91                user=$input
92                do_dialog 'Database configuration' 'Password del usuario con permiso en bd analytics?'
93                pass=$input
94            fi
95            ask_root="yes"
96            if [ -f /etc/mysql/debian.cnf ]; then
97                root_test=$(mysql -u root -s -N -e "show databases" 2>/dev/null || true)
98                if [ -z "$root_test" ]; then
99                    rootuser=$(cat /etc/mysql/debian.cnf |grep -A 4 '\[client\]'|perl -ne '/user[ \t]*=[ \t]*(.*)/i && print $1')
100                    rootpass=$(cat /etc/mysql/debian.cnf |grep -A 4 '\[client\]'|perl -ne '/password[ \t]*=[ \t]*(.*)/i && print $1')
101                    if [ -n "$rootuser" -a -n "$rootpass" ]; then
102                        root_test=$(mysql -u $rootuser -p$rootpass -s -N -e "show databases" 2>/dev/null || true)
103                        if [ -n "$root_test" ]; then
104                            ask_root="no"
105                            rootuser="-u$rootuser"
106                            rootpass="-p$rootpass"
107                        fi
108                    fi
109                else
110                    ask_root="no"
111                    rootuser="-uroot"
112                    rootpass=""
113                fi
114            fi
115            if [ "x$ask_root" = "xyes" ]; then
116                do_dialog 'Database configuration' 'Mysql root user? (empty is root)'
117                if [ -z "$input" ]; then
118                    rootuser="root"
119                else
120                    rootuser=$input
121                fi
122                do_dialog 'Database configuration' 'Password root de mysql?'
123                rootpass=$input
124                root_test=$(mysql -u $rootuser -p$rootpass -s -N -e "show databases" 2>/dev/null || true)
125                if [ -z "$root_test" ]; then
126                    echo "Wrong password, leaving all unconfigured and aborting...."
127                    exit 0
128                else
129                    if [ -z "$rootuser" ]; then
130                        rootuser="-uroot"
131                    fi
132                    rootuser="-u$rootuser"
133                    if [ -z "$rootpass" ];then
134                        rootpass=""
135                    else
136                        rootpass="-p$rootpass"
137                    fi
138                fi
139            fi
140        else
141            print_info="yes"
142        fi
143    else
144    #ASK=no
145        create_db="no"
146        create_user="no"
147        ask_user="no"
148    fi
149
150# UPDATE DB FROM OLDER VERSIONS
151    tables=$(mysql $rootuser $rootpass -s -N -Danalytics -e "show tables" 2>/dev/null || true)
152    if [ -n "$tables" ]; then
153        tables=$(echo $tables|grep historico_clients||true)
154        dump_old_data=yes
155    else
156        dump_old_data=no
157    fi
158    keys=$(mysqldump $rootuser $rootpass analytics 2>/dev/null|egrep '^[[:space:]]*KEY'|wc -l)
159    dumpfile="/usr/lib/analytics-server/analytics-0_1_3-to-0_1_4.sql"
160
161    #UPDATE FROM 0.1.3 to 0.1.4
162
163    older_version="$2"
164    target_update="0.1.4"
165
166    need_update_to_0_1_4=no
167    dpkg --compare-versions "$older_version" lt "$target_update" && need_update_to_0_1_4=yes
168    if [ -z "$tables" -o $keys -ne 12 ]; then
169        need_update_to_0_1_4=yes
170        echo "failed database test for table historico_clients or keys"
171    fi
172    if [ "x$need_update_to_0_1_4" = "xyes" ]; then
173        echo Updating to database version upper than 0.1.4
174        if [ "x$dump_old_data" = "xyes" ]; then
175            mysqldump $rootuser $rootpass --no-create-info analytics > /tmp/__analytics_tmp__ 2>/dev/null
176        fi
177        mysql $rootuser $rootpass -s -N -e "drop database if exists analytics"
178        mysql $rootuser $rootpass < $dumpfile
179        mysql $rootuser $rootpass analytics < /tmp/__analytics_tmp__
180    else
181        echo "Seems that database is newer than 0.1.4, skipping database migration"
182    fi
183
184
185#INITIALIZE DB
186
187    if [ "x$create_db" = "xyes" ]; then
188        if [ "x$create_user" = "xyes" ]; then
189            mysql $rootuser $rootpass -s -N -e "create user '$user'@'%' identified by '$pass';" || true
190            mysql $rootuser $rootpass -s -N -e  "grant all privileges on analytics.* to '$user'@'%';" || true
191            mysql $rootuser $rootpass -s -N -e  "flush privileges;"
192            echo "user=$user" > /etc/lliurex-analytics-server/config_db
193            echo "pass=$pass" >> /etc/lliurex-analytics-server/config_db
194            chmod 750 /etc/lliurex-analytics-server/config_db
195        fi
196        mysql $rootuser $rootpass  < $dumpfile 
197    else
198        if [ "x$create_user" != "xyes" -a "${ask_user}" != "no" ]; then
199            do_dialog 'Analytics configuration' 'Usuario con permiso en bd analytics?'
200            user=$input
201            do_dialog 'Analytics configuration' 'Password del usuario con permiso en bd analytics?'
202            pass=$input
203            echo "user=$user" > /etc/lliurex-analytics-server/config_db
204            echo "pass=$pass" >> /etc/lliurex-analytics-server/config_db
205            chmod 640 /etc/lliurex-analytics-server/config_db
206        fi
207    fi
208
209    RES1=$(grep -o '@phpuser@' /usr/lib/analytics-server/analytics/config.php)
210    RES2=$(grep -o '@phppass@' /usr/lib/analytics-server/analytics/config.php)
211
212    if [ -f "/usr/lib/analytics-server/analytics/config.php" -a -n "${RES1}" -a -n "${RES2}" ]; then
213        sed -i.old -e "s/@phpuser@/$user/g" -e  "s/@phppass@/$pass/g" /usr/lib/analytics-server/analytics/config.php
214        rm /usr/lib/analytics-server/analytics/config.php.old
215        chmod 640 /usr/lib/analytics-server/analytics/config.php
216        apachectl_cmd=$(which apachectl)
217        apache_group=$(${apachectl_cmd} -t -D DUMP_RUN_CFG 2>/dev/null|perl -ne '/group:[ ]+name=\"(.*)\"/i && print $1')
218        if [ -z "${apache_group}" ]; then
219            echo "Warning: apache group not detected, falling back to www-data"
220            apache_group="www-data"
221        fi
222        chgrp ${apache_group} /usr/lib/analytics-server/analytics/config.php
223    else
224        echo "BUG !! WARNING: replace tags @phpuser@ & @phppass@ not found in /usr/lib/analytics-server/analytics/config.php"
225        echo "Installation may not work succesfully, report bug to developers"
226    fi
227
228
229# CONFIG APACHE
230
231    if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then
232        . /usr/share/apache2/apache2-maintscript-helper
233        apache2_invoke enmod rewrite || exit $?
234        apache2_invoke ensite analytics || exit $?
235    fi
236
237    if [ "${print_info}" = "yes" ]; then
238            echo
239            echo "To import database schema use:"
240            echo ""
241            echo "echo \"create user '<user>'@'%' identified by '<password>';\" | mysql -u root -p<root_password>"
242            echo "echo \"grant all privileges on analytics.* to '<user>'@'%';\" | mysql -u root -p<root_password>"
243            echo "echo \"flush privileges; \" | mysql -u root -p<root_password>"
244            echo "mysql -u <user> -p<root_password> < /usr/lib/analytics-server/analytics.sql"
245            echo "After that, edit /usr/lib/analytics-server/analytics/config.php"
246            echo 
247            echo
248    fi
249   
250
251    ;;
252
253    abort-upgrade|abort-remove|abort-deconfigure)
254    ;;
255
256    *)
257        echo "postinst called with unknown argument \`$1'" >&2
258        exit 1
259    ;;
260esac
261
262# dh_installdeb will replace this with shell code automatically
263# generated by other debhelper scripts.
264
265#DEBHELPER#
266
267exit 0
268
269
Note: See TracBrowser for help on using the repository browser.