#!/bin/bash

# TeamSpeak 3 Client Installer is a script which can download
# an installation package of the TeamSpeak 3 and run the installer
# Created by Paweł "pavroo" Pijanowski 2017/01/19
# Copyright 2017-2024 under the GNU GPL2 License
# Last update 2024/08/25

DEFLOCDIR="/usr/share/sparky/teamspeak-installer"
if [ "`cat /etc/default/locale | grep LANG= | grep de`" != "" ]; then
. $DEFLOCDIR/de
elif [ "`cat /etc/default/locale | grep LANG= | grep el`" != "" ]; then
. $DEFLOCDIR/el
elif [ "`cat /etc/default/locale | grep LANG= | grep es`" != "" ]; then
	if [ "`cat /etc/default/locale | grep LANG= | grep es_AR`" != "" ]; then
. $DEFLOCDIR/es_AR
	else
. $DEFLOCDIR/es_ES
	fi
elif [ "`cat /etc/default/locale | grep LANG= | grep fi`" != "" ]; then
. $DEFLOCDIR/fi
elif [ "`cat /etc/default/locale | grep LANG= | grep fr`" != "" ]; then
. $DEFLOCDIR/fr
elif [ "`cat /etc/default/locale | grep LANG= | grep hu`" != "" ]; then
. $DEFLOCDIR/hu
elif [ "`cat /etc/default/locale | grep LANG= | grep id_ID`" != "" ]; then
. $DEFLOCDIR/id_ID
elif [ "`cat /etc/default/locale | grep LANG= | grep it`" != "" ]; then
. $DEFLOCDIR/it
elif [ "`cat /etc/default/locale | grep LANG= | grep ja_JP`" != "" ]; then
. $DEFLOCDIR/ja
elif [ "`cat /etc/default/locale | grep LANG= | grep pl`" != "" ]; then
. $DEFLOCDIR/pl
elif [ "`cat /etc/default/locale | grep LANG= | grep pt_BR`" != "" ]; then
. $DEFLOCDIR/pt_BR
elif [ "`cat /etc/default/locale | grep LANG= | grep pt_PT`" != "" ]; then
. $DEFLOCDIR/pt_PT
elif [ "`cat /etc/default/locale | grep LANG= | grep ru`" != "" ]; then
. $DEFLOCDIR/ru
elif [ "`cat /etc/default/locale | grep LANG= | grep uk`" != "" ]; then
. $DEFLOCDIR/uk
else
. $DEFLOCDIR/en
fi

testroot="`whoami`"
if [ "$testroot" != "root" ]; then
	echo "must be root... exiting..."
	exit 1
fi

DIALOG="yad --window-icon=teamspeak --width=450 --height=200 --center"
DIALOG2="yad --window-icon=teamspeak --width=450 --height=300 --center"
TITLE="--always-print-result --dialog-sep --image=teamspeak --title="
TEXT="--text="
OKEXIT=" --button=Ok:0 --button=$LOCAL1:1 "
MSGBOX=" --button=Ok:0 "
MENU="--list --column=$LOCAL2 --column=$LOCAL3"
TITLETEXT="$LOCAL4"
WORKDIR="/tmp/teamspeak"
ARCH=`uname -r | grep "amd64" | awk '{print $1}'`
if [ -f /usr/bin/sparky-xterm ]; then
	SPARKYXTERM="/usr/bin/sparky-xterm"
else
	echo "sparky-xterm is missing... Exiting..."
	exit 1
fi
SERVER32="http://files.teamspeak-services.com/releases/client/3.5.6"
SERVER64="http://files.teamspeak-services.com/releases/client/3.6.2"
PACK32="TeamSpeak3-Client-linux_x86-3.5.6.run"
PACK64="TeamSpeak3-Client-linux_amd64-3.6.2.run"
ARCHARM="`uname -m | grep arm`"

if [ "$ARCHARM" != "" ]; then
	$DIALOG $TEXT"\n$LOCAL24\n\n$LOCAL11" $TITLE"$TITLETEXT" $MSGBOX
	exit 1
fi

mainmenu () {
CHOICES=`$DIALOG2 $TITLE"$TITLETEXT" $OKEXIT $MENU $TEXT"$LOCAL5" \
Install "$LOCAL6" \
Upgrade "$LOCAL7" \
Remove "$LOCAL8" \
Exit "$LOCAL9"`

if [ "$?" = "0" ]; then
	CHOICE=`echo $CHOICES | cut -d "|" -f 1`
else
	exit 1
fi

if [ "$CHOICE" = "Install" ]; then
	installmenu
elif [ "$CHOICE" = "Upgrade" ]; then
	upgrademenu
elif [ "$CHOICE" = "Remove" ]; then
	remmenu
elif [ "$CHOICE" = "Exit" ]; then
	exit 0
else
	exit 0
fi
}

