ejabberd - Add dependency for mysql and modernize code

This commit is contained in:
2023-01-04 15:07:23 +01:00
parent 3c22d5729f
commit 76bde5c63d

View File

@@ -1,22 +1,26 @@
#!/bin/bash #!/bin/bash
# shellcheck disable=SC2154 # Variable referenced but not assigned (seq_origin)
toolName=ejabberd readonly toolName=ejabberd
toolConfLoc="/etc/ejabberd/ejabberd.yml" readonly toolDeps=(ejabberd erlang-p1-mysql)
toolAdminConf="/etc/ejabberd/ejabberdctl.cfg" readonly toolConfLoc="/etc/ejabberd/ejabberd.yml"
readonly toolAdminConf="/etc/ejabberd/ejabberdctl.cfg"
# for http upload # for http upload
toolStorageLoc="/var/ejabberd" readonly toolStorageLoc="/var/ejabberd"
certRoot="/etc/letsencrypt" readonly certRoot="/etc/letsencrypt"
# needed for different steps # needed for different steps
myDomain= myDomain=
myUser= myUser=
myPass= myPass=
seq_trapExit() { unset myPass; }
step_1_info() { echo "Install $toolName via apt"; } step_1_info() { echo "Install $toolName via apt"; }
step_1_alias() { echo "install"; } step_1_alias() { echo "install"; }
step_1() { step_1() {
exe apt update exe apt update
exe apt install -y $toolName exe apt install -y "${toolDeps[@]}"
exe systemctl stop $toolName exe systemctl stop $toolName
} }
@@ -45,13 +49,13 @@ step_2() {
step_3_info() { echo "Create basic configuration"; } step_3_info() { echo "Create basic configuration"; }
step_3() { step_3() {
if [ ! -f $SEQDIR/ejabberd.yml ] ; then if [ ! -f "${seq_origin}/ejabberd.yml" ] ; then
addConf -m "$MissingConfEntry" "$toolConfLoc" addConf -m "$MissingConfEntry" "$toolConfLoc"
else else
readDomain readDomain
echo -e "\nThis user will be the admin:" echo -e "\nThis user will be the admin:"
readUser readUser
addConf -c "$(cat $SEQDIR/ejabberd.yml)" "$toolConfLoc" addConf -cf "${seq_origin}/ejabberd.yml" "$toolConfLoc"
# modify configuration # modify configuration
exe sed -i "s/mydomain\.eu/${myDomain}/" "$toolConfLoc" exe sed -i "s/mydomain\.eu/${myDomain}/" "$toolConfLoc"
exe sed -i "s/myuser/${myUser}/" "$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" 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. Backup $toolConfLoc and create a configuration manually.
Some essential settings needed: Some essential settings needed:
@@ -83,14 +87,14 @@ step_5() {
readDomain readDomain
readUser readUser
readUserPass readUserPass
exe ejabberdctl register $myUser $myDomain $myPass exe ejabberdctl register "${myUser}" "${myDomain}" "${myPass}"
} }
step_10_info() { echo "List existing user"; } step_10_info() { echo "List existing user"; }
step_10_alias() { echo "listuser"; } step_10_alias() { echo "listuser"; }
step_10() { step_10() {
readDomain readDomain
exe ejabberdctl registered_users $myDomain exe ejabberdctl registered_users "${myDomain}"
} }
step_12_info() { echo "Change password for existing user"; } step_12_info() { echo "Change password for existing user"; }
@@ -99,7 +103,7 @@ step_12() {
readDomain readDomain
readUser readUser
readUserPass readUserPass
exe ejabberdctl change_password $myUser $myDomain $myPass exe ejabberdctl change_password "${myUser}" "${myDomain}" "${myPass}"
} }
step_14_info() { echo "Remove registered user"; } step_14_info() { echo "Remove registered user"; }
@@ -108,40 +112,43 @@ step_14() {
readDomain readDomain
readUser readUser
readUserPass readUserPass
exe ejabberdctl unregister $myUser $myDomain $myPass exe ejabberdctl unregister "${myUser}" "${myDomain}" "${myPass}"
} }
readDomain() { readDomain() {
if [ "$myDomain" == "" ] ; then if [ "$myDomain" == "" ] ; then
read -p "Enter your domain: " myDomain myDomain=$(ask "Enter your domain: ")
endIfEmpty myDomain "$toolName domain" endIfEmpty myDomain "$toolName domain"
fi fi
} }
readUser() { readUser() {
echo -e "\nDon't use spaces in user name!" sqr::echo -e "\nDon't use spaces in user name!"
if [ "$myUser" == "" ] ; then if [ "$myUser" == "" ] ; then
read -p "Enter user name: " myUser myUser=$(ask "Enter user name: ")
echo sqr::echo
endIfEmpty myUser "$toolName user name" endIfEmpty myUser "$toolName user name"
fi fi
} }
readUserPass() { readUserPass() {
echo -e "\nDon't use spaces in user password!" local myPass2=
if [ "$myPass" == "" ] ; then sqr::echo -e "\nDon't use spaces in user password!"
read -s -p "Enter user password: " myPass if [ -z "$myPass" ] ; then
echo myPass=$(ask -s "Enter user password: "); echo
read -s -p "Enter user password again: " myPass2 sqr::echo
echo myPass2=$(ask -s "Enter user password again: "); echo
sqr::echo
if [ "$myPass" != "$myPass2" ] ; then if [ "$myPass" != "$myPass2" ] ; then
echo "[ERROR] Passwords don't match" error "Passwords don't match"
return 1; return 1;
fi fi
unset myPass2
endIfEmpty myPass "$toolName user password" endIfEmpty myPass "$toolName user password"
fi fi
} }
SEQDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >>/dev/null 2>&1 && pwd )" # shellcheck disable=SC2034 # Appears unused
readonly sqr_minVersion=16 readonly sqr_minVersion=16
. sequencer.sh # shellcheck disable=SC1091 # Don't follow this source
. /usr/local/bin/sequencer.sh