#!/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=""
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
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/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
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
+