#!/bin/sh

get_pass()
{
    db_get bacula/director_passwd
    db_pass="$RET"
    db_get bacula/director_mpasswd
    db_mpass="$RET"
    db_get bacula/sd_passwd
    db_sd_pass="$RET"
    db_get bacula/fd_passwd
    db_fd_pass="$RET"
    db_get bacula-dir/smtp_host
    db_smtp_host="$RET"
    db_get bacula-dir/adm_email
    db_adm_email="$RET"
}

config_director()
{
    DEFCONFIGDIR="/usr/share/bacula-common/defconfig"
    DSTDIR="/opt/bacula/etc"
    CONFIG="bacula-dir.conf"

    SOURCE=$DEFCONFIGDIR/$CONFIG
    
    if [ -f $DSTDIR/$CONFIG -a ! -f $SOURCE ]; then
        echo "Target $DSTDIR/$CONFIG already exists and $SOURCE doesn't"
        echo "Not modifying target."
    else
        if [ ! -s $DSTDIR/$CONFIG ]; then
            TARGET=$DSTDIR/$CONFIG
        else
            TARGET=$DSTDIR/$CONFIG.dist
        fi

    # Harden permissions, so that passwords can not be looked at
    # Fixed by Philipp M Hahn
        touch $TARGET
        chown bacula:bacula $TARGET
        chmod 640 $TARGET
        
    # Final config fix
        sed -e "s/XXX_REPLACE_HOSTNAME_XXX/`hostname`/" \
            -e "s%XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX%$db_pass%" \
            -e "s%XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX%$db_mpass%" \
            -e "s%XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX%$db_sd_pass%" \
            -e "s%XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX%$db_fd_pass%" \
            -e "s%XXX_REPLACE_WITH_EMAIL_XXX%$db_adm_email%" \
	    -e "s%XXX_REPLACE_WITH_SMTP_XXX%$db_smtp_host%"  \
            $SOURCE > $TARGET

        # need to parse /etc/dbconfig-common/bacula-dir-xxx.conf
        sed -i -e "s/XXX_REPLACE_WITH_DBUSER_XXX/$dbc_dbuser/" \
               -e "s/XXX_REPLACE_WITH_DBPASS_XXX/$dbc_dbpass/" \
            $TARGET

        # need to parse /etc/dbconfig-common/bacula-dir-xxx.conf
        sed -i -e "s/XXX_REPLACE_WITH_DBUSER_XXX/$dbc_dbuser/" \
               -e "s/XXX_REPLACE_WITH_DBPASS_XXX/$dbc_dbpass/" \
            /opt/bacula/scripts/grant_*_privileges

        if [ -n "$dbc_host" ]; then
            sed -i -e "s/#dbaddress/dbaddress = \"$dbaddress\"/" $TARGET
        fi

        if [ -n "$dbc_port" ]; then
            sed -i -e "s/#dbport/dbport = \"$dbport\"/" $TARGET
        fi

    fi
}

config_sd()
{
    DEFCONFIGDIR="/usr/share/bacula-common/defconfig"
    DSTDIR="/opt/bacula/etc"
    CONFIG="bacula-sd.conf"
    SDDIR="/var/lib/bacula"

    SOURCE=$DEFCONFIGDIR/$CONFIG
    
    if [ -f $DSTDIR/$CONFIG -a ! -f $SOURCE ]; then
        echo "Target $DSTDIR/$CONFIG already exists and $SOURCE doesn't"
        echo "Not modifying target."
    else
        if [ ! -s $DSTDIR/$CONFIG ]; then
            TARGET=$DSTDIR/$CONFIG
        else
            TARGET=$DSTDIR/$CONFIG.dist
        fi

    # Harden permissions, so that passwords can not be looked at
    # Fixed by Philipp M Hahn
        touch $TARGET
        chown bacula:bacula $TARGET
        chmod 640 $TARGET

	mkdir -p $SDDIR
        chown bacula:bacula $SDDIR
        chmod 750 $SDDIR

    # Final config fix
        sed -e "s/XXX_REPLACE_HOSTNAME_XXX/`hostname`/" \
            -e "s%XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX%$db_pass%" \
            -e "s%XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX%$db_mpass%" \
            -e "s%XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX%$db_sd_pass%" \
            -e "s%XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX%$db_fd_pass%" \
            -e "s%XXX_REPLACE_WITH_EMAIL_XXX%$db_adm_email%" \
	    -e "s%XXX_REPLACE_WITH_SMTP_XXX%$db_smtp_host%"  \
            -e "s~XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX~$db_mpass~" \
            $SOURCE > $TARGET
    fi
}
