#!/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="" if [ -f $2 ] ; then if grep $1 $2 | grep -v "#" > /dev/null 2>&1 ; then getwwwoption=$(sed -ne "/^[[:space:]]*$1[[:space:]]\+/ s|[[:space:]]*$1[[:space:]]\+\([^[:space:]]\+\)[[:space:]]*$|\1|pg;" < $2) fi fi } # Use debconf baby . /usr/share/debconf/confmodule db_version 2.0 db_title Diogenes db_input "low" "diogenes/welcome" || true db_go db_input "high" "diogenes/purge_removes_data" || true db_go ### Required options no matter what ### db_input "high" "diogenes/webservers" || true db_go db_get "diogenes/webservers" webservers="$RET" # if a single webserver is selected, # try to get the user and group the webserver runs as nbsrv=0 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 webuser=$(echo "$getwwwoption" | sed -e "q") getwwwoption Group /etc/$server/httpd.conf webgroup=$(echo "$getwwwoption" | sed -e "q") fi fi if [ -z "$webuser" ]; then db_input "high" "diogenes/webuser" || true db_go else db_set "diogenes/webuser" "$webuser" fi if [ -z "$webgroup" ]; then db_input "high" "diogenes/webgroup" || true db_go else db_set "diogenes/webgroup" "$webgroup" fi db_input "high" "diogenes/databasemgr_type" || true db_go db_get "diogenes/databasemgr_type" dbtype="$RET" 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="" fi db_set "diogenes/database_pass" "$dbpass" fi