#!/bin/bash -e

# Copyright (C) 2021 Inuvika Inc.
# https://www.inuvika.com
# Author David Lechevalier <d.lechevalier@inuvika.com> 2021
#
# All rights reserved

PROGRAM=$(basename $0)
OVD_SERVICE_DIR="/usr/share/ovd/client/services"
SYSTEMD_SERVICE_DIR="/usr/lib/systemd/system"

usage ()
{
	echo << EOF "\
Usage: $PROGRAM [--version|-v] [--help|-h]
Configure Inuvika Inc Open Virtual Desktop - Enterprise Desktop Client

  +/-all          Allow/Disable all premium devices
  +/-usb          Allow/Disable USB premium devices
  +/-scanner      Allow/Disable Scanner premium devices
  +/-biometric    Allow/Disable Biometric premium devices
  +/-webcam       Allow/Disable Webcam premium devices

  --help|-h       Display this help
  --version|-v    Display version informations"
EOF
}

yesno() {
	while true; do
		read -r -p "$1 [$2]: " choice
		case "$choice" in
			y|Y|yes )
				result="yes"; break ;;
			n|N|no )
				result="no"; break ;;
			"")
				result=$2; break ;;
			*)
			echo "Unsupported response, please try again" 1>&2
		esac
	done
}

default_value() {
	if [ -e "${SYSTEMD_SERVICE_DIR}/ovd-edc-$1.service" ]; then
		echo "yes"
	else
		echo "no"
	fi
}

usb="yes"
scanner="yes"
biometric="yes"
webcam="yes"
sound="yes"
INTERACTIVE_MODE=0
if [ -z "$1" ]; then
	INTERACTIVE_MODE=1
fi

while [ -n "$1" ]; do
	case $1 in
		+all)
			usb="yes"
			scanner="yes"
			biometric="yes"
			webcam="yes"
			shift;;
		-all)
			usb="no"
			scanner="no"
			biometric="no"
			webcam="no"
			shift;;

		+usb)
			usb="yes"
			shift;;
		-usb)
			usb="no"
			shift;;

		+scanner)
			scanner="yes"
			shift;;
		-scanner)
			scanner="no"
			shift;;

		+biometric)
			biometric="yes"
			shift;;
		-biometric)
			biometric="no"
			shift;;

		+webcam)
			webcam="yes"
			shift;;
		-webcam)
			webcam="no"
			shift;;

		+sound)
			sound="yes"
			shift;;
		-sound)
			sound="no"
			shift;;

		--help|-h)
			usage
			exit 0;;
		--version|-v)
			echo $PROGRAM 
			exit 0;;
		*)
			usage
			exit 1;;
	esac
	shift
done

if [ $INTERACTIVE_MODE == 1 ]; then
	yesno "Enable USB support" $(default_value "ftusb")
	usb=${result}

	yesno "Enable Scanner support" $(default_value "ftscanner")
	scanner=${result}

	yesno "Enable Webcam support" $(default_value "ftwebcam")
	webcam=${result}

	yesno "Enable Biometric support" $(default_value "ftbiometric")
	biometric=${result}

	yesno "Enable Sound support" $(default_value "ftsound")
	sound=${result}
fi

# Install fabulatech service

mkdir -p "${SYSTEMD_SERVICE_DIR}"

if [ "$usb" = "yes" ]; then
	cp -f "${OVD_SERVICE_DIR}/ovd-edc-ftusb.service" "${SYSTEMD_SERVICE_DIR}/ovd-edc-ftusb.service"
else
	rm -f "${SYSTEMD_SERVICE_DIR}/ovd-edc-ftusb.service"
fi

if [ "$scanner" = "yes" ]; then
	cp -f "${OVD_SERVICE_DIR}/ovd-edc-ftscanner.service" "${SYSTEMD_SERVICE_DIR}/ovd-edc-ftscanner.service"
else
	rm -f "${SYSTEMD_SERVICE_DIR}/ovd-edc-ftscanner.service"
fi

if [ "$webcam" = "yes" ]; then
	cp -f "${OVD_SERVICE_DIR}/ovd-edc-ftwebcam.service" "${SYSTEMD_SERVICE_DIR}/ovd-edc-ftwebcam.service"
else
	rm -f "${SYSTEMD_SERVICE_DIR}/ovd-edc-ftwebcam.service"
fi

if [ "$biometric" = "yes" ]; then
	cp -f "${OVD_SERVICE_DIR}/ovd-edc-ftbiometric.service" "${SYSTEMD_SERVICE_DIR}/ovd-edc-ftbiometric.service"
else
	rm -f "${SYSTEMD_SERVICE_DIR}/ovd-edc-ftbiometric.service"
fi

if [ "$biometric" = "yes" ]; then
	cp -f "${OVD_SERVICE_DIR}/ovd-edc-ftbiometric.service" "${SYSTEMD_SERVICE_DIR}/ovd-edc-ftbiometric.service"
else
	rm -f "${SYSTEMD_SERVICE_DIR}/ovd-edc-ftbiometric.service"
fi


# Install ovd-edc service
cp -f "${OVD_SERVICE_DIR}/ovd-edc.socket" "${SYSTEMD_SERVICE_DIR}/ovd-edc.socket"
cp -f "${OVD_SERVICE_DIR}/ovd-edc@.service" "${SYSTEMD_SERVICE_DIR}/ovd-edc@.service"

systemctl daemon-reload
systemctl enable ovd-edc.socket
systemctl start ovd-edc.socket

exit 0
