diff --git a/install_postfixadmin.sh b/install_postfixadmin.sh index d1c1dcc..8e0d498 100755 --- a/install_postfixadmin.sh +++ b/install_postfixadmin.sh @@ -26,6 +26,7 @@ conf_file="${_src_base_dir}/conf/install_postfixadmin.conf" curdir=`pwd` log_file="$(mktemp)" +backup_date="$(date +%Y-%m-%d-%H%M)" declare -A check_entry_main_cf_arr @@ -424,12 +425,30 @@ echo -e "\n\n\t\033[37m\033[1mPre-installion tasks ..\033[m\n" # - _failed=false > $log_file -echononl "\tCreate Postfix Database '$POSTFIX_DB_NAME'" -if [ "$POSTFIX_DB_TYPE" = "mysql" ]; then - echo -n " (MySQL).." + +if [[ "$POSTFIX_DB_TYPE" = "mysql" ]] ; then if ! mysql $mysql_credential_args -N -s -e \ "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '$POSTFIX_DB_NAME'" 2>> $log_file \ | grep $POSTFIX_DB_NAME >> $log_file 2>&1 ; then + database_exists=false + else + database_exists=true + fi +elif [[ "$POSTFIX_DB_TYPE" = "pgsql" ]]; then + count=$(su - postgres -c "psql -q -A -t -l" | grep -c -e "^$POSTFIX_DB_NAME") + if [[ $count -eq 0 ]];then + database_exists=false + else + database_exists=true + fi +else + fatal "Cannot detect database type (value of POSTFIX_DB_TYPE is neither 'mysql' nor 'pgsql')" +fi + +if ! $database_exists ; then + echononl "\tCreate Postfix Database '$POSTFIX_DB_NAME'" + if [ "$POSTFIX_DB_TYPE" = "mysql" ]; then + echo -n " (MySQL).." mysql $mysql_credential_args -N -s -e \ "CREATE DATABASE IF NOT EXISTS $POSTFIX_DB_NAME CHARACTER SET utf8 COLLATE utf8_general_ci" >> $log_file 2>&1 if [[ $? -ne 0 ]] ; then @@ -450,13 +469,8 @@ if [ "$POSTFIX_DB_TYPE" = "mysql" ]; then else echo_ok fi - else - echo_skipped - fi -elif [ "$POSTFIX_DB_TYPE" = "pgsql" ]; then - echo -n " (PostgreSQL).." - count=`su - postgres -c "psql -q -A -t -l" | grep -c -e "^$POSTFIX_DB_NAME"` - if [ $count -eq 0 ];then + elif [ "$POSTFIX_DB_TYPE" = "pgsql" ]; then + echo -n " (PostgreSQL).." echo "CREATE ROLE $POSTFIX_DB_USER WITH LOGIN NOCREATEDB NOCREATEROLE NOSUPERUSER ENCRYPTED PASSWORD '$POSTFIX_DB_PASS'" \ | su - postgres -c "psql" >> $log_file 2>&1 if [[ $? -ne 0 ]] ; then @@ -472,8 +486,27 @@ elif [ "$POSTFIX_DB_TYPE" = "pgsql" ]; then else echo_ok fi - else - echo_skipped + fi +else + echononl "\tBackup Postfix Database '$POSTFIX_DB_NAME'" + if [[ "$POSTFIX_DB_TYPE" = "mysql" ]]; then + echo -n " (MySQL).." + mysqldump $mysql_credential_args --opt $POSTFIX_DB_NAME >> ${WEBSITE_BASEDIR}/${POSTFIX_DB_NAME}.${backup_date}.sql 2> $log_file + if [[ $? -eq 0 ]]; then + echo_ok + else + echo_failed + error "$(cat $log_file)" + fi + elif [[ "$POSTFIX_DB_TYPE" = "pgsql" ]]; then + echo -n " (PostgreSQL).." + su - postgres -c "pg_dump $POSTFIX_DB_NAME" >> ${WEBSITE_BASEDIR}/${POSTFIX_DB_NAME}.${backup_date}.sql 2> $log_file + if [[ $? -eq 0 ]]; then + echo_ok + else + echo_failed + error "$(cat $log_file)" + fi fi fi @@ -571,7 +604,7 @@ fi echononl "\tBackup existing source directory 'postfixadmin-${PF_ADMIN_VERSION}'.." if [[ -d "${_src_base_dir}/postfixadmin-${PF_ADMIN_VERSION}" ]]; then mv ${_src_base_dir}/postfixadmin-${PF_ADMIN_VERSION} \ - ${_src_base_dir}/postfixadmin-${PF_ADMIN_VERSION}.$(date +%Y%m%d-%H%M) + ${_src_base_dir}/postfixadmin-${PF_ADMIN_VERSION}.${backup_date} if [[ $? -eq 0 ]]; then echo_ok else @@ -607,7 +640,7 @@ fi echononl "\tBackup existing web-directory 'postfixadmin-${PF_ADMIN_VERSION}'.." if [[ -d "${WEBSITE_BASEDIR}/postfixadmin-${PF_ADMIN_VERSION}" ]]; then mv ${WEBSITE_BASEDIR}/postfixadmin-${PF_ADMIN_VERSION} \ - ${WEBSITE_BASEDIR}/postfixadmin-${PF_ADMIN_VERSION}.`date +%Y%m%d-%H%M` > $log_file 2>&1 + ${WEBSITE_BASEDIR}/postfixadmin-${PF_ADMIN_VERSION}.${backup_date} > $log_file 2>&1 if [[ $? -eq 0 ]]; then echo_ok else @@ -1349,7 +1382,7 @@ fi echononl "\tBackup existing script 'vacation.pl'" if [[ -f "/var/spool/vacation/vacation.pl" ]] ; then - mv /var/spool/vacation/vacation.pl /var/spool/vacation/vacation.pl.$(date +%Y%m%d-%H%M) > "$log_file" 2>&1 + mv /var/spool/vacation/vacation.pl /var/spool/vacation/vacation.pl.${backup_date} > "$log_file" 2>&1 if [[ $? -ne 0 ]]; then echo_failed error "$(cat $log_file)" @@ -1432,7 +1465,7 @@ fi echononl "\tBackup existing file '/etc/postfixadmin/vacation.conf'" if [[ -f "/etc/postfixadmin/vacation.conf" ]]; then - mv /etc/postfixadmin/vacation.conf /etc/postfixadmin/vacation.conf.$(date +%Y%m%d-%H%M) > "$log_file" 2>&1 + mv /etc/postfixadmin/vacation.conf /etc/postfixadmin/vacation.conf.${backup_date} > "$log_file" 2>&1 if [[ $? -eq 0 ]];then echo_ok else @@ -1985,7 +2018,7 @@ fi echononl "\tBackup existing post-deletion script" if [[ -f "/usr/local/bin/postfixadmin-mailbox-postdeletion.sh" ]]; then mv /usr/local/bin/postfixadmin-mailbox-postdeletion.sh \ - /usr/local/bin/postfixadmin-mailbox-postdeletion.sh.$(date +%Y%m%d-%H%M) > $log_file 2>&1 + /usr/local/bin/postfixadmin-mailbox-postdeletion.sh.${backup_date} > $log_file 2>&1 if [[ $? -eq 0 ]]; then echo_ok else @@ -2139,7 +2172,7 @@ fi echononl "\tBackup existing post-deletion script" if [[ -f "/usr/local/bin/postfixadmin-domain-postdeletion.sh" ]]; then mv /usr/local/bin/postfixadmin-domain-postdeletion.sh \ - /usr/local/bin/postfixadmin-domain-postdeletion.sh.$(date +%Y%m%d-%H%M) > $log_file 2>&1 + /usr/local/bin/postfixadmin-domain-postdeletion.sh.${backup_date} > $log_file 2>&1 if [[ $? -eq 0 ]]; then echo_ok else