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

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

fix

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