#!/bin/sh

# Common vars

UNILOADER_VERSION="$( wget --no-check-certificate -O - -o /dev/null http://downloads.loway.ch/software/uniloader/ | grep "\.tar.gz" | sed 's/<[^>]*>//g' | awk '{print $1}' | sort -n | tail -1 | sed "s:uniloader-::" | sed "s:\.tar\.gz::" )"
UNILOADER_URL="http://downloads.loway.ch/software/uniloader/uniloader-${UNILOADER_VERSION}.tar.gz"
UNILOADER_PATH="uniloader-${UNILOADER_VERSION}"
CERTIFICATE="ISRG_Root_X1.pem"

####
#### COMMON FUNCTIONS
####

# Requesting user data, if needed
request_user_data () {
	if [ ! -z "$QMLIVE_ID" -a ! -z "$PASSWORD" ]; then
		echo
		echo "QM-Live ID: $QMLIVE_ID - Password: $PASSWORD"
	else
		# Collect user data 
		echo
		echo "Hi, this script will install for you Uniloader, the QueueMetrics-Live data-loader."
		echo "Just answer to a couple of questions!"

		USERCONFIRM=n
		while [ ! $USERCONFIRM == 'y' ]
		do
			echo ""
			echo "What is your QueueMetrics-Live ID? "
			read QMLIVE_ID
			echo "What is your password? "
			read PASSWORD
			echo ""
			echo "QM-Live ID: $QMLIVE_ID - Password: $PASSWORD"
			echo "Do you confirm? (y/n)"
			read USERCONFIRM
		done
	fi
}



# Download and deploy Uniloader
download_uniloader () {
	cd $DOWNLOAD_PATH

	if [ -z "$WGET_LOGFILE" ]; then
		wget --no-check-certificate $UNILOADER_URL -O uniloader.tar.gz
	else
		touch $WGET_LOGFILE
		wget --no-check-certificate $UNILOADER_URL -O uniloader.tar.gz -o $WGET_LOGFILE
	fi


	if [ -f uniloader.tar.gz ]; then
		tar xzf uniloader.tar.gz
		rm -f uniloader.tar.gz
		mv $UNILOADER_PATH uniloader
		wget --no-check-certificate http://get.queuemetrics-live.com/$CERTIFICATE -O uniloader/$CERTIFICATE
		chmod 644 uniloader/$CERTIFICATE
		cp uniloader/bin/$BIN_FILE uniloader/uniloaderd
	else
		echo "Problem downloading the file, retry later." >&2
		exit 1
	fi
}



# Include dialplan in Asterisk and enable queue_log logging
configure_asterisk () {
	cd $CUSTOMCFG_PATH

	touch $EXTENSIONS_FILE
	touch $LOGGER_FILE

	wget --no-check-certificate $EXTENSIONS_QUEUEMETRICS -O - >> $EXTENSIONS_FILE

	if grep -q "^\[general\]" "$LOGGER_FILE"
	then
		sed -i 's/queue_log.*//' $LOGGER_FILE
		sed -i 's/\[general\]/\[general\]\nqueue_log = yes/' $LOGGER_FILE
	else
		echo "[general]" >> $LOGGER_FILE
		echo "queue_log = yes" >> $LOGGER_FILE
	fi
}



# Configuring MyPBX startup script
configure_mypbx () {
	cd $BASEPATH

	if [ ! -f add.sh ]; then
		echo "#!/bin/sh" > add.sh
	fi

	echo "$UNILOADER_STARTUP_COMMAND" >> add.sh
	chmod a+x add.sh
}



####
#### SYSTEM RECOGNISING, PREPARING THE ENVIRONMENT...
####



# Parsing parameters
while getopts ":u:p:g" opt; do
	case "$opt" in
		u) 
			QMLIVE_ID=$OPTARG ;;
		p) 
			PASSWORD=$OPTARG ;;
		g)
			GUI=1 ;;
	esac
done


if [ ! -z "$GUI" ]; then
	if [ -z "$QMLIVE_ID" -o -z "$PASSWORD" ]; then
		echo "Parameters -u and -p are mandatory in GUI mode" >&2
		exit 1
	fi

    MACHINE_TYPE=`uname -m`
    if [ ${MACHINE_TYPE} == 'x86_64' ]; then
      # YEASTAR CLOUD - GUI integration
      BASEPATH=/ysdisk/support
      DOWNLOAD_PATH=$BASEPATH/tmp
      CUSTOMCFG_PATH=$BASEPATH/customcfg
      EXTENSIONS_FILE=$CUSTOMCFG_PATH/extensions_custom.conf
      LOGGER_FILE=$CUSTOMCFG_PATH/logger_custom.conf
      BIN_FILE=uniloader_amd64
      QUEUE_LOG_FILE=/ysdisk/syslog/queue_log
      EXTENSIONS_QUEUEMETRICS=http://get.queuemetrics-live.com/extensions_queuemetrics.conf.yeastarS
      WGET_LOGFILE=$DOWNLOAD_PATH/uniloaderprocess.txt
    else
      # Normal arm7 YEASTAR S - GUI integration
      BASEPATH=/ysdisk/support
      DOWNLOAD_PATH=$BASEPATH/tmp
      CUSTOMCFG_PATH=$BASEPATH/customcfg
      EXTENSIONS_FILE=$CUSTOMCFG_PATH/extensions_custom.conf
      LOGGER_FILE=$CUSTOMCFG_PATH/logger_custom.conf
      BIN_FILE=uniloader_arm7
      QUEUE_LOG_FILE=/ysdisk/syslog/queue_log
      EXTENSIONS_QUEUEMETRICS=http://get.queuemetrics-live.com/extensions_queuemetrics.conf.yeastarS
      WGET_LOGFILE=$DOWNLOAD_PATH/uniloaderprocess.txt
    fi