installmenu () {
# check is teamspeak installed
if [ -f /usr/bin/teamspeak3 ]; then
	$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL10\n\n$LOCAL11"
	exit 1

else
	# checking connection
	PINGTEST=$(ping -c 1 debian.org | grep [0-9])

	if [ "$PINGTEST" = "" ]; then
		$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL19"
		exit 1
	fi

	# download a new version of teamspeak
	rm -rf $WORKDIR
	mkdir -p $WORKDIR
	cd $WORKDIR

	if [ "$ARCH" = "" ]; then
		$SPARKYXTERM "wget $SERVER32/$PACK32"
	else
		$SPARKYXTERM "wget $SERVER64/$PACK64"
	fi

	# install teamspeak
	PACKTEST=`ls $WORKDIR | grep 'TeamSpeak' | awk '{print $1}'`

	if [ -f $WORKDIR/*.run ]; then
		cd $WORKDIR
		chmod +x *.run
		$SPARKYXTERM "sh $PACKTEST"
	fi
	
	if [ "$ARCH" = "" ]; then
		if [ -d $WORKDIR/TeamSpeak3-Client-linux_x86 ]; then
			mv TeamSpeak3-Client-linux_x86 /opt/teamspeak
			if [ -f /opt/teamspeak/TeamSpeak3-Client-linux_x86/ts3client_runscript.sh ]; then
				#ln -s /opt/teamspeak/TeamSpeak3-Client-linux_x86/ts3client_runscript.sh /usr/bin/teamspeak3
cat > /usr/bin/teamspeak3 <<FOO
#!/bin/sh
export OPENSSL_CONF=~/bin/etc/openssl.cnf
cd /opt/teamspeak/TeamSpeak3-Client-linux_x86
./ts3client_runscript.sh

FOO
chmod +x /usr/bin/teamspeak3
chmod 755 /opt/teamspeak/TeamSpeak3-Client-linux_x86
			fi
		fi
	else
		if [ -d $WORKDIR/TeamSpeak3-Client-linux_amd64 ]; then
			mv TeamSpeak3-Client-linux_amd64 /opt/teamspeak
			if [ -f /opt/teamspeak/TeamSpeak3-Client-linux_amd64/ts3client_runscript.sh ]; then
				#ln -s /opt/teamspeak/TeamSpeak3-Client-linux_amd64/ts3client_runscript.sh /usr/bin/teamspeak3
cat > /usr/bin/teamspeak3 <<FOO
#!/bin/sh
export OPENSSL_CONF=~/bin/etc/openssl.cnf
cd /opt/teamspeak/TeamSpeak3-Client-linux_amd64
./ts3client_runscript.sh

FOO
chmod +x /usr/bin/teamspeak3
chmod 755 /opt/teamspeak/TeamSpeak3-Client-linux_amd64
			fi
		fi
	fi

	if [ -f /usr/bin/teamspeak3 ]; then
		cp /usr/share/sparky/teamspeak.desktop /usr/share/applications/teamspeak.desktop
		update-menus
	fi
			
fi

# check has teamspaek been installed
if [ -f /usr/bin/teamspeak3 ]; then
	$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL12\n\n$LOCAL11"
	exit 0

else
	$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL13\n\n$LOCAL11"
	mainmenu
fi

mainmenu
}

upgrademenu () {
# check is teamspeak installed
if [ -f /usr/bin/teamspeak3 ]; then
	$DIALOG $TITLE"$TITLETEXT" $OKEXIT $TEXT"$LOCAL14"

	if [ "$?" != "0" ]; then
		$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL15"
		exit 1

	else

		# checking connection
		PINGTEST=$(ping -c 1 debian.org | grep [0-9])

		if [ "$PINGTEST" = "" ]; then
			$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL19"
			exit 1
		fi

		# download a new version of teamspeak
		rm -rf $WORKDIR
		mkdir -p $WORKDIR
		cd $WORKDIR

		if [ "$ARCH" = "" ]; then
			$SPARKYXTERM "wget $SERVER32/$PACK32"
		else
			$SPARKYXTERM "wget $SERVER64/$PACK64"
		fi

		PACKTEST=`ls $WORKDIR | grep 'run' | awk '{print $1}'`

		if [ -f $WORKDIR/*.run ]; then

			# remove teamspeak files
			if [ -d /opt/teamspeak/TeamSpeak3-Client-linux_x86 ]; then
				rm -rf /opt/teamspeak/TeamSpeak3-Client-linux_x86
			elif [ -d /opt/teamspeak/TeamSpeak3-Client-linux_amd64 ]; then
				rm -rf /opt/teamspeak/TeamSpeak3-Client-linux_amd64
			fi
			if [ -f /usr/share/applications/teamspeak.desktop ]; then
				rm -f /usr/share/applications/teamspeak.desktop
			fi
			rm -f /usr/bin/teamspeak3
			update-menus

		else
			$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL16\n\n$LOCAL11"
			mainmenu
		fi
	fi

	# check has teamspeak been removed
	if [ -f /usr/bin/teamspeak3 ]; then
		$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL17\n\n$LOCAL11"
		mainmenu

	else
		# install a new version of teamspeak
		$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL18"

		PACKTEST=`ls $WORKDIR | grep 'run' | awk '{print $1}'`
		cd $WORKDIR
		chmod +x *.run
		$SPARKYXTERM "sh $PACKTEST"
			
		if [ "$ARCH" = "" ]; then
			if [ -d $WORKDIR/TeamSpeak3-Client-linux_x86 ]; then
				mv TeamSpeak3-Client-linux_x86 /opt/teamspeak
				if [ -f /opt/teamspeak/TeamSpeak3-Client-linux_x86/ts3client_runscript.sh ]; then
					#ln -s /opt/teamspeak/TeamSpeak3-Client-linux_x86/ts3client_runscript.sh /usr/bin/teamspeak3
cat > /usr/bin/teamspeak3 <<FOO
#!/bin/sh
export OPENSSL_CONF=~/bin/etc/openssl.cnf
cd /opt/teamspeak/TeamSpeak3-Client-linux_x86
./ts3client_runscript.sh

FOO
chmod +x /usr/bin/teamspeak3
chmod 755 /opt/teamspeak/TeamSpeak3-Client-linux_x86
				fi
			fi
		else
			if [ -d $WORKDIR/TeamSpeak3-Client-linux_amd64 ]; then
				mv TeamSpeak3-Client-linux_amd64 /opt/teamspeak
				if [ -f /opt/teamspeak/TeamSpeak3-Client-linux_amd64/ts3client_runscript.sh ]; then
					#ln -s /opt/teamspeak/TeamSpeak3-Client-linux_amd64/ts3client_runscript.sh /usr/bin/teamspeak3
cat > /usr/bin/teamspeak3 <<FOO
#!/bin/sh
export OPENSSL_CONF=~/bin/etc/openssl.cnf
cd /opt/teamspeak/TeamSpeak3-Client-linux_amd64
./ts3client_runscript.sh

FOO
chmod +x /usr/bin/teamspeak3
chmod 755 /opt/teamspeak/TeamSpeak3-Client-linux_amd64
				fi
			fi
		fi

		if [ -f /usr/bin/teamspeak3 ]; then
			cp /usr/share/sparky/teamspeak.desktop /usr/share/applications/teamspeak.desktop
			update-menus
		fi
	fi

	# check has teamspeak been installed
	if [ -f /usr/bin/teamspeak3 ]; then
		$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL12\n\n$LOCAL11"
		exit 0
	else
		$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL13\n\n$LOCAL11"
		mainmenu
	fi

else
	$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL20\n\n$LOCAL11"
	mainmenu
fi

mainmenu
}

remmenu () {
# check is teamspeak installed
if [ -f /usr/bin/teamspeak3 ]; then
	$DIALOG $TITLE"$TITLETEXT" $OKEXIT $TEXT"$LOCAL21"

	if [ "$?" != "0" ]; then
		$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL15"
		exit 1

	else
		# remove teamspeak files
		if [ -d /opt/teamspeak/TeamSpeak3-Client-linux_x86 ]; then
			rm -rf /opt/teamspeak/TeamSpeak3-Client-linux_x86
		elif [ -d /opt/teamspeak/TeamSpeak3-Client-linux_amd64 ]; then
			rm -rf /opt/teamspeak/TeamSpeak3-Client-linux_amd64
		fi
		if [ -f /usr/share/applications/teamspeak.desktop ]; then
			rm -f /usr/share/applications/teamspeak.desktop
		fi
		rm -f /usr/bin/teamspeak3
		update-menus
	fi

	# check has teamspeak been removed
	if [ -f /usr/bin/teamspeak3 ]; then
		$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL22\n\n$LOCAL11"
		mainmenu
	fi

else
	$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL23\n\n$LOCAL11"
	mainmenu
fi

mainmenu
}

mainmenu
