diff --git a/install_roundcube.sh b/install_roundcube.sh index 8aed0fb..ab120d4 100755 --- a/install_roundcube.sh +++ b/install_roundcube.sh @@ -19,8 +19,20 @@ echo -e "\n\t\033[32mStart script for installation Roundcube Webmailer..\033[m" # ------------- _src_base_dir="$(realpath $(dirname $0))" -#_src_base_dir=/usr/local/src/postfixadmin -conf_file="${_src_base_dir}/conf/install_upgrade_roundcube.conf" + + +script_name="$(basename $(realpath $0))" +script_dir="$(dirname $(realpath $0))" + +conf_dir="${script_dir}/conf" +#conf_file="${_src_base_dir}/conf/install_upgrade_roundcube.conf" + +declare -a unsorted_website_arr +declare -a website_arr + + + + curdir=`pwd` log_file="$(mktemp)" @@ -86,6 +98,16 @@ echo_skipped() { echo -e "\033[75G[ \033[30m\033[1mskipped\033[m ]" } +is_number() { + + return $(test ! -z "${1##*[!0-9]*}" > /dev/null 2>&1); + + # - also possible + # - + #[[ ! -z "${1##*[!0-9]*}" ]] && return 0 || return 1 + #return $([[ ! -z "${1##*[!0-9]*}" ]]) +} + trap clean_up SIGHUP SIGINT SIGTERM @@ -127,10 +149,50 @@ if [[ -z "$APACHE_SERVICE_FILE" ]] ; then fi -if [ "$DB_TYPE" = "postgres" -o "$DB_TYPE" = "postgresql" -o "$DB_TYPE" = "pgsql" -o "$DB_TYPE" = "psql" ];then - DB_TYPE=pgsql +while IFS='' read -r -d '' _conf_file ; do + source $_conf_file + if [[ -n "$WEBSITE_NAME" ]] ; then + unsorted_website_arr+=("${WEBSITE_NAME}:$_conf_file") + fi + WEBSITE_NAME="" +done < <(find "${conf_dir}" -maxdepth 1 -type f -name "install_upgrade_roundcube*.conf" -print0) + +if [[ ${#unsorted_website_arr} -eq 0 ]]; then + fatal "No configuration files found in '${script_dir}/conf' or no website configured!" fi +# - Sort array +# - +IFS=$'\n' website_arr=($(sort <<<"${unsorted_website_arr[*]}")) + + +WEBSITE_NAME= +_OK=false +echo "" +echo "Which site would you like to update?" +echo "" +declare -i i=0 +for _site in ${website_arr[@]} ; do + IFS=':' read -a _arr <<< ${_site} + echo " [$i] ${_arr[0]}" + ((i++)) +done +echo +echononl " Eingabe: " +while ! $_OK ; do +read _IN + if is_number "$_IN" && [[ -n ${website_arr[$_IN]} ]]; then + IFS=':' read -a _arr <<< ${website_arr[$_IN]} + conf_file=${_arr[1]} + _OK=true + else + echo "" + echo -e "\tFalsche Eingabe !" + echo "" + echononl " Eingabe: " + fi +done + echo echononl "\tInclude Configuration file.." if [[ ! -f $conf_file ]]; then