elif [ -f "/home/osver" ]; then
	request_user_data

	# YEASTAR U and N - Manual script
	BASEPATH=/persistent
	DOWNLOAD_PATH=$BASEPATH
	CUSTOMCFG_PATH=$BASEPATH/custom-cfg
	EXTENSIONS_FILE=$CUSTOMCFG_PATH/extensions_custom.conf
	LOGGER_FILE=$CUSTOMCFG_PATH/logger_custom.conf
	BIN_FILE=uniloader_arm7
	QUEUE_LOG_FILE=/var/log/yslog/queue_log
	EXTENSIONS_QUEUEMETRICS=http://get.queuemetrics-live.com/extensions_queuemetrics.conf.yeastarUN
	UNILOADER_STARTUP_COMMAND="nohup nice $DOWNLOAD_PATH/uniloader/uniloaderd --src=$QUEUE_LOG_FILE --cacert /ysdisk/support/tmp/uniloader/$CERTIFICATE upload --uri https://my.queuemetrics-live.com/$QMLIVE_ID --login webqloader --pass $PASSWORD &"

	# Create symlink for Yeastar N PBXs
	ln -s /etc/asterisk/queue_log $QUEUE_LOG_FILE
elif [ -f "/etc/version" ]; then
	request_user_data

	MACHINE_TYPE=`uname -m`
    if [ ${MACHINE_TYPE} == 'x86_64' ]; then
		# YEASTAR CLOUD - Manual script
        BASEPATH=/ysdisk/support
        DOWNLOAD_PATH=$BASEPATH/tmp
        CUSTOMCFG_PATH=$BASEPATH/customcfg
        EXTENSIONS_FILE=$CUSTOMCFG_PATH/extensions_support.conf
        LOGGER_FILE=$CUSTOMCFG_PATH/logger_custom.conf
        BIN_FILE=uniloader_amd64
        QUEUE_LOG_FILE=/ysdisk/syslog/queue_log
        EXTENSIONS_QUEUEMETRICS=http://get.queuemetrics-live.com/extensions_queuemetrics.conf.yeastarS
		UNILOADER_STARTUP_COMMAND="nohup nice $DOWNLOAD_PATH/uniloader/uniloaderd --src=$QUEUE_LOG_FILE --cacert /ysdisk/support/tmp/uniloader/$CERTIFICATE upload --uri https://my.queuemetrics-live.com/$QMLIVE_ID --login webqloader --pass $PASSWORD > $DOWNLOAD_PATH/uniloader.log &"
	else
		# YEASTAR S - Manual script
        BASEPATH=/ysdisk/support
        DOWNLOAD_PATH=$BASEPATH/tmp
        CUSTOMCFG_PATH=$BASEPATH/customcfg
        EXTENSIONS_FILE=$CUSTOMCFG_PATH/extensions_support.conf
        LOGGER_FILE=$CUSTOMCFG_PATH/logger_custom.conf
        BIN_FILE=uniloader_arm7
        QUEUE_LOG_FILE=/ysdisk/syslog/queue_log
        EXTENSIONS_QUEUEMETRICS=http://get.queuemetrics-live.com/extensions_queuemetrics.conf.yeastarS
		UNILOADER_STARTUP_COMMAND="nohup nice $DOWNLOAD_PATH/uniloader/uniloaderd --src=$QUEUE_LOG_FILE --cacert /ysdisk/support/tmp/uniloader/$CERTIFICATE upload --uri https://my.queuemetrics-live.com/$QMLIVE_ID --login webqloader --pass $PASSWORD > $DOWNLOAD_PATH/uniloader.log &"
	fi
else
	echo "Your system was not recognised. Goodbye!" >&2
	exit 1
fi



####
#### THE ACTUAL INSTALLATION
####



if [ ! -z "$GUI" ]; then
	download_uniloader
	configure_asterisk
else
	echo "Downloading Uniloader..."
	download_uniloader

	echo "Configuring Asterisk..."
	configure_asterisk

	echo "Configuring MyPBX..."
	configure_mypbx

	echo "Configuration complete! Restart MyPBX in order to make the changes effective!"
fi
