#!/bin/bash

LOCK_FILE=/etc/eole/upgrade_ejabberd.lock

if [ ! -f $LOCK_FILE ]; then
    exit 0
fi
# migrate ejabber@scribe to ejabberd@localhot in mnesia database

set -e

DIR=/tmp/ejabberd_tmp
OLDFILE=$DIR/old
NEWFILE=$DIR/new
OLDNODE=ejabberd@$(hostname)
NEWNODE=ejabberd@localhost
mkdir -p $DIR
chown ejabberd $DIR
systemctl stop ejabberd.service
ejabberdctl --node $OLDNODE start

# wait for ejabberd completely started
sleep 1
until su - ejabberd -c "ejabberdctl --node $OLDNODE status" 2>&1 > /dev/null; do
    sleep 1
    i=$((i+1))
    if [ $i = 60 ]; then
        # timeout, display error a exit
        su - ejabberd -c "ejabberdctl --node $OLDNODE status"
        exit 1
    fi
done
su - ejabberd -c "ejabberdctl --node $OLDNODE backup $OLDFILE"

ejabberdctl --node $OLDNODE stop
while su - ejabberd -c "ejabberdctl --node $OLDNODE status" 2>&1 > /dev/null; do
    sleep 1
    i=$((i+1))
    if [ $i = 60 ]; then
        # timeout, display error a exit
        su - ejabberd -c "ejabberdctl --node $OLDNODE status"
        exit 1
    fi
done
killall --user ejabberd

mkdir /var/lib/ejabberd/oldfiles
mv /var/lib/ejabberd/*.* /var/lib/ejabberd/oldfiles/
systemctl start ejabberd.service

# wait for ejabberd completely started
sleep 1
until su - ejabberd -c "ejabberdctl status" 2>&1 > /dev/null; do
    sleep 1
    i=$((i+1))
    if [ $i = 60 ]; then
        # timeout, display error a exit
        su - ejabberd -c "ejabberdctl status"
        exit 1
    fi
done

ejabberdctl mnesia_change_nodename $OLDNODE $NEWNODE $OLDFILE $NEWFILE
ejabberdctl install_fallback $NEWFILE

systemctl stop ejabberd.service

rm -rf $LOCK_FILE /var/lib/ejabberd/oldfiles /tmp/ejabberd_tmp
exit 0
