#!/bin/bash

set -e
NAME="Mystic BBS"
VERSION="A43"
INIT=mis

function stop {
        echo "Stopping ${NAME}"
	kill $(ps -Af|grep ${INIT} |grep -v grep|awk '{ print $2}')
}

trap 'stop' SIGTERM
export PATH=$PATH:/mystic

if [ "$1" == "start" ]; then
	# First time install - expand out our data directory
	if [ $(find data|wc -l) -le 1 ]; then
		echo "** First time install, deploying sample setup"
		tar xzf data.tar.gz
		echo ${VERSION} > .version

	# We need to upgrade
	else
		OLD_VERSION=$(cat data/.version)
		echo "** Upgrading [${OLD_VERSION}]"
		case ${OLD_VERSION} in
			A39)
				echo "Processing data/default.txt"
				set -x
				[ ! -d data/upgrade/${VERSION}/${OLD_VERSION} ] && mkdir -p data/upgrade/${VERSION}/${OLD_VERSION}
				cd data/upgrade/${VERSION}/${OLD_VERSION}
				[ -d data ] && rm -rf data
				tar xzf /mystic/data.tar.gz
				cd /mystic/data
				diff -u data/default.txt upgrade/${VERSION}/${OLD_VERSION}/data/data/default.txt > upgrade/${VERSION}/${OLD_VERSION}/default.txt.patch && echo $?
				if [ -s upgrade/${VERSION}/${OLD_VERSION}/default.txt.patch ]; then
					patch -p 0 < upgrade/${VERSION}/${OLD_VERSION}/default.txt.patch
					echo "! Check upgrade/${VERSION}/${OLD_VERSION}/default.txt.patch for an strings that may have been overwritten..."
				else
					rm -f upgrade/${VERSION}/${OLD_VERSION}/default.txt.patch
				fi

				for i in msg_index.ini msg_index.ans msg_index_help.ans; do
					cp upgrade/${VERSION}/${OLD_VERSION}/data/text/$i text/
				done

				cp upgrade/${VERSION}/${OLD_VERSION}/data/data/cfgroot4.ans data/
				../upgrade
				cd ../scripts
				./mplc -all
				cd ../data
				rm -rf upgrade/${VERSION}/${OLD_VERSION}/data
				echo A42 > .version
			;;

			A42)
				set -x
				[ ! -d data/upgrade/${VERSION}/${OLD_VERSION} ] && mkdir -p data/upgrade/${VERSION}/${OLD_VERSION}
				cd data/upgrade/${VERSION}/${OLD_VERSION}
				[ -d data ] && rm -rf data
				tar xzf /mystic/data.tar.gz
				cd /mystic/data

				for i in text/userchat.ans text/userchat.ini; do
					cp upgrade/${VERSION}/${OLD_VERSION}/data/$i ./$i
				done

				diff -ur text/ upgrade/${VERSION}/${OLD_VERSION}/data/text/ > upgrade/${VERSION}/${OLD_VERSION}/text.patch || true

				rm -rf upgrade/${VERSION}/${OLD_VERSION}/data
				echo A43 > .version
			;;

			A43) echo "Already up to date!" ;;

			*) echo "!! Dont know how to upgrade" && exit 1
		esac
	fi

	if [ -x /usr/sbin/zerotier-one -a -n "${ENABLE_ZT}" ]; then
	        echo "** Starting ZeroTier"
	        mkdir /dev/net && mknod /dev/net/tun -m 666 c 10 200
	        /usr/sbin/zerotier-one -d
	fi

	# OK, start
	exec ${INIT} server

else
	exec $@
fi