148 lines
3.6 KiB
Bash
Executable File
148 lines
3.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
toolName=ejabberd
|
|
toolConfLoc="/etc/ejabberd/ejabberd.yml"
|
|
toolAdminConf="/etc/ejabberd/ejabberdctl.cfg"
|
|
# for http upload
|
|
toolStorageLoc="/var/ejabberd"
|
|
certRoot="/etc/letsencrypt"
|
|
|
|
# needed for different steps
|
|
myDomain=
|
|
myUser=
|
|
myPass=
|
|
|
|
step_1_info() { echo "Install $toolName via apt"; }
|
|
step_1_alias() { ALIAS="install"; }
|
|
step_1() {
|
|
exe apt update
|
|
exe apt install -y $toolName
|
|
exe systemctl stop $toolName
|
|
}
|
|
|
|
step_2_info() { echo "Use certificate from local letsencrypt"; }
|
|
step_2() {
|
|
readDomain
|
|
|
|
local certLoc="${certRoot}/live/${myDomain}/full.pem"
|
|
if [ ! -f "$certLoc" ] ; then
|
|
echo "[ERROR] $certLoc not found"
|
|
return 1;
|
|
fi
|
|
|
|
local toolCertLoc="/etc/ejabberd/ejabberd.pem"
|
|
if [ -f "${toolCertLoc}.bck" ] ; then
|
|
echo "[ERROR] Cannot backup original $toolName certificate"
|
|
return 1;
|
|
fi
|
|
|
|
exe mv "$toolCertLoc" "${toolCertLoc}.bck"
|
|
exe ln -s "$certLoc" "$toolCertLoc"
|
|
# read access for ejabberd to read certificate
|
|
exe chown root:ejabberd "$certRoot"
|
|
exe chmod 750 "$certRoot"
|
|
}
|
|
|
|
step_3_info() { echo "Create basic configuration"; }
|
|
step_3() {
|
|
if [ ! -f $SEQDIR/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"
|
|
# modify configuration
|
|
exe sed -i "s/mydomain\.eu/${myDomain}/" "$toolConfLoc"
|
|
exe sed -i "s/myuser/${myUser}/" "$toolConfLoc"
|
|
# create storage for http upload
|
|
exe mkdir -p "$toolStorageLoc"
|
|
exe chown root:$toolName "$toolStorageLoc"
|
|
exe chmod 770 "$toolStorageLoc"
|
|
fi
|
|
# Erlang-VM to listen only on local interface
|
|
exe sed -i "s/#\(INET_DIST_INTERFACE=127\.0\.0\.1\)/\1/" "$toolAdminConf"
|
|
}
|
|
|
|
MissingConfEntry="Seq's basic configuration file \"$SEQDIR/ejabberd.yml\" missing.
|
|
Backup $toolConfLoc and create a configuration manually.
|
|
|
|
Some essential settings needed:
|
|
- Domain
|
|
- Admin User"
|
|
|
|
step_4_info() { echo "Restart $toolName"; }
|
|
step_4_alias() { ALIAS="restart"; }
|
|
step_4() {
|
|
exe service ejabberd restart
|
|
}
|
|
|
|
step_5_info() { echo "Create new user"; }
|
|
step_5_alias() { ALIAS="adduser"; }
|
|
step_5() {
|
|
readDomain
|
|
readUser
|
|
readUserPass
|
|
exe ejabberdctl register $myUser $myDomain $myPass
|
|
}
|
|
|
|
step_10_info() { echo "List existing user"; }
|
|
step_10_alias() { ALIAS="listuser"; }
|
|
step_10() {
|
|
readDomain
|
|
exe ejabberdctl registered_users $myDomain
|
|
}
|
|
|
|
step_12_info() { echo "Change password for existing user"; }
|
|
step_12_alias() { ALIAS="passwd"; }
|
|
step_12() {
|
|
readDomain
|
|
readUser
|
|
readUserPass
|
|
exe ejabberdctl change_password $myUser $myDomain $myPass
|
|
}
|
|
|
|
step_14_info() { echo "Remove registered user"; }
|
|
step_14_alias() { ALIAS="deluser"; }
|
|
step_14() {
|
|
readDomain
|
|
readUser
|
|
readUserPass
|
|
exe ejabberdctl unregister $myUser $myDomain $myPass
|
|
}
|
|
|
|
readDomain() {
|
|
if [ "$myDomain" == "" ] ; then
|
|
read -p "Enter your domain: " myDomain
|
|
endCheckEmpty myDomain "$toolName domain"
|
|
fi
|
|
}
|
|
|
|
readUser() {
|
|
echo -e "\nDon't use spaces in user name!"
|
|
if [ "$myUser" == "" ] ; then
|
|
read -p "Enter user name: " myUser
|
|
echo
|
|
endCheckEmpty 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
|
|
if [ "$myPass" != "$myPass2" ] ; then
|
|
echo "[ERROR] Passwords don't match"
|
|
return 1;
|
|
fi
|
|
endCheckEmpty myPass "$toolName user password"
|
|
fi
|
|
}
|
|
|
|
SEQDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >>/dev/null 2>&1 && pwd )"
|
|
VERSION_SEQREV=4
|
|
. sequencer.sh
|