upgrade_roundcube.sh: fix error using internal field separator IFS.

This commit is contained in:
Christoph 2024-03-17 18:34:07 +01:00
parent 0c4dd7b5e9
commit 0f6fa53e6d

View File

@ -3,6 +3,8 @@
clear
echo -e "\n \033[32mStart script for upgrading Roundcube Webmailer..\033[m"
CUR_IFS="$IFS"
## -----------------------------------------------------------------
## ----------------------------------------------------------------
## ---
@ -186,6 +188,7 @@ while IFS='' read -r -d '' _conf_file ; do
fi
WEBSITE_NAME=""
done < <(find "${conf_dir}" -maxdepth 1 -type f -name "install_upgrade_roundcube*.conf" -print0)
IFS="$CUR_IFS"
if [[ ${#unsorted_website_arr} -eq 0 ]]; then
fatal "No configuration files found in '${script_dir}/conf' or no website configured!"
@ -194,7 +197,7 @@ fi
# - Sort array
# -
IFS=$'\n' website_arr=($(sort <<<"${unsorted_website_arr[*]}"))
IFS=' '
IFS="$CUR_IFS"
WEBSITE_NAME=
@ -208,6 +211,8 @@ for _site in ${website_arr[@]} ; do
echo " [$i] ${_arr[0]}"
((i++))
done
IFS="$CUR_IFS"
echo
echononl " Eingabe: "
while ! $_OK ; do
@ -223,6 +228,7 @@ read _IN
echononl " Eingabe: "
fi
done
IFS="$CUR_IFS"
echo ""
echononl " Include Configuration file.."
@ -234,6 +240,7 @@ else
echo_ok
fi
[[ -n "$WEBSITE_NAME" ]] || fatal "Website's name (WEBSITE_NAME) not present!"
DEFAULT_WEBSITE_BASEDIR="/var/www/${WEBSITE_NAME}"
@ -278,6 +285,34 @@ if [[ "$DB_TYPE" = "mysql" ]]; then
else
[[ "$DB_TYPE" = "pgsql" ]] || fatal "Unknown Database Type '$DB_TYPE' (DB_TYPE)"
fi
mysql_credential_args="$MYSQL_CREDENTIALS"
if [[ "$DB_TYPE" = "mysql" ]]; then
echononl " Get MySQL command.."
mysql_command="$(which mysql)"
if [[ $? -eq 0 ]]; then
echo_ok
else
if [[ -x "/usr/local/mysql/bin/mysql" ]]; then
mysql_command="/usr/local/mysql/bin/mysql"
echo_ok
else
echo_failed
fatal "$(cat $tmp_log_file)"
fi
fi
elif [[ "$DB_TYPE" = "pgsql" ]] ; then
echononl " Get PostgreSQL command.."
psql_command="$(which psql)"
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
fi
fi
echo -e "\033[32m--\033[m"
@ -330,6 +365,7 @@ else
else
echo_ok
fi
IFS="$CUR_IFS"
fi
# - Get the latest PHP version
@ -447,16 +483,44 @@ else
fatal "Abort by user request - Answer as not 'YES'"
fi
echononl "\tCheck Database connection .."
if [[ "$DB_TYPE" = "mysql" ]]; then
if ! mysql $MYSQL_CREDENTIALS -N -s -e \
${mysql_command} $MYSQL_CREDENTIALS -N -s -e \
"SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '$DB_NAME'" 2>> $log_file \
| grep $DB_NAME >> $log_file 2>&1 ; then
fatal "MySQL Database '$DB_NAME' does not exit. (See Parameter 'DB_NAME')"
| grep $DB_NAME >> $log_file 2>&1
if [[ "$?" = "0" ]]; then
echo_ok
else
echo_failed
error "$(cat $log_file)"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
elif [[ "$DB_TYPE" = "pgsql" ]]; then
count=$(su - postgres -c "psql -q -A -t -l" | grep -c -e "^$DB_NAME")
count=$(su - postgres -c "${psql_command} -q -A -t -l" | grep -c -e "^$DB_NAME")
if [[ $count -eq 0 ]];then
fatal "PostgreSQL Database '$DB_NAME' does not exit. (See Parameter 'DB_NAME')"
echo_failed
error "$(cat $log_file)"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
else
echo_ok
fi
else
fatal "Cannot detect database type (value of DB_TYPE is neither 'mysql' nor 'pgsql')"