From 76bde5c63d12bc66060d772b92bf2eb06ee3b66a Mon Sep 17 00:00:00 2001 From: Martin Winkler Date: Wed, 4 Jan 2023 15:07:23 +0100 Subject: [PATCH] ejabberd - Add dependency for mysql and modernize code --- seqs/ejabberd.sh | 59 +++++++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/seqs/ejabberd.sh b/seqs/ejabberd.sh index 315c1a8..3a0fb8a 100755 --- a/seqs/ejabberd.sh +++ b/seqs/ejabberd.sh @@ -1,22 +1,26 @@ #!/bin/bash +# shellcheck disable=SC2154 # Variable referenced but not assigned (seq_origin) -toolName=ejabberd -toolConfLoc="/etc/ejabberd/ejabberd.yml" -toolAdminConf="/etc/ejabberd/ejabberdctl.cfg" +readonly toolName=ejabberd +readonly toolDeps=(ejabberd erlang-p1-mysql) +readonly toolConfLoc="/etc/ejabberd/ejabberd.yml" +readonly toolAdminConf="/etc/ejabberd/ejabberdctl.cfg" # for http upload -toolStorageLoc="/var/ejabberd" -certRoot="/etc/letsencrypt" +readonly toolStorageLoc="/var/ejabberd" +readonly certRoot="/etc/letsencrypt" # needed for different steps myDomain= myUser= myPass= +seq_trapExit() { unset myPass; } + step_1_info() { echo "Install $toolName via apt"; } step_1_alias() { echo "install"; } step_1() { exe apt update - exe apt install -y $toolName + exe apt install -y "${toolDeps[@]}" exe systemctl stop $toolName } @@ -45,13 +49,13 @@ step_2() { step_3_info() { echo "Create basic configuration"; } step_3() { - if [ ! -f $SEQDIR/ejabberd.yml ] ; then + if [ ! -f "${seq_origin}/ejabberd.yml" ] ; then addConf -m "$MissingConfEntry" "$toolConfLoc" else readDomain echo -e "\nThis user will be the admin:" readUser - addConf -c "$(cat $SEQDIR/ejabberd.yml)" "$toolConfLoc" + addConf -cf "${seq_origin}/ejabberd.yml" "$toolConfLoc" # modify configuration exe sed -i "s/mydomain\.eu/${myDomain}/" "$toolConfLoc" exe sed -i "s/myuser/${myUser}/" "$toolConfLoc" @@ -64,7 +68,7 @@ step_3() { exe sed -i "s/#\(INET_DIST_INTERFACE=127\.0\.0\.1\)/\1/" "$toolAdminConf" } -MissingConfEntry="Seq's basic configuration file \"$SEQDIR/ejabberd.yml\" missing. +MissingConfEntry="Seq's basic configuration file \"${seq_origin}/ejabberd.yml\" missing. Backup $toolConfLoc and create a configuration manually. Some essential settings needed: @@ -83,14 +87,14 @@ step_5() { readDomain readUser readUserPass - exe ejabberdctl register $myUser $myDomain $myPass + exe ejabberdctl register "${myUser}" "${myDomain}" "${myPass}" } step_10_info() { echo "List existing user"; } step_10_alias() { echo "listuser"; } step_10() { readDomain - exe ejabberdctl registered_users $myDomain + exe ejabberdctl registered_users "${myDomain}" } step_12_info() { echo "Change password for existing user"; } @@ -99,7 +103,7 @@ step_12() { readDomain readUser readUserPass - exe ejabberdctl change_password $myUser $myDomain $myPass + exe ejabberdctl change_password "${myUser}" "${myDomain}" "${myPass}" } step_14_info() { echo "Remove registered user"; } @@ -108,40 +112,43 @@ step_14() { readDomain readUser readUserPass - exe ejabberdctl unregister $myUser $myDomain $myPass + exe ejabberdctl unregister "${myUser}" "${myDomain}" "${myPass}" } readDomain() { if [ "$myDomain" == "" ] ; then - read -p "Enter your domain: " myDomain + myDomain=$(ask "Enter your domain: ") endIfEmpty myDomain "$toolName domain" fi } readUser() { - echo -e "\nDon't use spaces in user name!" + sqr::echo -e "\nDon't use spaces in user name!" if [ "$myUser" == "" ] ; then - read -p "Enter user name: " myUser - echo + myUser=$(ask "Enter user name: ") + sqr::echo endIfEmpty myUser "$toolName user name" fi } readUserPass() { - echo -e "\nDon't use spaces in user password!" - if [ "$myPass" == "" ] ; then - read -s -p "Enter user password: " myPass - echo - read -s -p "Enter user password again: " myPass2 - echo + local myPass2= + sqr::echo -e "\nDon't use spaces in user password!" + if [ -z "$myPass" ] ; then + myPass=$(ask -s "Enter user password: "); echo + sqr::echo + myPass2=$(ask -s "Enter user password again: "); echo + sqr::echo if [ "$myPass" != "$myPass2" ] ; then - echo "[ERROR] Passwords don't match" + error "Passwords don't match" return 1; fi + unset myPass2 endIfEmpty myPass "$toolName user password" fi } -SEQDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >>/dev/null 2>&1 && pwd )" +# shellcheck disable=SC2034 # Appears unused readonly sqr_minVersion=16 -. sequencer.sh +# shellcheck disable=SC1091 # Don't follow this source +. /usr/local/bin/sequencer.sh