X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=debian%2Fdiogenes.config;h=3602dc85eea358a990659e8fcbd63381809c459b;hb=HEAD;hp=08221cbeb5a621d1c7b25a431c95b0e2fb9926a4;hpb=6855525e48fad5de270500a5445c4f4ff85d8bda;p=diogenes.git diff --git a/debian/diogenes.config b/debian/diogenes.config index 08221cb..3602dc8 100644 --- a/debian/diogenes.config +++ b/debian/diogenes.config @@ -1,34 +1,5 @@ #!/bin/bash -e -RANDOMDEVICE=/dev/urandom -allowed=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./ -declare -a RVAL - -second () { - echo $2 -} - -create-random-pw() { - if ! read -n 0 < $RANDOMDEVICE ; then - echo 1>&2 "Warning, no random device found, password might be insecure" - for i in 0 1 2 3 4 5 6 7; do - RVAL[i]=$RANDOM - done - else - for i in 0 1 2 3 4 5 6 7; do - RVAL[i]=$(second $(od -N 1 -t d $RANDOMDEVICE)) - done - fi - - PW="" - for i in 0 1 2 3 4 5 6 7; do - idx=$((${RVAL[i]} & 0x3F)) - PW="${PW}${allowed:$idx:1}" - done - - printf "%s" $PW -} - # this function comes from wwwconfig-common's apache.func script getwwwoption() { getwwwoption="" @@ -39,6 +10,49 @@ getwwwoption() { fi } +# migrate pre-dbc debconf values +migrate_settings() { + dumpfile=$1 + rm -f $dumpfile + touch $dumpfile + chmod 0006 $dumpfile + + db_get "diogenes/databasemgr_type" + dbtype="$RET" + if [ "$dbtype" != "Automatic" ] ; then + echo "Not migrating manual pre-dbconfig settings" + return + fi + echo "Migrating automatic pre-dbconfig settings" + db_get "diogenes/databasemgr_server" + if [ -n "$RET" ] && [ "$RET" != "localhost" ]; then + echo "dbserver=\"$RET\"" >> $dumpfile + fi + db_get "diogenes/database_name" + if [ -n "$RET" ]; then + echo "dbname=\"$RET\"" >> $dumpfile + fi + db_get "diogenes/database_user" + if [ -n "$RET" ]; then + echo "dbuser=\"$RET\"" >> $dumpfile + fi + db_get "diogenes/database_pass" + if [ -n "$RET" ]; then + echo "dbpass=\"$RET\"" >> $dumpfile + fi +} + +clean_settings() { + echo "Removing pre-dbconfig settings" + db_clear "diogenes/databasemgr_type" || true + db_clear "diogenes/databasemgr_server" || true + db_clear "diogenes/dbmyadmin" || true + db_clear "diogenes/dbadmpass" || true + db_clear "diogenes/database_name" || true + db_clear "diogenes/database_user" || true + db_clear "diogenes/database_pass" || true +} + # Use debconf baby . /usr/share/debconf/confmodule @@ -63,10 +77,20 @@ for i in $webservers ; do nbsrv=`expr $nbsrv + 1`; done if [ $nbsrv == 1 ]; then server=$(echo $webservers | sed 's/,$//') - if [ -f /etc/$server/httpd.conf ]; then - getwwwoption User /etc/$server/httpd.conf + config_file= + if [ "$server" == "apache2" ] && [ -f /etc/$server/envvars ]; then + envvars_file=/etc/$server/envvars + webuser=$(grep "APACHE_RUN_USER=" $envvars_file | sed 's/.*=//') + webgroup=$(grep "APACHE_RUN_GROUP=" $envvars_file | sed 's/.*=//') + elif [ "$server" == "apache2" ] && [ -f /etc/$server/apache2.conf ]; then + config_file=/etc/$server/apache2.conf + elif [ -f /etc/$server/httpd.conf ]; then + config_file=/etc/$server/httpd.conf + fi + if [ -n "$config_file" ]; then + getwwwoption User $config_file webuser=$(echo "$getwwwoption" | sed -e "q") - getwwwoption Group /etc/$server/httpd.conf + getwwwoption Group $config_file webgroup=$(echo "$getwwwoption" | sed -e "q") fi fi @@ -84,31 +108,28 @@ else db_set "diogenes/webgroup" "$webgroup" fi -db_input "high" "diogenes/databasemgr_type" || true -db_go -db_get "diogenes/databasemgr_type" -dbtype="$RET" +# source dbconfig-common shell library, and call the hook function +if [ -f /usr/share/dbconfig-common/dpkg/config.mysql ]; then + . /usr/share/dbconfig-common/dpkg/config.mysql + dbc_first_version=0.9.20-2 + dbc_oldversion="$2" + # check if we are migrating from a pre-dbc version + if [ "$dbc_oldversion" ] && [ "$dbc_first_version" ] && \ + dpkg --compare-versions "$dbc_first_version" gt "$dbc_oldversion"; then + migrating="yes" + fi -if [ "$dbtype" = "Automatic" ] ; then - db_input "high" "diogenes/databasemgr_server" || true - db_go - db_input "high" "diogenes/dbmyadmin" || true - db_go - db_input "critical" "diogenes/dbadmpass" || true - db_go - db_input "medium" "diogenes/database_name" || true - db_go - db_input "medium" "diogenes/database_user" || true - db_go - db_input "medium" "diogenes/database_pass" || true - db_go - db_get "diogenes/database_pass" - dbpass="$RET" - if [ "$dbpass" = "auto" ]; then - dbpass=$(create-random-pw) - elif [ "$dbpass" = "none" ]; then - dbpass="" + if [ -n "$migrating" ]; then + dumpfile=/etc/diogenes/diogenes.dump + migrate_settings $dumpfile + dbc_load_include="sh:$dumpfile" fi - db_set "diogenes/database_pass" "$dbpass" + dbc_go diogenes $@ + + if [ -n "$migrating" ]; then + rm -f $dumpfile + #clean_settings + fi fi +